|
|
|
@ -1,10 +1,7 @@ |
|
|
|
package net.lab1024.sa.admin.module.service.service; |
|
|
|
|
|
|
|
import cn.idev.excel.FastExcel; |
|
|
|
import com.alibaba.excel.EasyExcel; |
|
|
|
import com.alibaba.excel.ExcelWriter; |
|
|
|
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.WriteWorkbookHolder; |
|
|
|
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.ServiceApplicationsTemplateVO; |
|
|
|
import net.lab1024.sa.admin.module.service.domain.vo.ServiceApplicationsVO; |
|
|
|
import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeViewTypeEnum; |
|
|
|
import net.lab1024.sa.admin.module.system.datascope.service.DataScopeViewService; |
|
|
|
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.employee.domain.entity.EmployeeEntity; |
|
|
|
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.CellStyleStrategy; |
|
|
|
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.RequestUser; |
|
|
|
import net.lab1024.sa.base.common.domain.ResponseDTO; |
|
|
|
@ -59,6 +62,8 @@ import java.util.List; |
|
|
|
import java.util.Objects; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 服务申报 Service |
|
|
|
* |
|
|
|
@ -75,21 +80,34 @@ public class ServiceApplicationsService { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private EmployeeService employeeService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private DepartmentService departmentService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private CategoryService categoryService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private GoodsService goodsService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private DataScopeViewService dataScopeViewService; |
|
|
|
@Resource |
|
|
|
private RoleEmployeeService roleEmployeeService; |
|
|
|
/** |
|
|
|
* 分页查询 |
|
|
|
*/ |
|
|
|
public PageResult<ServiceApplicationsVO> queryPage(ServiceApplicationsQueryForm queryForm) { |
|
|
|
List<Long> longs = new ArrayList<>(); |
|
|
|
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); |
|
|
|
if (!CollectionUtils.isEmpty(list)) { |
|
|
|
//翻译单位名称和用户名称
|
|
|
|
@ -100,6 +118,9 @@ public class ServiceApplicationsService { |
|
|
|
if (item.getUserId() != null){ |
|
|
|
item.setUserName(employeeService.queryById(item.getUserId()).getActualName()); |
|
|
|
} |
|
|
|
if (item.getFirmAuditUser() != null){ |
|
|
|
item.setFirmAuditUserName(employeeService.queryById(item.getUserId()).getActualName()); |
|
|
|
} |
|
|
|
if (item.getActivityCategoryId() != null) { |
|
|
|
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){ |
|
|
|
return ResponseDTO.ok(); |
|
|
|
} |
|
|
|
ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(applicationId); |
|
|
|
serviceApplicationsEntity.setFirmAuditStatus(ReviewEnum.APPROVAL.getValue()); |
|
|
|
|
|
|
|
serviceApplicationsEntity.setReportTime(LocalDateTime.now()); |
|
|
|
serviceApplicationsDao.updateById(serviceApplicationsEntity); |
|
|
|
return ResponseDTO.ok(); |
|
|
|
} |
|
|
|
/** |
|
|
|
* 批量删除 |
|
|
|
*/ |
|
|
|
public ResponseDTO<String> batchDelete(List<Integer> idList) { |
|
|
|
public ResponseDTO<String> batchDelete(List<Long> idList) { |
|
|
|
if (CollectionUtils.isEmpty(idList)){ |
|
|
|
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){ |
|
|
|
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)){ |
|
|
|
return ResponseDTO.ok(); |
|
|
|
} |
|
|
|
@ -352,6 +373,7 @@ public class ServiceApplicationsService { |
|
|
|
public ResponseDTO<String> addSubmit(@Valid ServiceApplicationsAddForm addForm) { |
|
|
|
ServiceApplicationsEntity serviceApplicationsEntity = SmartBeanUtil.copy(addForm, ServiceApplicationsEntity.class); |
|
|
|
serviceApplicationsEntity.setRecordStatus(ReviewEnum.APPROVAL.getValue()); |
|
|
|
serviceApplicationsEntity.setReportTime(LocalDateTime.now()); |
|
|
|
if (null == addForm.getApplicationId()){ |
|
|
|
serviceApplicationsDao.insert(serviceApplicationsEntity); |
|
|
|
}else { |
|
|
|
@ -362,12 +384,72 @@ public class ServiceApplicationsService { |
|
|
|
} |
|
|
|
|
|
|
|
public ResponseDTO<String> review(@Valid ServiceApplicationsUpdateForm updateForm) { |
|
|
|
RequestUser requestUser = AdminRequestUtil.getRequestUser(); |
|
|
|
ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao.selectById(updateForm.getApplicationId()); |
|
|
|
serviceApplicationsEntity.setFirmAuditStatus(updateForm.getFirmAuditStatus()); |
|
|
|
serviceApplicationsEntity.setFirmAuditUser(requestUser.getUserId()); |
|
|
|
serviceApplicationsEntity.setFirmAuditTime(LocalDateTime.now()); |
|
|
|
serviceApplicationsDao.updateById(serviceApplicationsEntity); |
|
|
|
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下拉列表处理器 |
|
|
|
*/ |
|
|
|
@ -599,10 +681,10 @@ public class ServiceApplicationsService { |
|
|
|
*/ |
|
|
|
public PageResult<LawyerStatisticsVO> getLawyerStatistics(LawyerStatisticsQueryForm queryForm) { |
|
|
|
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm); |
|
|
|
|
|
|
|
TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(); |
|
|
|
//根据year拼接年度的开始时间和结束时间
|
|
|
|
String yearStart = DateTimeUtil.getYearStartAndEnd().getStartTime(); |
|
|
|
String yearEnd = DateTimeUtil.getYearStartAndEnd().getEndTime(); |
|
|
|
String yearStart = yearStartAndEnd.getStartTime(); |
|
|
|
String yearEnd = yearStartAndEnd.getEndTime(); |
|
|
|
queryForm.setStartTime(yearStart); |
|
|
|
queryForm.setEndTime(yearEnd); |
|
|
|
//统计当前年度的
|
|
|
|
@ -619,11 +701,20 @@ public class ServiceApplicationsService { |
|
|
|
* @param queryForm |
|
|
|
*/ |
|
|
|
public void exportLawyer(ServiceLawyerQueryForm queryForm, HttpServletResponse response) { |
|
|
|
//根据year拼接年度的开始时间和结束时间
|
|
|
|
String yearStart = DateTimeUtil.getYearStartAndEnd().getStartTime(); |
|
|
|
String yearEnd = DateTimeUtil.getYearStartAndEnd().getEndTime(); |
|
|
|
queryForm.setStartTime(yearStart); |
|
|
|
queryForm.setEndTime(yearEnd); |
|
|
|
// 如果没有指定季度,则使用年度范围,否则使用季度范围
|
|
|
|
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<ServiceLawyerImportForm> lawyerStatisticsWithParamYear = serviceApplicationsDao.getLawyerStatisticsWithParam(queryForm); |
|
|
|
if (!lawyerStatisticsWithParamYear.isEmpty()) { |
|
|
|
LawyerStatisticsQueryForm queryForm1 = SmartBeanUtil.copy(queryForm, LawyerStatisticsQueryForm.class); |
|
|
|
@ -646,8 +737,9 @@ public class ServiceApplicationsService { |
|
|
|
LawyerStatisticsQueryForm queryForm = SmartBeanUtil.copy(originalQueryForm, LawyerStatisticsQueryForm.class); |
|
|
|
if (queryForm.getQuarter() == null) { |
|
|
|
//获取当前月份上一季度的开始时间和结束时间
|
|
|
|
String quarterStart = DateTimeUtil.getStartQuarter().getStartTime(); |
|
|
|
String quarterEnd = DateTimeUtil.getStartQuarter().getEndTime(); |
|
|
|
TimeVo startQuarter = DateTimeUtil.getStartQuarter(); |
|
|
|
String quarterStart = startQuarter.getStartTime(); |
|
|
|
String quarterEnd = startQuarter.getEndTime(); |
|
|
|
queryForm.setStartTime(quarterStart.toString()); |
|
|
|
queryForm.setEndTime(quarterEnd.toString()); |
|
|
|
} else{ |
|
|
|
@ -671,8 +763,9 @@ public class ServiceApplicationsService { |
|
|
|
LawyerStatisticsQueryForm queryForm = SmartBeanUtil.copy(originalQueryForm, LawyerStatisticsQueryForm.class); |
|
|
|
if (queryForm.getQuarter() == null) { |
|
|
|
//获取当前月份上一季度的开始时间和结束时间
|
|
|
|
String quarterStart = DateTimeUtil.getStartQuarter().getStartTime(); |
|
|
|
String quarterEnd = DateTimeUtil.getStartQuarter().getEndTime(); |
|
|
|
TimeVo startQuarter = DateTimeUtil.getStartQuarter(); |
|
|
|
String quarterStart = startQuarter.getStartTime(); |
|
|
|
String quarterEnd = startQuarter.getEndTime(); |
|
|
|
queryForm.setStartTime(quarterStart.toString()); |
|
|
|
queryForm.setEndTime(quarterEnd.toString()); |
|
|
|
} 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导出功能 |
|
|
|
* @param response HttpServletResponse |
|
|
|
|