From 549bd8185345f45d9833d1d08fd66e7762ee5725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwangzihua=E2=80=9D?= Date: Mon, 12 Jan 2026 23:47:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=A1=A5=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FirmReportsController.java | 7 + .../admin/module/cost/dao/FirmReportsDao.java | 7 + .../domain/form/FirmReportsQueryForm.java | 5 + .../cost/service/FirmReportsService.java | 33 +++- .../ServiceApplicationsController.java | 15 +- .../service/dao/ServiceApplicationsDao.java | 10 +- .../form/LawyerStatisticsQueryFormList.java | 38 ++++ .../form/ServiceApplicationsQueryForm.java | 6 + .../form/ServiceApplicationsUpdateForm.java | 5 +- .../service/domain/vo/LawyerStatisticsVO.java | 7 +- .../domain/vo/ServiceReportStatisticsVO.java | 3 + .../service/ServiceApplicationsService.java | 168 +++++++++++------- .../lab1024/sa/admin/util/DateTimeUtil.java | 11 ++ .../mapper/cost/FirmReportsMapper.xml | 15 +- .../service/ServiceApplicationsMapper.xml | 125 ++++++++----- .../support/dict/service/DictService.java | 4 + 16 files changed, 342 insertions(+), 117 deletions(-) create mode 100644 yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/LawyerStatisticsQueryFormList.java diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/controller/FirmReportsController.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/controller/FirmReportsController.java index c07d08b..86fad5b 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/controller/FirmReportsController.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/controller/FirmReportsController.java @@ -69,4 +69,11 @@ public class FirmReportsController { public ResponseDTO batchDelete(@PathVariable Integer id) { return firmReportsService.delete(id); } + + //提交 + @Operation(summary = "提交 @author wzh") + @PostMapping("/firmReports/commit") + public ResponseDTO commit(@RequestBody ValidateList idList) { + return firmReportsService.commit(idList); + } } diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/dao/FirmReportsDao.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/dao/FirmReportsDao.java index fa44307..cead5ce 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/dao/FirmReportsDao.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/dao/FirmReportsDao.java @@ -6,6 +6,7 @@ import net.lab1024.sa.admin.module.cost.domain.form.FirmReportsQueryForm; import net.lab1024.sa.admin.module.cost.domain.vo.FirmReportsVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import net.lab1024.sa.base.common.domain.ValidateList; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -30,4 +31,10 @@ public interface FirmReportsDao extends BaseMapper { */ List queryPage(Page page, @Param("queryForm") FirmReportsQueryForm queryForm); + /** + * 批量提交 + * + * @param idList + */ + void commit(ValidateList idList); } diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/domain/form/FirmReportsQueryForm.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/domain/form/FirmReportsQueryForm.java index 9a017fb..678d7d0 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/domain/form/FirmReportsQueryForm.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/domain/form/FirmReportsQueryForm.java @@ -48,5 +48,10 @@ public class FirmReportsQueryForm extends PageParam { * 报表提交时间 */ private LocalDateTime submissionTime; + + /** + * 是否包含已提交的数据(审批状态 >= 3) + */ + private Boolean includeSubmitted; } diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/service/FirmReportsService.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/service/FirmReportsService.java index 36d22ff..82f84af 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/service/FirmReportsService.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/cost/service/FirmReportsService.java @@ -1,7 +1,6 @@ package net.lab1024.sa.admin.module.cost.service; import java.time.LocalDateTime; -import java.util.Date; import java.util.List; import net.lab1024.sa.admin.common.enums.ReviewEnum; @@ -12,8 +11,13 @@ import net.lab1024.sa.admin.module.cost.domain.form.FirmReportsQueryForm; import net.lab1024.sa.admin.module.cost.domain.form.FirmReportsUpdateForm; import net.lab1024.sa.admin.module.cost.domain.vo.FirmReportsVO; import net.lab1024.sa.admin.module.system.department.service.DepartmentService; +import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee; +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.util.AdminRequestUtil; -import net.lab1024.sa.admin.util.DateTimeUtil; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ValidateList; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; import net.lab1024.sa.base.common.util.SmartBeanUtil; import net.lab1024.sa.base.common.util.SmartPageUtil; import net.lab1024.sa.base.common.domain.ResponseDTO; @@ -42,11 +46,29 @@ public class FirmReportsService { private DictService dictService; @Resource private DepartmentService departmentService; + @Resource + private RoleEmployeeService roleEmployeeService; /** * 分页查询 */ public PageResult queryPage(FirmReportsQueryForm queryForm) { Page page = SmartPageUtil.convert2PageQuery(queryForm); + + // 检查当前用户是否为CEO角色 + RequestEmployee requestUser = AdminRequestUtil.getRequestUser(); + List roleIdList = roleEmployeeService.getRoleIdList(requestUser.getEmployeeId()); + String roleCode = roleIdList.get(0).getRoleCode(); + + // 检查角色类型 + boolean isCeo = UserTypeEnum.CEO.getDesc().equals(roleCode); + if (isCeo) { + // 如果是CEO角色,查询自己的数据和已经提交的数据(审批状态大于等于3的数据) + queryForm.setUserId(requestUser.getEmployeeId()); + queryForm.setIncludeSubmitted(true); // 设置查询参数以包括已提交的数据 + }else { + queryForm.setUserId(requestUser.getEmployeeId()); + } + List list = firmReportsDao.queryPage(page, queryForm); //查询字典值 @@ -110,4 +132,9 @@ public class FirmReportsService { firmReportsDao.deleteById(id); return ResponseDTO.ok(); } -} + + public ResponseDTO commit(ValidateList idList) { + firmReportsDao.commit(idList); + return ResponseDTO.ok(); + } +} \ No newline at end of file diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/controller/ServiceApplicationsController.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/controller/ServiceApplicationsController.java index 59c58f1..c7817ec 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/controller/ServiceApplicationsController.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/controller/ServiceApplicationsController.java @@ -139,7 +139,7 @@ public class ServiceApplicationsController { @Operation(summary = "律所统计信息 @author wzh") @PostMapping("/serviceApplications/statistics/department") //@SaCheckPermission("serviceApplications:statistics") - public ResponseDTO> getLawyerStatisticsByDepartment(@RequestBody @Valid LawyerStatisticsQueryForm queryForm) { + public ResponseDTO> getLawyerStatisticsByDepartment(@RequestBody @Valid LawyerStatisticsQueryFormList queryForm) { return ResponseDTO.ok(serviceApplicationsService.getLawyerStatisticsByDepartment(queryForm)); } @@ -162,4 +162,17 @@ public class ServiceApplicationsController { public ResponseDTO> getServiceReportStatistics(@RequestBody @Valid ServiceApplicationsQueryForm queryForm) { return ResponseDTO.ok(serviceApplicationsService.getServiceReportStatistics(queryForm)); } + + //统计当前机构的成本 + @Operation(summary = "统计当前机构的公益成本 @author wzh") + @PostMapping("/serviceApplications/statistics/cost") + public ResponseDTO getServiceApplicationsCost(@RequestBody ServiceLawyerQueryForm queryForm) { + return ResponseDTO.ok(serviceApplicationsService.getServiceApplicationsCost(queryForm)); + } + //部门id批量审核 + @Operation(summary = "部门id批量审核部门下数据 @author wzh") + @PostMapping("/serviceApplications/batchReviewByDepartmentId") + public ResponseDTO batchReviewByDepartmentId(@RequestBody @Valid ServiceApplicationsUpdateForm updateForm) { + return serviceApplicationsService.batchReviewByDepartmentId(updateForm); + } } diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/dao/ServiceApplicationsDao.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/dao/ServiceApplicationsDao.java index 4f797dc..812e2ad 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/dao/ServiceApplicationsDao.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/dao/ServiceApplicationsDao.java @@ -8,6 +8,7 @@ import net.lab1024.sa.admin.module.service.domain.vo.ServiceApplicationsVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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.ResponseDTO; import net.lab1024.sa.base.common.domain.ValidateList; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -54,7 +55,7 @@ public interface ServiceApplicationsDao extends BaseMapper idList, @Param("associationAuditStatus")Integer associationAuditStatus, @Param("userId")Long userId, @Param("submitTime")String submitTime); + void batchSubmitAsAssociation(@Param("idList")List idList, @Param("associationAuditStatus")Integer associationAuditStatus); /** * 律师统计查询(无参数,保持向后兼容) @@ -80,11 +81,10 @@ public interface ServiceApplicationsDao extends BaseMapper getdepartmentStatistics(Page page, @Param("queryForm") LawyerStatisticsQueryForm queryForm); + List getdepartmentStatistics(@Param("queryForm") LawyerStatisticsQueryForm queryForm); /** * 月度统计 @@ -117,4 +117,8 @@ public interface ServiceApplicationsDao extends BaseMapper getServiceReportStatistics(Page page, @Param("queryForm") ServiceApplicationsQueryForm queryForm); + + Long getServiceApplicationsCost(@Param("queryForm") ServiceLawyerQueryForm queryForm); + + void batchReviewByDepartmentId(@Param("queryForm") ServiceApplicationsUpdateForm updateForm); } \ No newline at end of file diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/LawyerStatisticsQueryFormList.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/LawyerStatisticsQueryFormList.java new file mode 100644 index 0000000..dcbdb32 --- /dev/null +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/LawyerStatisticsQueryFormList.java @@ -0,0 +1,38 @@ +package net.lab1024.sa.admin.module.service.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.domain.PageParam; + +/** + * 律师统计查询表单 + * + * @author wzh + */ +@Data +@Schema(description = "律师统计查询表单") +public class LawyerStatisticsQueryFormList{ + + @Schema(description = "季度,1,2,3,4") + private Integer quarter; + + @Schema(description = "年度,格式:yyyy") + private Integer year; + + @Schema(description = "律师姓名") + private String lawyerName; + + @Schema(description = "律所名称") + private String firmName; + + @Schema(description = "律所id") + private Long firmId; + + @Schema(description = "开始时间") + private String startTime; + + @Schema(description = "结束时间") + private String endTime; + + private Long userId; +} \ No newline at end of file diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsQueryForm.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsQueryForm.java index e5fa1ea..2ce4529 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsQueryForm.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsQueryForm.java @@ -185,4 +185,10 @@ public class ServiceApplicationsQueryForm extends PageParam { * 季度 */ private Integer quarter; + + @Schema(description = "开始时间") + private String startTime; + + @Schema(description = "结束时间") + private String endTime; } diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsUpdateForm.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsUpdateForm.java index 5e1d679..3b9d5f4 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsUpdateForm.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceApplicationsUpdateForm.java @@ -68,7 +68,10 @@ public class ServiceApplicationsUpdateForm{ @Schema(description = "协会审核状态") private Integer associationAuditStatus; - + @Schema(description = "协会审核时间") + private LocalDateTime associationAuditTime; + @Schema(description = "协会审核人") + private Long associationAuditUser; @Schema(description = "协会审核意见") private String associationAuditOpinion; diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/LawyerStatisticsVO.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/LawyerStatisticsVO.java index c43118a..e7b9ce3 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/LawyerStatisticsVO.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/LawyerStatisticsVO.java @@ -2,8 +2,10 @@ package net.lab1024.sa.admin.module.service.domain.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import net.lab1024.sa.admin.module.service.domain.form.ServiceLawyerImportForm; import java.math.BigDecimal; +import java.util.List; /** * 律师统计信息 VO @@ -21,7 +23,7 @@ public class LawyerStatisticsVO { private String lawyerName; @Schema(description = "律所id") - private String firmId; + private Long firmId; @Schema(description = "律所名称") private String firmName; @@ -40,4 +42,7 @@ public class LawyerStatisticsVO { @Schema(description = "年度累计服务成本") private BigDecimal annualServiceCost; + + @Schema(description = "律师服务信息列表") + private List lawyerServiceVOList; } \ No newline at end of file diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/ServiceReportStatisticsVO.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/ServiceReportStatisticsVO.java index f54f11b..73f754b 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/ServiceReportStatisticsVO.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/vo/ServiceReportStatisticsVO.java @@ -30,6 +30,9 @@ public class ServiceReportStatisticsVO { @Schema(description = "未审批") private Long pendingCount; + @Schema(description = "拒绝数") + private Long rejectCount = 0L; + @Schema(description = "总服务时长") private Double totalServiceDuration; } \ No newline at end of file diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java index 75fef37..0de284a 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java @@ -1,5 +1,6 @@ package net.lab1024.sa.admin.module.service.service; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.handler.SheetWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; @@ -42,6 +43,8 @@ import net.lab1024.sa.base.common.exception.BusinessException; import net.lab1024.sa.base.common.util.SmartBeanUtil; import net.lab1024.sa.base.common.util.SmartPageUtil; import net.lab1024.sa.base.common.util.SmartResponseUtil; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictEntity; +import net.lab1024.sa.base.module.support.dict.service.DictService; import org.apache.catalina.util.RequestUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.ss.usermodel.*; @@ -92,6 +95,8 @@ public class ServiceApplicationsService { private RoleEmployeeService roleEmployeeService; @Resource PositionService positionService; + @Resource + private DictService dictService; //查看详情 public ServiceApplicationsVO queryDetail(Long applicationId) { @@ -138,25 +143,7 @@ public class ServiceApplicationsService { if (isAssociationRole) { // 协会用户(CEO):可以看到所有律所提交的数据,但只显示associationAuditStatus为待审核(1)、通过(3)和拒绝(4)的数据和自己创建的数据 - Integer oneByRoleId = dataScopeViewService.getOneByRoleId(roleIdList.get(0).getRoleId()); - // 获取自己部门范围内的数据 - List 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为待审核、通过、拒绝的数据 + // CEO作为最高权限用户,不需要限制在特定部门范围内,直接设置includeAssociationReviewed即可 queryForm.setIncludeAssociationReviewed(true); } else if (isFirmAdminRole) { // 律所管理员(cto):能看到自己部门范围内的数据,但只显示firmAuditStatus为待审核、通过和拒绝的数据和自己创建的数据 @@ -193,7 +180,7 @@ public class ServiceApplicationsService { longs = new ArrayList<>(); } if (!longs.contains(requestUser.getUserId())) { - longs.remove(requestUser.getUserId()); + longs.add(requestUser.getUserId()); } queryForm.setEmployeeIdList(longs); // 普通用户不需要审核状态过滤,可以看到自己所有状态的数据 @@ -264,7 +251,7 @@ public class ServiceApplicationsService { ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(applicationId); // 检查当前用户角色是否为CEO - RequestUser requestUser = AdminRequestUtil.getRequestUser(); + /*RequestUser requestUser = AdminRequestUtil.getRequestUser(); List roles = roleEmployeeService.getRoleIdList(requestUser.getUserId()); if (!roles.isEmpty()) { String roleCode = roles.get(0).getRoleCode(); @@ -277,10 +264,10 @@ public class ServiceApplicationsService { serviceApplicationsEntity.setAssociationAuditUser(requestUser.getUserId()); serviceApplicationsEntity.setAssociationAuditTime(LocalDateTime.now()); } - }else { - serviceApplicationsEntity.setFirmAuditStatus(ReviewEnum.APPROVAL.getValue()); - serviceApplicationsEntity.setReportTime(LocalDateTime.now()); - } + }else {*/ + serviceApplicationsEntity.setFirmAuditStatus(ReviewEnum.APPROVAL.getValue()); + serviceApplicationsEntity.setReportTime(LocalDateTime.now()); + //} serviceApplicationsDao.updateById(serviceApplicationsEntity); return ResponseDTO.ok(); } @@ -503,27 +490,27 @@ public class ServiceApplicationsService { return ResponseDTO.ok(); } - RequestUser requestUser = AdminRequestUtil.getRequestUser(); + // RequestUser requestUser = AdminRequestUtil.getRequestUser(); // 查询用户角色是律所管理员,则修改律所的审核状态 // 如果是ceo则修改协会审核状态 - List roles = roleEmployeeService.getRoleIdList(requestUser.getUserId()); - if (roles.isEmpty()) { - return ResponseDTO.error(UserErrorCode.NO_PERMISSION); - } - - String roleCode = roles.get(0).getRoleCode(); + // List 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(); + // String reviewTime = LocalDateTime.now().toString(); // 根据不同角色执行不同的提交操作 - if (UserTypeEnum.CEO.getDesc().equals(roleCode)) { + // if (UserTypeEnum.CEO.getDesc().equals(roleCode)) { // CEO角色:修改协会审核状态 - serviceApplicationsDao.batchSubmitAsAssociation(idList, ReviewEnum.PASS.getValue(), requestUser.getUserId(), reviewTime); - } else { + //serviceApplicationsDao.batchSubmitAsAssociation(idList, ReviewEnum.PASS.getValue()); + // } else { // 其他角色(如律所管理员):修改律所审核状态 - serviceApplicationsDao.batchSubmitAsFirm(idList, ReviewEnum.REVIEW.getValue()); - } + serviceApplicationsDao.batchSubmitAsAssociation(idList, ReviewEnum.APPROVAL.getValue()); + // } return ResponseDTO.ok(); } @@ -572,23 +559,11 @@ public class ServiceApplicationsService { // 根据不同角色执行不同的审核操作 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()); - } + // CEO角色:修改协会审核状态 + serviceApplicationsEntity.setAssociationAuditStatus(updateForm.getAssociationAuditStatus()); + serviceApplicationsEntity.setAssociationAuditUser(requestUser.getEmployeeId()); + serviceApplicationsEntity.setAssociationAuditTime(LocalDateTime.now()); + serviceApplicationsEntity.setAssociationAuditOpinion(updateForm.getAssociationAuditOpinion()); } else { // 其他角色(如律所管理员):修改律所审核状态 serviceApplicationsEntity.setFirmAuditStatus(updateForm.getFirmAuditStatus()); @@ -602,12 +577,12 @@ public class ServiceApplicationsService { /** * 律所统计 - * @param queryForm + * @param queryForms * @return */ - public PageResult getLawyerStatisticsByDepartment(@Valid LawyerStatisticsQueryForm queryForm) { - Page page = SmartPageUtil.convert2PageQuery(queryForm); - + public List getLawyerStatisticsByDepartment(@Valid LawyerStatisticsQueryFormList queryForms) { + LawyerStatisticsQueryForm queryForm = new LawyerStatisticsQueryForm(); + BeanUtil.copyProperties(queryForms, queryForm); // 如果没有指定季度,则使用年度范围,否则使用季度范围 if (queryForm.getQuarter() == null) { // 如果用户指定了年份,则使用指定年份,否则使用当前年份 @@ -625,18 +600,24 @@ public class ServiceApplicationsService { queryForm.setEndTime(quarterEnd.toString()); } //统计 - List lawyerStatisticsWithParamYear = serviceApplicationsDao.getdepartmentStatistics(page, queryForm); - PageResult lawyerStatisticsVOPageResult = SmartPageUtil.convert2PageResult(page, lawyerStatisticsWithParamYear); - if (!lawyerStatisticsVOPageResult.getList().isEmpty()) { - monthStatisticsDepartment(queryForm, lawyerStatisticsVOPageResult.getList(),null); + List lawyerStatisticsWithParamYear = serviceApplicationsDao.getdepartmentStatistics(queryForm); + monthStatisticsDepartment(queryForm, lawyerStatisticsWithParamYear,null); + //查询这个部门下面律师的统计信息 + if (!lawyerStatisticsWithParamYear.isEmpty()) { + lawyerStatisticsWithParamYear.forEach(lawyerStatisticsVO -> { + ServiceLawyerQueryForm serviceLawyerQueryForm = new ServiceLawyerQueryForm(); + serviceLawyerQueryForm.setFirmId(lawyerStatisticsVO.getFirmId()); + List lawyerServiceVOList = serviceApplicationsDao.getLawyerStatisticsWithParam(serviceLawyerQueryForm); + lawyerStatisticsVO.setLawyerServiceVOList(lawyerServiceVOList); + }); } - return lawyerStatisticsVOPageResult; + return lawyerStatisticsWithParamYear; } public void exportLawyerByDepartment(ServiceLawyerQueryForm queryForm, HttpServletResponse response) { // 如果没有指定季度,则使用年度范围,否则使用季度范围 if (queryForm.getQuarter() == null) { - TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(); + TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(queryForm.getYear()); String yearStart = yearStartAndEnd.getStartTime(); String yearEnd = yearStartAndEnd.getEndTime(); queryForm.setStartTime(yearStart); @@ -691,6 +672,43 @@ public class ServiceApplicationsService { return ResponseDTO.ok(); } + /** + * 获取服务上报费用 + * @param queryForm + * @return + */ + public Long getServiceApplicationsCost(ServiceLawyerQueryForm queryForm) { + // 根据指定的季度设置时间范围 + LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter()); + LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter()); + queryForm.setStartTime(quarterStart.toString()); + queryForm.setEndTime(quarterEnd.toString()); + //获取多少小时 + Long time = serviceApplicationsDao.getServiceApplicationsCost(queryForm); + //获取字典表的设置 + DictEntity dictItem = dictService.getOne(3); + if (dictItem == null){ + return 0L; + } + + //除1w + if (time != null && time != 0L) { + Long timeCost = time * Long.valueOf(dictItem.getRemark()); + timeCost = timeCost / 10000; + return timeCost; + } + return 0l; + } + + public ResponseDTO batchReviewByDepartmentId(@Valid ServiceApplicationsUpdateForm updateForm) { + //根据部门id批量审核 + RequestEmployee requestUser = AdminRequestUtil.getRequestUser(); + updateForm.setAssociationAuditUser(requestUser.getEmployeeId()); + updateForm.setAssociationAuditTime(LocalDateTime.now()); + serviceApplicationsDao.batchReviewByDepartmentId(updateForm); + return ResponseDTO.ok(); + } + /** * Excel下拉列表处理器 */ @@ -922,7 +940,7 @@ public class ServiceApplicationsService { */ public PageResult getLawyerStatistics(LawyerStatisticsQueryForm queryForm) { Page page = SmartPageUtil.convert2PageQuery(queryForm); - TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(); + TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(queryForm.getYear()); //根据year拼接年度的开始时间和结束时间 String yearStart = yearStartAndEnd.getStartTime(); String yearEnd = yearStartAndEnd.getEndTime(); @@ -944,7 +962,7 @@ public class ServiceApplicationsService { public void exportLawyer(ServiceLawyerQueryForm queryForm, HttpServletResponse response) { // 如果没有指定季度,则使用年度范围,否则使用季度范围 if (queryForm.getQuarter() == null) { - TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(); + TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(queryForm.getYear()); String yearStart = yearStartAndEnd.getStartTime(); String yearEnd = yearStartAndEnd.getEndTime(); queryForm.setStartTime(yearStart); @@ -1118,6 +1136,22 @@ public class ServiceApplicationsService { */ public PageResult getServiceReportStatistics(ServiceApplicationsQueryForm 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 list = serviceApplicationsDao.getServiceReportStatistics(page, queryForm); return SmartPageUtil.convert2PageResult(page, list); } diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/util/DateTimeUtil.java b/yun-admin/src/main/java/net/lab1024/sa/admin/util/DateTimeUtil.java index e71bdbd..49b2ed4 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/util/DateTimeUtil.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/util/DateTimeUtil.java @@ -80,4 +80,15 @@ public class DateTimeUtil { timeVo.setYearEnd(endOfYear.toString()); return timeVo; } + /** + * 根据年度获取年度的开始时间和结束时间 + */ + public static TimeVo getYearStartAndEnd(Integer year) { + TimeVo timeVo = new TimeVo(); + LocalDate beginOfYear = LocalDate.of(year, 1, 1); + LocalDate endOfYear = LocalDate.of(year, 12, 31); + timeVo.setStartTime(beginOfYear.toString()); + timeVo.setEndTime(endOfYear.toString()); + return timeVo; + } } diff --git a/yun-admin/src/main/resources/mapper/cost/FirmReportsMapper.xml b/yun-admin/src/main/resources/mapper/cost/FirmReportsMapper.xml index aa87811..1df1fd7 100644 --- a/yun-admin/src/main/resources/mapper/cost/FirmReportsMapper.xml +++ b/yun-admin/src/main/resources/mapper/cost/FirmReportsMapper.xml @@ -20,6 +20,14 @@ t_firm_reports.update_time as updateTime, t_firm_reports.del_flag as delFlag + + UPDATE t_firm_reports + SET approval_status = 3 + WHERE id IN + + #{item} + + @@ -141,8 +155,8 @@ - update t_service_applications set - firm_audit_status = #{firmAuditStatus}, + update t_service_applications set + association_audit_status = #{firmAuditStatus}, firm_audit_user = #{userId}, firm_audit_time = #{submitTime}, report_time = NOW() @@ -154,10 +168,7 @@ update t_service_applications set - association_audit_status = #{associationAuditStatus}, - association_audit_user = #{userId}, - association_audit_time = #{submitTime}, - report_time = NOW() + association_audit_status = #{associationAuditStatus} where application_id in #{item} @@ -195,6 +206,13 @@ #{item} + + update t_service_applications set + association_audit_status = #{queryForm.associationAuditStatus}, + association_audit_user = #{queryForm.associationAuditUser}, + association_audit_time = #{queryForm.associationAuditTime} + where association_audit_status = 1 and firm_id = #{queryForm.firmId} + @@ -290,10 +314,10 @@ tsa.deleted_flag = 0 AND tsa.firm_audit_status = 3 - AND tsa.report_time >= #{queryForm.startTime} + AND tsa.firm_audit_time >= #{queryForm.startTime} - AND tsa.report_time <= #{queryForm.endTime} + AND tsa.firm_audit_time <= #{queryForm.endTime} and tsa.user_id = #{queryForm.userId} @@ -312,10 +336,10 @@ tsa.deleted_flag = 0 AND tsa.firm_audit_status = 3 - AND tsa.report_time >= #{queryForm.startTime} + AND tsa.association_audit_time >= #{queryForm.startTime} - AND tsa.report_time <= #{queryForm.endTime} + AND tsa.association_audit_time <= #{queryForm.endTime} and tsa.user_id = #{queryForm.userId} @@ -337,10 +361,10 @@ tsa.deleted_flag = 0 AND tsa.firm_audit_status = 3 - AND tsa.report_time >= #{queryForm.startTime} + AND tsa.association_audit_time >= #{queryForm.startTime} - AND tsa.report_time <= #{queryForm.endTime} + AND tsa.association_audit_time <= #{queryForm.endTime} and tsa.user_id = #{queryForm.userId} @@ -362,10 +386,10 @@ tsa.deleted_flag = 0 AND tsa.firm_audit_status = 3 - AND tsa.report_time >= #{queryForm.startTime} + AND tsa.association_audit_time >= #{queryForm.startTime} - AND tsa.report_time <= #{queryForm.endTime} + AND tsa.association_audit_time <= #{queryForm.endTime} and tsa.user_id = #{queryForm.userId} @@ -380,28 +404,49 @@ + \ No newline at end of file diff --git a/yun-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java b/yun-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java index df4c9f5..d88c96a 100644 --- a/yun-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java +++ b/yun-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java @@ -287,4 +287,8 @@ public class DictService { DictDataVO dictData = dictDataDao.selectByDictCodeAndValue(dictEntity.getDictId(), dataValue); return dictData == null ? "" : dictData.getDataLabel(); } + + public DictEntity getOne(int i) { + return dictDao.selectById(i); + } }