Browse Source

feat:报表

master
“wangzihua” 3 months ago
parent
commit
aae4578429
  1. 18
      .gitignore
  2. 2
      yun-admin/src/main/java/net/lab1024/sa/admin/module/business/category/controller/CategoryController.java
  3. 2
      yun-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/controller/GoodsController.java
  4. 10
      yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/controller/FirmReportsController.java
  5. 4
      yun-admin/src/main/java/net/lab1024/sa/admin/module/penalty/controller/PenaltyApplyController.java
  6. 48
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/controller/ServiceApplicationsController.java
  7. 33
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/dao/ServiceApplicationsDao.java
  8. 2
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/entity/ServiceApplicationsEntity.java
  9. 3
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/LawyerStatisticsQueryForm.java
  10. 4
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsAddForm.java
  11. 15
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsQueryForm.java
  12. 3
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsUpdateForm.java
  13. 38
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceDepartmentImportForm.java
  14. 14
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceLawyerImportForm.java
  15. 4
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceLawyerQueryForm.java
  16. 6
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/LawyerStatisticsVO.java
  17. 5
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/ServiceApplicationsVO.java
  18. 195
      yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java
  19. 4
      yun-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeViewTypeEnum.java
  20. 12
      yun-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java
  21. 1
      yun-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginResultVO.java
  22. 11
      yun-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java
  23. 1
      yun-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java
  24. 2
      yun-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleEmployeeService.java
  25. 12
      yun-admin/src/main/java/net/lab1024/sa/admin/util/DateTimeUtil.java
  26. 86
      yun-admin/src/main/resources/mapper/service/ServiceApplicationsMapper.xml
  27. 6
      yun-admin/src/main/resources/mapper/system/role/RoleDataScopeMapper.xml
  28. 2
      yun-base/src/main/java/net/lab1024/sa/base/common/enumeration/UserTypeEnum.java

18
.gitignore

@ -0,0 +1,18 @@
##ignore this file##
/target/
/.idea/
/.settings/
/.vscode/
/bin/
.classpath
.project
.settings
.idea
##filter databfile、sln file##
*.mdb
*.ldb
*.sln
##class file##
*.com
*.class

2
yun-admin/src/main/java/net/lab1024/sa/admin/module/business/category/controller/CategoryController.java

@ -49,7 +49,7 @@ public class CategoryController {
@Operation(summary = "查询类目层级树 @author 胡克") @Operation(summary = "查询类目层级树 @author 胡克")
@PostMapping("/category/tree") @PostMapping("/category/tree")
@SaCheckPermission("category:tree") //@SaCheckPermission("category:tree")
public ResponseDTO<List<CategoryTreeVO>> queryTree(@RequestBody @Valid CategoryTreeQueryForm queryForm) { public ResponseDTO<List<CategoryTreeVO>> queryTree(@RequestBody @Valid CategoryTreeQueryForm queryForm) {
return categoryService.queryTree(queryForm); return categoryService.queryTree(queryForm);
} }

2
yun-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/controller/GoodsController.java

@ -41,7 +41,7 @@ public class GoodsController {
@Operation(summary = "分页查询 @author 胡克") @Operation(summary = "分页查询 @author 胡克")
@PostMapping("/goods/query") @PostMapping("/goods/query")
@SaCheckPermission("goods:query") //@SaCheckPermission("goods:query")
public ResponseDTO<PageResult<GoodsVO>> query(@RequestBody @Valid GoodsQueryForm queryForm) { public ResponseDTO<PageResult<GoodsVO>> query(@RequestBody @Valid GoodsQueryForm queryForm) {
return goodsService.query(queryForm); return goodsService.query(queryForm);
} }

10
yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/controller/FirmReportsController.java

@ -37,35 +37,35 @@ public class FirmReportsController {
@Operation(summary = "分页查询 @author wzh") @Operation(summary = "分页查询 @author wzh")
@PostMapping("/firmReports/queryPage") @PostMapping("/firmReports/queryPage")
@SaCheckPermission("firmReports:query") //@SaCheckPermission("firmReports:query")
public ResponseDTO<PageResult<FirmReportsVO>> queryPage(@RequestBody @Valid FirmReportsQueryForm queryForm) { public ResponseDTO<PageResult<FirmReportsVO>> queryPage(@RequestBody @Valid FirmReportsQueryForm queryForm) {
return ResponseDTO.ok(firmReportsService.queryPage(queryForm)); return ResponseDTO.ok(firmReportsService.queryPage(queryForm));
} }
@Operation(summary = "添加 @author wzh") @Operation(summary = "添加 @author wzh")
@PostMapping("/firmReports/add") @PostMapping("/firmReports/add")
@SaCheckPermission("firmReports:add") //@SaCheckPermission("firmReports:add")
public ResponseDTO<String> add(@RequestBody @Valid FirmReportsAddForm addForm) { public ResponseDTO<String> add(@RequestBody @Valid FirmReportsAddForm addForm) {
return firmReportsService.add(addForm); return firmReportsService.add(addForm);
} }
@Operation(summary = "更新 @author wzh") @Operation(summary = "更新 @author wzh")
@PostMapping("/firmReports/update") @PostMapping("/firmReports/update")
@SaCheckPermission("firmReports:update") //@SaCheckPermission("firmReports:update")
public ResponseDTO<String> update(@RequestBody @Valid FirmReportsUpdateForm updateForm) { public ResponseDTO<String> update(@RequestBody @Valid FirmReportsUpdateForm updateForm) {
return firmReportsService.update(updateForm); return firmReportsService.update(updateForm);
} }
@Operation(summary = "批量删除 @author wzh") @Operation(summary = "批量删除 @author wzh")
@PostMapping("/firmReports/batchDelete") @PostMapping("/firmReports/batchDelete")
@SaCheckPermission("firmReports:delete") //@SaCheckPermission("firmReports:delete")
public ResponseDTO<String> batchDelete(@RequestBody ValidateList<Integer> idList) { public ResponseDTO<String> batchDelete(@RequestBody ValidateList<Integer> idList) {
return firmReportsService.batchDelete(idList); return firmReportsService.batchDelete(idList);
} }
@Operation(summary = "单个删除 @author wzh") @Operation(summary = "单个删除 @author wzh")
@GetMapping("/firmReports/delete/{id}") @GetMapping("/firmReports/delete/{id}")
@SaCheckPermission("firmReports:delete") //@SaCheckPermission("firmReports:delete")
public ResponseDTO<String> batchDelete(@PathVariable Integer id) { public ResponseDTO<String> batchDelete(@PathVariable Integer id) {
return firmReportsService.delete(id); return firmReportsService.delete(id);
} }

4
yun-admin/src/main/java/net/lab1024/sa/admin/module/penalty/controller/PenaltyApplyController.java

@ -37,14 +37,14 @@ public class PenaltyApplyController {
@Operation(summary = "分页查询 @author wzh") @Operation(summary = "分页查询 @author wzh")
@PostMapping("/penaltyApply/queryPage") @PostMapping("/penaltyApply/queryPage")
@SaCheckPermission("penaltyApply:query") //@SaCheckPermission("penaltyApply:query")
public ResponseDTO<PageResult<PenaltyApplyVO>> queryPage(@RequestBody @Valid PenaltyApplyQueryForm queryForm) { public ResponseDTO<PageResult<PenaltyApplyVO>> queryPage(@RequestBody @Valid PenaltyApplyQueryForm queryForm) {
return ResponseDTO.ok(penaltyApplyService.queryPage(queryForm)); return ResponseDTO.ok(penaltyApplyService.queryPage(queryForm));
} }
@Operation(summary = "添加 @author wzh") @Operation(summary = "添加 @author wzh")
@PostMapping("/penaltyApply/add") @PostMapping("/penaltyApply/add")
@SaCheckPermission("penaltyApply:add") //@SaCheckPermission("penaltyApply:add")
public ResponseDTO<String> add(@RequestBody @Valid PenaltyApplyAddForm addForm) { public ResponseDTO<String> add(@RequestBody @Valid PenaltyApplyAddForm addForm) {
return penaltyApplyService.add(addForm); return penaltyApplyService.add(addForm);
} }

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

@ -34,89 +34,103 @@ public class ServiceApplicationsController {
@Operation(summary = "分页查询 @author wzh") @Operation(summary = "分页查询 @author wzh")
@PostMapping("/serviceApplications/queryPage") @PostMapping("/serviceApplications/queryPage")
@SaCheckPermission("serviceApplications:query") //@SaCheckPermission("serviceApplications:query")
public ResponseDTO<PageResult<ServiceApplicationsVO>> queryPage(@RequestBody @Valid ServiceApplicationsQueryForm queryForm) { public ResponseDTO<PageResult<ServiceApplicationsVO>> queryPage(@RequestBody @Valid ServiceApplicationsQueryForm queryForm) {
return ResponseDTO.ok(serviceApplicationsService.queryPage(queryForm)); return ResponseDTO.ok(serviceApplicationsService.queryPage(queryForm));
} }
@Operation(summary = "添加 @author wzh") @Operation(summary = "添加 @author wzh")
@PostMapping("/serviceApplications/add") @PostMapping("/serviceApplications/add")
@SaCheckPermission("serviceApplications:add") //@SaCheckPermission("serviceApplications:add")
public ResponseDTO<String> add(@RequestBody @Valid ServiceApplicationsAddForm addForm) { public ResponseDTO<String> add(@RequestBody @Valid ServiceApplicationsAddForm addForm) {
return serviceApplicationsService.add(addForm); return serviceApplicationsService.add(addForm);
} }
@Operation(summary = "更新 @author wzh") @Operation(summary = "更新 @author wzh")
@PostMapping("/serviceApplications/update") @PostMapping("/serviceApplications/update")
@SaCheckPermission("serviceApplications:update") //@SaCheckPermission("serviceApplications:update")
public ResponseDTO<String> update(@RequestBody @Valid ServiceApplicationsUpdateForm updateForm) { public ResponseDTO<String> update(@RequestBody @Valid ServiceApplicationsUpdateForm updateForm) {
return serviceApplicationsService.update(updateForm); return serviceApplicationsService.update(updateForm);
} }
@Operation(summary = "审核 @author wzh") @Operation(summary = "审核 @author wzh")
@PostMapping("/serviceApplications/review") @PostMapping("/serviceApplications/review")
@SaCheckPermission("serviceApplications:review") //@SaCheckPermission("serviceApplications:review")
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") @Operation(summary = "批量提交 @author wzh")
@PostMapping("/serviceApplications/batchSubmit") @PostMapping("/serviceApplications/batchSubmit")
@SaCheckPermission("serviceApplications:batchSubmit") //@SaCheckPermission("serviceApplications:batchSubmit")
public ResponseDTO<String> batchSubmit(@RequestBody ValidateList<Integer> idList) { public ResponseDTO<String> batchSubmit(@RequestBody ValidateList<Long> idList) {
return serviceApplicationsService.batchSubmit(idList); return serviceApplicationsService.batchSubmit(idList);
} }
@Operation(summary = "编辑时提交 @author wzh") @Operation(summary = "编辑时提交 @author wzh")
@GetMapping("/serviceApplications/submit/{applicationId}") @GetMapping("/serviceApplications/submit/{applicationId}")
@SaCheckPermission("serviceApplications:submit") //@SaCheckPermission("serviceApplications:submit")
public ResponseDTO<String> submit(@PathVariable Integer applicationId) { public ResponseDTO<String> submit(@PathVariable Long applicationId) {
return serviceApplicationsService.submit(applicationId); return serviceApplicationsService.submit(applicationId);
} }
@Operation(summary = "新增时提交 @author wzh") @Operation(summary = "新增时提交 @author wzh")
@PostMapping("/serviceApplications/addSubmit") @PostMapping("/serviceApplications/addSubmit")
@SaCheckPermission("serviceApplications:addSubmit") //@SaCheckPermission("serviceApplications:addSubmit")
public ResponseDTO<String> addSubmit(@RequestBody @Valid ServiceApplicationsAddForm addForm) { public ResponseDTO<String> addSubmit(@RequestBody @Valid ServiceApplicationsAddForm addForm) {
return serviceApplicationsService.addSubmit(addForm); return serviceApplicationsService.addSubmit(addForm);
} }
@Operation(summary = "批量删除 @author wzh") @Operation(summary = "批量删除 @author wzh")
@PostMapping("/serviceApplications/batchDelete") @PostMapping("/serviceApplications/batchDelete")
@SaCheckPermission("serviceApplications:delete") //@SaCheckPermission("serviceApplications:delete")
public ResponseDTO<String> batchDelete(@RequestBody ValidateList<Integer> idList) { public ResponseDTO<String> batchDelete(@RequestBody ValidateList<Long> idList) {
return serviceApplicationsService.batchDelete(idList); return serviceApplicationsService.batchDelete(idList);
} }
@Operation(summary = "单个删除 @author wzh") @Operation(summary = "单个删除 @author wzh")
@GetMapping("/serviceApplications/delete/{applicationId}") @GetMapping("/serviceApplications/delete/{applicationId}")
@SaCheckPermission("serviceApplications:delete") //@SaCheckPermission("serviceApplications:delete")
public ResponseDTO<String> batchDelete(@PathVariable Integer applicationId) { public ResponseDTO<String> delete(@PathVariable Long applicationId) {
return serviceApplicationsService.delete(applicationId); return serviceApplicationsService.delete(applicationId);
} }
@Operation(summary = "导入 @author wzh") @Operation(summary = "导入 @author wzh")
@PostMapping("/serviceApplications/importService") @PostMapping("/serviceApplications/importService")
@SaCheckPermission("serviceApplications:importService") //@SaCheckPermission("serviceApplications:importService")
public ResponseDTO<String> importService(@RequestParam MultipartFile file) { public ResponseDTO<String> importService(@RequestParam MultipartFile file) {
return serviceApplicationsService.importService(file); return serviceApplicationsService.importService(file);
} }
@Operation(summary = "模板下载 @author wzh") @Operation(summary = "模板下载 @author wzh")
@GetMapping("/serviceApplications/downloadTemplate") @GetMapping("/serviceApplications/downloadTemplate")
@SaCheckPermission("serviceApplications:downloadTemplate") //@SaCheckPermission("serviceApplications:downloadTemplate")
public void downloadTemplate(HttpServletResponse response) { public void downloadTemplate(HttpServletResponse response) {
serviceApplicationsService.downloadTemplate(response); serviceApplicationsService.downloadTemplate(response);
} }
@Operation(summary = "律师统计信息 @author wzh") @Operation(summary = "律师统计信息 @author wzh")
@PostMapping("/serviceApplications/statistics") @PostMapping("/serviceApplications/statistics")
@SaCheckPermission("serviceApplications:statistics") //@SaCheckPermission("serviceApplications:statistics")
public ResponseDTO<PageResult<LawyerStatisticsVO>> getLawyerStatistics(@RequestBody @Valid LawyerStatisticsQueryForm queryForm) { public ResponseDTO<PageResult<LawyerStatisticsVO>> getLawyerStatistics(@RequestBody @Valid LawyerStatisticsQueryForm queryForm) {
return ResponseDTO.ok(serviceApplicationsService.getLawyerStatistics(queryForm)); return ResponseDTO.ok(serviceApplicationsService.getLawyerStatistics(queryForm));
} }
@Operation(summary = "律所统计信息 @author wzh")
@PostMapping("/serviceApplications/statistics/department")
//@SaCheckPermission("serviceApplications:statistics")
public ResponseDTO<PageResult<LawyerStatisticsVO>> getLawyerStatisticsByDepartment(@RequestBody @Valid LawyerStatisticsQueryForm queryForm) {
return ResponseDTO.ok(serviceApplicationsService.getLawyerStatisticsByDepartment(queryForm));
}
@Operation(summary = "律所统计信息导出 @author wzh")
@GetMapping("/serviceApplications/exportLawyerByDepartment")
//@SaCheckPermission("serviceApplications:exportLawyer")
public void exportLawyerByDepartment(ServiceLawyerQueryForm queryForm, HttpServletResponse response) {
serviceApplicationsService.exportLawyerByDepartment(queryForm, response);
}
@Operation(summary = "律师统计信息导出 @author wzh") @Operation(summary = "律师统计信息导出 @author wzh")
@GetMapping("/serviceApplications/exportLawyer") @GetMapping("/serviceApplications/exportLawyer")
@SaCheckPermission("serviceApplications:exportLawyer") //@SaCheckPermission("serviceApplications:exportLawyer")
public void exportLawyer(ServiceLawyerQueryForm queryForm, HttpServletResponse response) { public void exportLawyer(ServiceLawyerQueryForm queryForm, HttpServletResponse response) {
serviceApplicationsService.exportLawyer(queryForm, response); serviceApplicationsService.exportLawyer(queryForm, response);
} }

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

@ -2,10 +2,7 @@ package net.lab1024.sa.admin.module.service.dao;
import java.util.List; import java.util.List;
import net.lab1024.sa.admin.module.service.domain.entity.ServiceApplicationsEntity; import net.lab1024.sa.admin.module.service.domain.entity.ServiceApplicationsEntity;
import net.lab1024.sa.admin.module.service.domain.form.LawyerStatisticsQueryForm; import net.lab1024.sa.admin.module.service.domain.form.*;
import net.lab1024.sa.admin.module.service.domain.form.ServiceApplicationsQueryForm;
import net.lab1024.sa.admin.module.service.domain.form.ServiceLawyerImportForm;
import net.lab1024.sa.admin.module.service.domain.form.ServiceLawyerQueryForm;
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 com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@ -14,6 +11,8 @@ 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;
import javax.validation.Valid;
/** /**
* 服务申报表 Dao * 服务申报表 Dao
* *
@ -37,14 +36,14 @@ public interface ServiceApplicationsDao extends BaseMapper<ServiceApplicationsEn
/** /**
* 更新删除状态 * 更新删除状态
*/ */
long updateDeleted(@Param("applicationId")Integer applicationId,@Param("deletedFlag")boolean deletedFlag); long updateDeleted(@Param("applicationId")Long applicationId,@Param("deletedFlag")boolean deletedFlag);
/** /**
* 批量更新删除状态 * 批量更新删除状态
*/ */
void batchUpdateDeleted(@Param("idList")List<Integer> idList,@Param("deletedFlag")boolean deletedFlag); void batchUpdateDeleted(@Param("idList")List<Long> idList,@Param("deletedFlag")boolean deletedFlag);
void batchSubmit(@Param("idList")List<Integer> idList, @Param("deletedFlag")Integer b); void batchSubmit(@Param("idList")List<Long> idList, @Param("deletedFlag")Integer b);
/** /**
* 律师统计查询无参数保持向后兼容 * 律师统计查询无参数保持向后兼容
@ -67,4 +66,24 @@ public interface ServiceApplicationsDao extends BaseMapper<ServiceApplicationsEn
* @return * @return
*/ */
LawyerStatisticsVO getLawyerStatistic(@Param("queryForm") LawyerStatisticsQueryForm queryForm); LawyerStatisticsVO getLawyerStatistic(@Param("queryForm") LawyerStatisticsQueryForm queryForm);
/**
* 律所统计
* @param page
* @param queryForm
* @return
*/
List<LawyerStatisticsVO> getdepartmentStatistics(Page page, @Param("queryForm") LawyerStatisticsQueryForm queryForm);
/**
* 月度统计
* @param queryForm
* @return
*/
LawyerStatisticsVO getdepartmentMothStatistic(@Param("queryForm") LawyerStatisticsQueryForm queryForm);
/**
* 律所统计带参数无分页
*/
List<ServiceDepartmentImportForm> getDepartmentStatisticsWithParam(@Param("queryForm") ServiceLawyerQueryForm queryForm);
} }

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

@ -95,7 +95,7 @@ public class ServiceApplicationsEntity {
/** /**
* 律所审核人 * 律所审核人
*/ */
private Integer firmAuditUser; private Long firmAuditUser;
/** /**
* 律所审核时间 * 律所审核时间

3
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/LawyerStatisticsQueryForm.java

@ -28,6 +28,9 @@ public class LawyerStatisticsQueryForm extends PageParam {
@Schema(description = "律所名称") @Schema(description = "律所名称")
private String firmName; private String firmName;
@Schema(description = "律所id")
private Long firmId;
@Schema(description = "开始时间") @Schema(description = "开始时间")
private String startTime; private String startTime;

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

@ -63,11 +63,11 @@ public class ServiceApplicationsAddForm {
private String certificateNumber; private String certificateNumber;
@Schema(description = "活动类别", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "活动类别", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "活动类别 不能为空") @NotNull(message = "活动类别 不能为空")
private Long activityCategoryId; private Long activityCategoryId;
@Schema(description = "活动名称", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "活动名称", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "活动名称 不能为空") @NotNull(message = "活动名称 不能为空")
private Long activityNameId; private Long activityNameId;
@Schema(description = "附件id集合", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "附件id集合", requiredMode = Schema.RequiredMode.REQUIRED)

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

@ -10,6 +10,7 @@ import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
/** /**
* 服务申报表 分页查询表单 * 服务申报表 分页查询表单
@ -30,12 +31,12 @@ public class ServiceApplicationsQueryForm extends PageParam {
/** /**
* 申报律师ID * 申报律师ID
*/ */
private Integer userId; private Long userId;
/** /**
* 律所ID * 律所ID
*/ */
private Integer firmId; private Long firmId;
/** /**
* 服务开始时间 * 服务开始时间
@ -50,7 +51,7 @@ public class ServiceApplicationsQueryForm extends PageParam {
/** /**
* 服务时长小时 * 服务时长小时
*/ */
private BigDecimal serviceDuration; private Double serviceDuration;
/** /**
* 受益人数 * 受益人数
@ -95,7 +96,7 @@ public class ServiceApplicationsQueryForm extends PageParam {
/** /**
* 律所审核人 * 律所审核人
*/ */
private Integer firmAuditUser; private Long firmAuditUser;
/** /**
* 律所审核时间 * 律所审核时间
@ -139,7 +140,9 @@ public class ServiceApplicationsQueryForm extends PageParam {
private String certificateNumber; private String certificateNumber;
private String activityCategoryId; private Long activityCategoryId;
private String activityNameId; private Long activityNameId;
public List<Long> employeeIdList;
} }

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

@ -21,7 +21,7 @@ public class ServiceApplicationsUpdateForm{
@Schema(description = "申报ID", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "申报ID", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "申报ID 不能为空") @NotNull(message = "申报ID 不能为空")
private Integer applicationId; private Long applicationId;
@Schema(description = "律所审核状态") @Schema(description = "律所审核状态")
private Integer firmAuditStatus; private Integer firmAuditStatus;
@ -29,7 +29,6 @@ public class ServiceApplicationsUpdateForm{
private Long userId; private Long userId;
@Schema(description = "律所") @Schema(description = "律所")
@NotNull(message = "律所 不能为空")
private Long firmId; private Long firmId;
@Schema(description = "服务开始时间") @Schema(description = "服务开始时间")

38
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceDepartmentImportForm.java

@ -0,0 +1,38 @@
package net.lab1024.sa.admin.module.service.domain.form;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 律所统计报表导出表单
*
* @Author wzh
* @Date 2025-12-22
* @Copyright 1.0
*/
@Data
public class ServiceDepartmentImportForm {
@ExcelProperty("机构名称")
private String firmName;
@ExcelProperty("机构id")
@ExcelIgnore
private Long firmId;
@ExcelProperty("季度累计服务时长")
private Double quarterlyServiceDuration = 0.0;
@ExcelProperty("季度累计服务成本")
private BigDecimal quarterlyServiceCost = BigDecimal.ZERO;
@ExcelProperty("年度累计服务时长")
private Double annualServiceDuration = 0.0;
@ExcelProperty("年度累计服务成本")
private BigDecimal annualServiceCost = BigDecimal.ZERO;
}

14
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceLawyerImportForm.java

@ -1,12 +1,10 @@
package net.lab1024.sa.admin.module.service.domain.form; package net.lab1024.sa.admin.module.service.domain.form;
import cn.idev.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.format.DateTimeFormat; import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
/** /**
* 律所统计报表导出表单 * 律所统计报表导出表单
@ -17,9 +15,10 @@ import java.time.LocalDateTime;
*/ */
@Data @Data
public class ServiceLawyerImportForm { public class ServiceLawyerImportForm {
@ExcelProperty("用户ID")
@ExcelIgnore
private Long userId; private Long userId;
//@ExcelProperty("序号")
private Integer id;
@ExcelProperty("执业律师") @ExcelProperty("执业律师")
private String lawyerName; private String lawyerName;
@ -38,7 +37,4 @@ public class ServiceLawyerImportForm {
@ExcelProperty("年度累计服务成本") @ExcelProperty("年度累计服务成本")
private BigDecimal annualServiceCost = BigDecimal.ZERO; private BigDecimal annualServiceCost = BigDecimal.ZERO;
//@ExcelProperty("备注")
private String mark;
} }

4
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceLawyerQueryForm.java

@ -13,7 +13,7 @@ import net.lab1024.sa.base.common.domain.PageParam;
@Schema(description = "律师统计查询表单") @Schema(description = "律师统计查询表单")
public class ServiceLawyerQueryForm { public class ServiceLawyerQueryForm {
@Schema(description = "季度,1,2,3,4") @Schema(description = "季度,Q1,Q2,Q3,Q4")
private Integer quarter; private Integer quarter;
@Schema(description = "年度,格式:yyyy") @Schema(description = "年度,格式:yyyy")
@ -24,7 +24,7 @@ public class ServiceLawyerQueryForm {
@Schema(description = "律所名称") @Schema(description = "律所名称")
private String firmName; private String firmName;
private String firmId;
@Schema(description = "开始时间") @Schema(description = "开始时间")
private String startTime; private String startTime;

6
yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/LawyerStatisticsVO.java

@ -20,6 +20,12 @@ public class LawyerStatisticsVO {
@Schema(description = "执业律师姓名") @Schema(description = "执业律师姓名")
private String lawyerName; private String lawyerName;
@Schema(description = "律所id")
private String firmId;
@Schema(description = "律所名称")
private String firmName;
@Schema(description = "执业证号") @Schema(description = "执业证号")
private String certificateNumber; private String certificateNumber;

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

@ -31,6 +31,7 @@ public class ServiceApplicationsVO {
@Schema(description = "律师名称") @Schema(description = "律师名称")
private String userName; private String userName;
@Schema(description = "服务开始时间") @Schema(description = "服务开始时间")
private LocalDateTime serviceStart; private LocalDateTime serviceStart;
@ -65,8 +66,8 @@ public class ServiceApplicationsVO {
private String firmAuditOpinion; private String firmAuditOpinion;
@Schema(description = "律所审核人") @Schema(description = "律所审核人")
private Integer firmAuditUser; private Long firmAuditUser;
private String firmAuditUserName;
@Schema(description = "律所审核时间") @Schema(description = "律所审核时间")
private LocalDateTime firmAuditTime; private LocalDateTime firmAuditTime;

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

@ -1,10 +1,7 @@
package net.lab1024.sa.admin.module.service.service; package net.lab1024.sa.admin.module.service.service;
import cn.idev.excel.FastExcel;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.handler.SheetWriteHandler; import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -26,13 +23,19 @@ 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.LawyerStatisticsVO;
import net.lab1024.sa.admin.module.service.domain.vo.ServiceApplicationsTemplateVO; 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.service.domain.vo.ServiceApplicationsVO;
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.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.role.domain.vo.RoleVO;
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.util.AdminRequestUtil; 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.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;
@ -59,6 +62,8 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 服务申报 Service * 服务申报 Service
* *
@ -75,21 +80,34 @@ public class ServiceApplicationsService {
@Resource @Resource
private EmployeeService employeeService; private EmployeeService employeeService;
@Resource @Resource
private DepartmentService departmentService; private DepartmentService departmentService;
@Resource @Resource
private CategoryService categoryService; private CategoryService categoryService;
@Resource @Resource
private GoodsService goodsService; private GoodsService goodsService;
@Resource
private DataScopeViewService dataScopeViewService;
@Resource
private RoleEmployeeService roleEmployeeService;
/** /**
* 分页查询 * 分页查询
*/ */
public PageResult<ServiceApplicationsVO> queryPage(ServiceApplicationsQueryForm queryForm) { public PageResult<ServiceApplicationsVO> queryPage(ServiceApplicationsQueryForm queryForm) {
List<Long> longs = new ArrayList<>();
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm); Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
//根据用户角色的查询数据范围来查询数据
RequestUser requestUser = AdminRequestUtil.getRequestUser();
List<RoleVO> roleIdList = roleEmployeeService.getRoleIdList(requestUser.getUserId());
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());
}
queryForm.setEmployeeIdList(longs);
List<ServiceApplicationsVO> list = serviceApplicationsDao.queryPage(page, queryForm); List<ServiceApplicationsVO> list = serviceApplicationsDao.queryPage(page, queryForm);
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
//翻译单位名称和用户名称 //翻译单位名称和用户名称
@ -100,6 +118,9 @@ public class ServiceApplicationsService {
if (item.getUserId() != null){ if (item.getUserId() != null){
item.setUserName(employeeService.queryById(item.getUserId()).getActualName()); item.setUserName(employeeService.queryById(item.getUserId()).getActualName());
} }
if (item.getFirmAuditUser() != null){
item.setFirmAuditUserName(employeeService.queryById(item.getUserId()).getActualName());
}
if (item.getActivityCategoryId() != null) { if (item.getActivityCategoryId() != null) {
item.setActivityCategory(categoryService.queryById(item.getActivityCategoryId()).getCategoryName()); item.setActivityCategory(categoryService.queryById(item.getActivityCategoryId()).getCategoryName());
} }
@ -135,20 +156,20 @@ public class ServiceApplicationsService {
* 提交 * 提交
* *
*/ */
public ResponseDTO<String> submit(Integer applicationId) { public ResponseDTO<String> submit(Long applicationId) {
if (null == applicationId){ if (null == applicationId){
return ResponseDTO.ok(); return ResponseDTO.ok();
} }
ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(applicationId); ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(applicationId);
serviceApplicationsEntity.setFirmAuditStatus(ReviewEnum.APPROVAL.getValue()); serviceApplicationsEntity.setFirmAuditStatus(ReviewEnum.APPROVAL.getValue());
serviceApplicationsEntity.setReportTime(LocalDateTime.now());
serviceApplicationsDao.updateById(serviceApplicationsEntity); serviceApplicationsDao.updateById(serviceApplicationsEntity);
return ResponseDTO.ok(); return ResponseDTO.ok();
} }
/** /**
* 批量删除 * 批量删除
*/ */
public ResponseDTO<String> batchDelete(List<Integer> idList) { public ResponseDTO<String> batchDelete(List<Long> idList) {
if (CollectionUtils.isEmpty(idList)){ if (CollectionUtils.isEmpty(idList)){
return ResponseDTO.ok(); return ResponseDTO.ok();
} }
@ -160,7 +181,7 @@ public class ServiceApplicationsService {
/** /**
* 单个删除 * 单个删除
*/ */
public ResponseDTO<String> delete(Integer applicationId) { public ResponseDTO<String> delete(Long applicationId) {
if (null == applicationId){ if (null == applicationId){
return ResponseDTO.ok(); return ResponseDTO.ok();
} }
@ -340,7 +361,7 @@ public class ServiceApplicationsService {
} }
} }
public ResponseDTO<String> batchSubmit(List<Integer> idList) { public ResponseDTO<String> batchSubmit(List<Long> idList) {
if (CollectionUtils.isEmpty(idList)){ if (CollectionUtils.isEmpty(idList)){
return ResponseDTO.ok(); return ResponseDTO.ok();
} }
@ -352,6 +373,7 @@ public class ServiceApplicationsService {
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());
if (null == addForm.getApplicationId()){ if (null == addForm.getApplicationId()){
serviceApplicationsDao.insert(serviceApplicationsEntity); serviceApplicationsDao.insert(serviceApplicationsEntity);
}else { }else {
@ -362,12 +384,72 @@ public class ServiceApplicationsService {
} }
public ResponseDTO<String> review(@Valid ServiceApplicationsUpdateForm updateForm) { public ResponseDTO<String> review(@Valid ServiceApplicationsUpdateForm updateForm) {
RequestUser requestUser = AdminRequestUtil.getRequestUser();
ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(updateForm.getApplicationId()); ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(updateForm.getApplicationId());
serviceApplicationsEntity.setFirmAuditStatus(updateForm.getFirmAuditStatus()); serviceApplicationsEntity.setFirmAuditStatus(updateForm.getFirmAuditStatus());
serviceApplicationsEntity.setFirmAuditUser(requestUser.getUserId());
serviceApplicationsEntity.setFirmAuditTime(LocalDateTime.now());
serviceApplicationsDao.updateById(serviceApplicationsEntity); serviceApplicationsDao.updateById(serviceApplicationsEntity);
return ResponseDTO.ok(); return ResponseDTO.ok();
} }
/**
* 律所统计
* @param queryForm
* @return
*/
public PageResult<LawyerStatisticsVO> getLawyerStatisticsByDepartment(@Valid LawyerStatisticsQueryForm queryForm) {
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
// 如果没有指定季度,则使用年度范围,否则使用季度范围
if (queryForm.getQuarter() == null) {
// 如果用户指定了年份,则使用指定年份,否则使用当前年份
int targetYear = queryForm.getYear() != null ? queryForm.getYear() : DateTimeUtil.getCurrentYear();
String yearStart = targetYear + "-01-01";
String yearEnd = targetYear + "-12-31";
queryForm.setStartTime(yearStart);
queryForm.setEndTime(yearEnd);
} else {
// 根据指定的季度设置时间范围
int targetYear = queryForm.getYear() != null ? queryForm.getYear() : DateTimeUtil.getCurrentYear();
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(targetYear, queryForm.getQuarter());
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(targetYear, queryForm.getQuarter());
queryForm.setStartTime(quarterStart.toString());
queryForm.setEndTime(quarterEnd.toString());
}
//统计
List<LawyerStatisticsVO> lawyerStatisticsWithParamYear = serviceApplicationsDao.getdepartmentStatistics(page, queryForm);
PageResult<LawyerStatisticsVO> lawyerStatisticsVOPageResult = SmartPageUtil.convert2PageResult(page, lawyerStatisticsWithParamYear);
if (!lawyerStatisticsVOPageResult.getList().isEmpty()) {
monthStatisticsDepartment(queryForm, lawyerStatisticsVOPageResult.getList(),null);
}
return lawyerStatisticsVOPageResult;
}
public void exportLawyerByDepartment(ServiceLawyerQueryForm queryForm, HttpServletResponse response) {
// 如果没有指定季度,则使用年度范围,否则使用季度范围
if (queryForm.getQuarter() == null) {
TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd();
String yearStart = yearStartAndEnd.getStartTime();
String yearEnd = yearStartAndEnd.getEndTime();
queryForm.setStartTime(yearStart);
queryForm.setEndTime(yearEnd);
} else {
// 根据指定的季度设置时间范围
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter());
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter());
queryForm.setStartTime(quarterStart.toString());
queryForm.setEndTime(quarterEnd.toString());
}
List<ServiceDepartmentImportForm> lawyerStatisticsWithParamYear = serviceApplicationsDao.getDepartmentStatisticsWithParam(queryForm);
if (!lawyerStatisticsWithParamYear.isEmpty()) {
LawyerStatisticsQueryForm queryForm1 = SmartBeanUtil.copy(queryForm, LawyerStatisticsQueryForm.class);
monthStatisticsDepartment(queryForm1, null, lawyerStatisticsWithParamYear);
}
//写入数据到文件
exportExcel(response, "律所统计信息.xlsx", "律所统计信息", ServiceDepartmentImportForm.class, lawyerStatisticsWithParamYear);
}
/** /**
* Excel下拉列表处理器 * Excel下拉列表处理器
*/ */
@ -599,10 +681,10 @@ public class ServiceApplicationsService {
*/ */
public PageResult<LawyerStatisticsVO> getLawyerStatistics(LawyerStatisticsQueryForm queryForm) { public PageResult<LawyerStatisticsVO> getLawyerStatistics(LawyerStatisticsQueryForm queryForm) {
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm); Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd();
//根据year拼接年度的开始时间和结束时间 //根据year拼接年度的开始时间和结束时间
String yearStart = DateTimeUtil.getYearStartAndEnd().getStartTime(); String yearStart = yearStartAndEnd.getStartTime();
String yearEnd = DateTimeUtil.getYearStartAndEnd().getEndTime(); String yearEnd = yearStartAndEnd.getEndTime();
queryForm.setStartTime(yearStart); queryForm.setStartTime(yearStart);
queryForm.setEndTime(yearEnd); queryForm.setEndTime(yearEnd);
//统计当前年度的 //统计当前年度的
@ -619,11 +701,20 @@ public class ServiceApplicationsService {
* @param queryForm * @param queryForm
*/ */
public void exportLawyer(ServiceLawyerQueryForm queryForm, HttpServletResponse response) { public void exportLawyer(ServiceLawyerQueryForm queryForm, HttpServletResponse response) {
//根据year拼接年度的开始时间和结束时间 // 如果没有指定季度,则使用年度范围,否则使用季度范围
String yearStart = DateTimeUtil.getYearStartAndEnd().getStartTime(); if (queryForm.getQuarter() == null) {
String yearEnd = DateTimeUtil.getYearStartAndEnd().getEndTime(); TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd();
String yearStart = yearStartAndEnd.getStartTime();
String yearEnd = yearStartAndEnd.getEndTime();
queryForm.setStartTime(yearStart); queryForm.setStartTime(yearStart);
queryForm.setEndTime(yearEnd); queryForm.setEndTime(yearEnd);
} else {
// 根据指定的季度设置时间范围
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter());
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter());
queryForm.setStartTime(quarterStart.toString());
queryForm.setEndTime(quarterEnd.toString());
}
List<ServiceLawyerImportForm> lawyerStatisticsWithParamYear = serviceApplicationsDao.getLawyerStatisticsWithParam(queryForm); List<ServiceLawyerImportForm> lawyerStatisticsWithParamYear = serviceApplicationsDao.getLawyerStatisticsWithParam(queryForm);
if (!lawyerStatisticsWithParamYear.isEmpty()) { if (!lawyerStatisticsWithParamYear.isEmpty()) {
LawyerStatisticsQueryForm queryForm1 = SmartBeanUtil.copy(queryForm, LawyerStatisticsQueryForm.class); LawyerStatisticsQueryForm queryForm1 = SmartBeanUtil.copy(queryForm, LawyerStatisticsQueryForm.class);
@ -646,8 +737,9 @@ public class ServiceApplicationsService {
LawyerStatisticsQueryForm queryForm = SmartBeanUtil.copy(originalQueryForm, LawyerStatisticsQueryForm.class); LawyerStatisticsQueryForm queryForm = SmartBeanUtil.copy(originalQueryForm, LawyerStatisticsQueryForm.class);
if (queryForm.getQuarter() == null) { if (queryForm.getQuarter() == null) {
//获取当前月份上一季度的开始时间和结束时间 //获取当前月份上一季度的开始时间和结束时间
String quarterStart = DateTimeUtil.getStartQuarter().getStartTime(); TimeVo startQuarter = DateTimeUtil.getStartQuarter();
String quarterEnd = DateTimeUtil.getStartQuarter().getEndTime(); String quarterStart = startQuarter.getStartTime();
String quarterEnd = startQuarter.getEndTime();
queryForm.setStartTime(quarterStart.toString()); queryForm.setStartTime(quarterStart.toString());
queryForm.setEndTime(quarterEnd.toString()); queryForm.setEndTime(quarterEnd.toString());
} else{ } else{
@ -671,8 +763,9 @@ public class ServiceApplicationsService {
LawyerStatisticsQueryForm queryForm = SmartBeanUtil.copy(originalQueryForm, LawyerStatisticsQueryForm.class); LawyerStatisticsQueryForm queryForm = SmartBeanUtil.copy(originalQueryForm, LawyerStatisticsQueryForm.class);
if (queryForm.getQuarter() == null) { if (queryForm.getQuarter() == null) {
//获取当前月份上一季度的开始时间和结束时间 //获取当前月份上一季度的开始时间和结束时间
String quarterStart = DateTimeUtil.getStartQuarter().getStartTime(); TimeVo startQuarter = DateTimeUtil.getStartQuarter();
String quarterEnd = DateTimeUtil.getStartQuarter().getEndTime(); String quarterStart = startQuarter.getStartTime();
String quarterEnd = startQuarter.getEndTime();
queryForm.setStartTime(quarterStart.toString()); queryForm.setStartTime(quarterStart.toString());
queryForm.setEndTime(quarterEnd.toString()); queryForm.setEndTime(quarterEnd.toString());
} else{ } else{
@ -692,6 +785,64 @@ public class ServiceApplicationsService {
} }
} }
} }
public void monthStatisticsDepartment(LawyerStatisticsQueryForm originalQueryForm, List<LawyerStatisticsVO> lawyerStatisticsVOPageResult,List<ServiceDepartmentImportForm> lawyerStatisticsWithParamYear) {
if (lawyerStatisticsVOPageResult != null) {
for (LawyerStatisticsVO statisticsVO : lawyerStatisticsVOPageResult) {
// 创建新的查询表单对象以避免修改原始对象
LawyerStatisticsQueryForm queryForm = SmartBeanUtil.copy(originalQueryForm, LawyerStatisticsQueryForm.class);
if (queryForm.getQuarter() == null) {
// 如果没有指定季度,使用上一季度的时间范围
TimeVo startQuarter = DateTimeUtil.getStartQuarter();
String quarterStart = startQuarter.getStartTime();
String quarterEnd = startQuarter.getEndTime();
queryForm.setStartTime(quarterStart + " 00:00:00");
queryForm.setEndTime(quarterEnd + " 23:59:59");
} else{
//根据季度获取季度的开始时间和结束时间
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter());
//结束时间
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter());
queryForm.setStartTime(quarterStart.toString());
queryForm.setEndTime(quarterEnd.toString());
}
queryForm.setUserId(statisticsVO.getUserId());
//季度服务时间范围
LawyerStatisticsVO quarterStatisticsVO = serviceApplicationsDao.getdepartmentMothStatistic(queryForm);
if (quarterStatisticsVO != null && quarterStatisticsVO.getQuarterlyServiceDuration() != null) {
statisticsVO.setQuarterlyServiceDuration(quarterStatisticsVO.getQuarterlyServiceDuration());
}
}
}else if (lawyerStatisticsWithParamYear != null) {
for (ServiceDepartmentImportForm statisticsVO : lawyerStatisticsWithParamYear) {
// 创建新的查询表单对象以避免修改原始对象
LawyerStatisticsQueryForm queryForm = SmartBeanUtil.copy(originalQueryForm, LawyerStatisticsQueryForm.class);
if (queryForm.getQuarter() == null) {
// 如果没有指定季度,使用上一季度的时间范围
TimeVo startQuarter = DateTimeUtil.getStartQuarter();
String quarterStart = startQuarter.getStartTime();
String quarterEnd = startQuarter.getEndTime();
queryForm.setStartTime(quarterStart + " 00:00:00");
queryForm.setEndTime(quarterEnd + " 23:59:59");
} else{
//根据季度获取季度的开始时间和结束时间
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter());
//结束时间
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter());
queryForm.setStartTime(quarterStart.toString());
queryForm.setEndTime(quarterEnd.toString());
}
queryForm.setFirmId(statisticsVO.getFirmId());
//季度服务时间范围
LawyerStatisticsVO quarterStatisticsVO = serviceApplicationsDao.getdepartmentMothStatistic(queryForm);
if (quarterStatisticsVO != null && quarterStatisticsVO.getQuarterlyServiceDuration() != null) {
statisticsVO.setQuarterlyServiceDuration(quarterStatisticsVO.getQuarterlyServiceDuration());
}
}
}
}
/** /**
* 通用Excel导出功能 * 通用Excel导出功能
* @param response HttpServletResponse * @param response HttpServletResponse

4
yun-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeViewTypeEnum.java

@ -21,8 +21,8 @@ public enum DataScopeViewTypeEnum implements BaseEnum {
/** /**
* 本部门及下属子部门 * 本部门及下属子部门
*/ *
DEPARTMENT_AND_SUB(2, 2, "本部门及下属子部门"), DEPARTMENT_AND_SUB(2, 2, "本部门及下属子部门"),*/
/** /**
* 全部 * 全部

12
yun-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java

@ -47,9 +47,9 @@ public class DataScopeViewService {
if (DataScopeViewTypeEnum.DEPARTMENT == viewType) { if (DataScopeViewTypeEnum.DEPARTMENT == viewType) {
return this.getDepartmentEmployeeIdList(employeeId); return this.getDepartmentEmployeeIdList(employeeId);
} }
if (DataScopeViewTypeEnum.DEPARTMENT_AND_SUB == viewType) { /*if (DataScopeViewTypeEnum.DEPARTMENT_AND_SUB == viewType) {
return this.getDepartmentAndSubEmployeeIdList(employeeId); return this.getDepartmentAndSubEmployeeIdList(employeeId);
} }*/
// 可以查看所有员工数据 // 可以查看所有员工数据
return Lists.newArrayList(); return Lists.newArrayList();
} }
@ -65,9 +65,9 @@ public class DataScopeViewService {
if (DataScopeViewTypeEnum.DEPARTMENT == viewType) { if (DataScopeViewTypeEnum.DEPARTMENT == viewType) {
return this.getMeDepartmentIdList(employeeId); return this.getMeDepartmentIdList(employeeId);
} }
if (DataScopeViewTypeEnum.DEPARTMENT_AND_SUB == viewType) { /*if (DataScopeViewTypeEnum.DEPARTMENT_AND_SUB == viewType) {
return this.getDepartmentAndSubIdList(employeeId); return this.getDepartmentAndSubIdList(employeeId);
} }*/
// 可以查看所有部门数据 // 可以查看所有部门数据
return Lists.newArrayList(); return Lists.newArrayList();
} }
@ -137,4 +137,8 @@ public class DataScopeViewService {
List<Long> allDepartmentIds = getDepartmentAndSubIdList(employeeId); List<Long> allDepartmentIds = getDepartmentAndSubIdList(employeeId);
return employeeDao.getEmployeeIdByDepartmentIdList(allDepartmentIds, false); return employeeDao.getEmployeeIdByDepartmentIdList(allDepartmentIds, false);
} }
public Integer getOneByRoleId(Long roleId) {
return this.roleDataScopeDao.getOneByRoleId(roleId);
}
} }

1
yun-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginResultVO.java

@ -37,4 +37,5 @@ public class LoginResultVO extends RequestEmployee {
@Schema(description = "协议书签订状态") @Schema(description = "协议书签订状态")
private Boolean agreementSignFlag; private Boolean agreementSignFlag;
private Integer dataScopeView;
} }

11
yun-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java

@ -8,6 +8,7 @@ import cn.hutool.core.util.RandomUtil;
import cn.hutool.extra.servlet.ServletUtil; import cn.hutool.extra.servlet.ServletUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.lab1024.sa.admin.module.letter.service.LetterService; import net.lab1024.sa.admin.module.letter.service.LetterService;
import net.lab1024.sa.admin.module.system.datascope.service.DataScopeViewService;
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;
@ -111,7 +112,8 @@ public class LoginService implements StpInterface {
private LoginManager loginManager; private LoginManager loginManager;
@Resource @Resource
private LetterService letterService; private LetterService letterService;
@Resource
private DataScopeViewService dataScopeViewService;
/** /**
* 获取验证码 * 获取验证码
*/ */
@ -160,7 +162,9 @@ public class LoginService implements StpInterface {
// 验证密码 是否为万能密码 // 验证密码 是否为万能密码
String superPassword = configService.getConfigValue(ConfigKeyEnum.SUPER_PASSWORD); String superPassword = configService.getConfigValue(ConfigKeyEnum.SUPER_PASSWORD);
boolean superPasswordFlag = superPassword.equals(requestPassword); boolean superPasswordFlag = superPassword.equals(requestPassword);
if (superPasswordFlag && "admin".equals(employeeEntity.getLoginName())){
return ResponseDTO.userErrorParam("管理员万能密码已禁用!");
}
// 校验双因子登录 // 校验双因子登录
ResponseDTO<String> validateEmailCode = validateEmailCode(loginForm, employeeEntity, superPasswordFlag); ResponseDTO<String> validateEmailCode = validateEmailCode(loginForm, employeeEntity, superPasswordFlag);
if (!validateEmailCode.getOk()) { if (!validateEmailCode.getOk()) {
@ -259,6 +263,9 @@ public class LoginService implements StpInterface {
loginResultVO.setLicenseNumber(employeeService.getById(requestEmployee.getUserId()).getCertificateNumber()); loginResultVO.setLicenseNumber(employeeService.getById(requestEmployee.getUserId()).getCertificateNumber());
//承诺书签订状态 //承诺书签订状态
loginResultVO.setAgreementSignFlag(letterService.isLetter(requestEmployee.getEmployeeId())); loginResultVO.setAgreementSignFlag(letterService.isLetter(requestEmployee.getEmployeeId()));
//获取角色
List<RoleVO> roleIdList = roleEmployeeService.getRoleIdList(requestEmployee.getEmployeeId());
loginResultVO.setDataScopeView(dataScopeViewService.getOneByRoleId(roleIdList.get(0).getRoleId()));
return loginResultVO; return loginResultVO;
} }

1
yun-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java

@ -36,4 +36,5 @@ public interface RoleDataScopeDao extends BaseMapper<RoleDataScopeEntity> {
*/ */
void deleteByRoleId(@Param("roleId") Long roleId); void deleteByRoleId(@Param("roleId") Long roleId);
Integer getOneByRoleId(@Param("roleId") Long roleId);
} }

2
yun-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleEmployeeService.java

@ -149,6 +149,4 @@ public class RoleEmployeeService {
public List<RoleVO> getRoleIdList(Long employeeId) { public List<RoleVO> getRoleIdList(Long employeeId) {
return roleEmployeeDao.selectRoleByEmployeeId(employeeId); return roleEmployeeDao.selectRoleByEmployeeId(employeeId);
} }
} }

12
yun-admin/src/main/java/net/lab1024/sa/admin/util/DateTimeUtil.java

@ -34,15 +34,15 @@ public class DateTimeUtil {
startOfLastQuarter = LocalDate.of(year - 1, 10, 1); startOfLastQuarter = LocalDate.of(year - 1, 10, 1);
endOfLastQuarter = LocalDate.of(year - 1, 12, 31); endOfLastQuarter = LocalDate.of(year - 1, 12, 31);
} else if (month >= 4 && month <= 6) { } else if (month >= 4 && month <= 6) {
// 当前是第二季度,上个季度是上一年第一季度 // 当前是第二季度,上个季度是第一季度
startOfLastQuarter = LocalDate.of(year - 1, 1, 1);
endOfLastQuarter = LocalDate.of(year - 1, 3, 31);
} else if (month >= 7 && month <= 9) {
// 当前是第三季度,上个季度是本年第一季度
startOfLastQuarter = LocalDate.of(year, 1, 1); startOfLastQuarter = LocalDate.of(year, 1, 1);
endOfLastQuarter = LocalDate.of(year, 3, 31); endOfLastQuarter = LocalDate.of(year, 3, 31);
} else if (month >= 7 && month <= 9) {
// 当前是第三季度,上个季度是第二季度
startOfLastQuarter = LocalDate.of(year, 4, 1);
endOfLastQuarter = LocalDate.of(year, 6, 30);
} else { } else {
// 当前是第四季度,上个季度是本年第三季度 // 当前是第四季度,上个季度是第三季度
startOfLastQuarter = LocalDate.of(year, 7, 1); startOfLastQuarter = LocalDate.of(year, 7, 1);
endOfLastQuarter = LocalDate.of(year, 9, 30); endOfLastQuarter = LocalDate.of(year, 9, 30);
} }

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

@ -80,6 +80,12 @@
<if test="queryForm.activityNameId != null and queryForm.activityNameId != ''"> <if test="queryForm.activityNameId != null and queryForm.activityNameId != ''">
and activity_name_id = #{queryForm.activityNameId} and activity_name_id = #{queryForm.activityNameId}
</if> </if>
<if test="queryForm.employeeIdList != null and !queryForm.employeeIdList.isEmpty() ">
and user_id in
<foreach collection="queryForm.employeeIdList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</where> </where>
ORDER BY create_time DESC ORDER BY create_time DESC
</select> </select>
@ -117,6 +123,7 @@
LEFT JOIN t_employee e ON tsa.user_id = e.employee_id 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 t_department d ON tsa.firm_id = d.department_id
WHERE tsa.deleted_flag = 0 WHERE tsa.deleted_flag = 0
AND tsa.firm_audit_status = 3 <!-- PASS -->
GROUP BY tsa.user_id, tsa.certificate_number, e.actual_name GROUP BY tsa.user_id, tsa.certificate_number, e.actual_name
ORDER BY e.actual_name ORDER BY e.actual_name
</select> </select>
@ -133,6 +140,7 @@
LEFT JOIN t_department d ON tsa.firm_id = d.department_id LEFT JOIN t_department d ON tsa.firm_id = d.department_id
<where> <where>
tsa.deleted_flag = 0 tsa.deleted_flag = 0
AND tsa.firm_audit_status = 3 <!-- PASS -->
<if test="queryForm.startTime != null and queryForm.startTime != ''"> <if test="queryForm.startTime != null and queryForm.startTime != ''">
AND tsa.report_time &gt;= #{queryForm.startTime} AND tsa.report_time &gt;= #{queryForm.startTime}
</if> </if>
@ -164,6 +172,7 @@
LEFT JOIN t_department d ON tsa.firm_id = d.department_id LEFT JOIN t_department d ON tsa.firm_id = d.department_id
<where> <where>
tsa.deleted_flag = 0 tsa.deleted_flag = 0
AND tsa.firm_audit_status = 3
<if test="queryForm.startTime != null and queryForm.startTime != ''"> <if test="queryForm.startTime != null and queryForm.startTime != ''">
AND tsa.report_time &gt;= #{queryForm.startTime} AND tsa.report_time &gt;= #{queryForm.startTime}
</if> </if>
@ -193,6 +202,7 @@
LEFT JOIN t_employee e ON tsa.user_id = e.employee_id LEFT JOIN t_employee e ON tsa.user_id = e.employee_id
<where> <where>
tsa.deleted_flag = 0 tsa.deleted_flag = 0
AND tsa.firm_audit_status = 3
<if test="queryForm.startTime != null and queryForm.startTime != ''"> <if test="queryForm.startTime != null and queryForm.startTime != ''">
AND tsa.report_time &gt;= #{queryForm.startTime} AND tsa.report_time &gt;= #{queryForm.startTime}
</if> </if>
@ -204,5 +214,79 @@
</if> </if>
</where> </where>
</select> </select>
<select id="getdepartmentStatistics"
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.firm_audit_status = 3
<if test="queryForm.startTime != null and queryForm.startTime != ''">
AND tsa.report_time &gt;= #{queryForm.startTime}
</if>
<if test="queryForm.endTime != null and queryForm.endTime != ''">
AND tsa.report_time &lt;= #{queryForm.endTime}
</if>
<if test="queryForm.userId != null and queryForm.userId != ''">
and tsa.user_id = #{queryForm.userId}
</if>
<if test="queryForm.firmId != null and queryForm.firmId != ''">
and d.department_id = #{queryForm.firmId}
</if>
</where>
</select>
<select id="getdepartmentMothStatistic"
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 quarterlyServiceDuration
FROM t_service_applications tsa
LEFT JOIN t_department d ON tsa.firm_id = d.department_id
<where>
tsa.deleted_flag = 0
AND tsa.firm_audit_status = 3
<if test="queryForm.startTime != null and queryForm.startTime != ''">
AND tsa.report_time &gt;= #{queryForm.startTime}
</if>
<if test="queryForm.endTime != null and queryForm.endTime != ''">
AND tsa.report_time &lt;= #{queryForm.endTime}
</if>
<if test="queryForm.userId != null and queryForm.userId != ''">
and tsa.user_id = #{queryForm.userId}
</if>
<if test="queryForm.firmId != null and queryForm.firmId != ''">
and d.department_id = #{queryForm.firmId}
</if>
</where>
</select>
<select id="getDepartmentStatisticsWithParam"
resultType="net.lab1024.sa.admin.module.service.domain.form.ServiceDepartmentImportForm">
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.firm_audit_status = 3
<if test="queryForm.startTime != null and queryForm.startTime != ''">
AND tsa.report_time &gt;= #{queryForm.startTime}
</if>
<if test="queryForm.endTime != null and queryForm.endTime != ''">
AND tsa.report_time &lt;= #{queryForm.endTime}
</if>
<if test="queryForm.userId != null and queryForm.userId != ''">
and tsa.user_id = #{queryForm.userId}
</if>
<if test="queryForm.firmId != null and queryForm.firmId != ''">
and d.department_id = #{queryForm.firmId}
</if>
</where>
</select>
</mapper> </mapper>

6
yun-admin/src/main/resources/mapper/system/role/RoleDataScopeMapper.xml

@ -14,6 +14,12 @@
#{item} #{item}
</foreach> </foreach>
</select> </select>
<select id="getOneByRoleId" resultType="java.lang.Integer">
SELECT view_type
FROM t_role_data_scope
WHERE role_id = #{roleId}
LIMIT 1
</select>
<delete id="deleteByRoleId"> <delete id="deleteByRoleId">
DELETE FROM t_role_data_scope DELETE FROM t_role_data_scope

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

@ -8,7 +8,7 @@ public enum UserTypeEnum implements BaseEnum {
/** /**
* 管理端 员工用户 * 管理端 员工用户
*/ */
ADMIN_EMPLOYEE(1, "管理员"); ADMIN_EMPLOYEE(1, "员");
private Integer type; private Integer type;

Loading…
Cancel
Save