|
|
@ -61,11 +61,9 @@ import java.io.FileOutputStream; |
|
|
import java.io.IOException; |
|
|
import java.io.IOException; |
|
|
import java.math.BigDecimal; |
|
|
import java.math.BigDecimal; |
|
|
import java.math.RoundingMode; |
|
|
import java.math.RoundingMode; |
|
|
import java.util.ArrayList; |
|
|
import java.util.*; |
|
|
import java.time.LocalDateTime; |
|
|
import java.time.LocalDateTime; |
|
|
import java.util.Arrays; |
|
|
import java.util.function.Function; |
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Objects; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -784,71 +782,148 @@ public class ServiceApplicationsService { |
|
|
public List<LawyerStatisticsVO> getLawyerStatisticsByDepartment(@Valid LawyerStatisticsQueryFormList queryForms) { |
|
|
public List<LawyerStatisticsVO> getLawyerStatisticsByDepartment(@Valid LawyerStatisticsQueryFormList queryForms) { |
|
|
LawyerStatisticsQueryForm queryForm = getQueryForm(queryForms); |
|
|
LawyerStatisticsQueryForm queryForm = getQueryForm(queryForms); |
|
|
DictEntity dictItem = dictService.getOne("FILECOST"); |
|
|
DictEntity dictItem = dictService.getOne("FILECOST"); |
|
|
//根据统计出律所的年度服务时长
|
|
|
|
|
|
List<LawyerStatisticsVO> lawyerStatisticsWithParamYear = serviceApplicationsDao.getdepartmentStatistics(queryForm); |
|
|
|
|
|
if (!lawyerStatisticsWithParamYear.isEmpty() && lawyerStatisticsWithParamYear.get(0).getFirmId() != null) { |
|
|
|
|
|
//律所季度服务时长和服务成本
|
|
|
|
|
|
monthStatisticsDepartment(queryForm, lawyerStatisticsWithParamYear,null); |
|
|
|
|
|
//查询这个部门下面律师的统计信息
|
|
|
|
|
|
lawyerStatisticsWithParamYear.forEach(lawyerStatisticsVO -> { |
|
|
|
|
|
ServiceLawyerQueryForm serviceLawyerQueryForm = new ServiceLawyerQueryForm(); |
|
|
|
|
|
serviceLawyerQueryForm.setFirmId(lawyerStatisticsVO.getFirmId()); |
|
|
|
|
|
//每个人的年度
|
|
|
|
|
|
List<ServiceLawyerImportForm> lawyerServiceVOList = serviceApplicationsDao.getLawyerStatisticsWithParam(serviceLawyerQueryForm); |
|
|
|
|
|
//每个人的季度
|
|
|
|
|
|
if (!lawyerServiceVOList.isEmpty() && queryForm.getQuarter() != null) { |
|
|
|
|
|
lawyerServiceVOList.forEach(lawyerServiceVO -> { |
|
|
|
|
|
BigDecimal annualDuration = BigDecimal.valueOf(lawyerServiceVO.getAnnualServiceDuration()); |
|
|
|
|
|
BigDecimal costRate = BigDecimal.valueOf(Long.valueOf(dictItem.getRemark())); |
|
|
|
|
|
lawyerServiceVO.setAnnualServiceCost(annualDuration.multiply(costRate)); |
|
|
|
|
|
|
|
|
|
|
|
//查詢每個律師季度服務信息
|
|
|
|
|
|
serviceLawyerQueryForm.setUserId(lawyerServiceVO.getUserId()); |
|
|
|
|
|
List<ServiceLawyerImportForm> lawyerImportForms = serviceApplicationsDao.getLawyerStatisticsByMonth(serviceLawyerQueryForm); |
|
|
|
|
|
|
|
|
|
|
|
if (lawyerImportForms != null && !lawyerImportForms.isEmpty() && lawyerImportForms.get(0) != null) { |
|
|
|
|
|
BigDecimal quarterlyDuration = BigDecimal.valueOf(lawyerImportForms.get(0).getQuarterlyServiceDuration()); |
|
|
|
|
|
lawyerServiceVO.setQuarterlyServiceCost(quarterlyDuration.multiply(costRate)); |
|
|
|
|
|
lawyerServiceVO.setQuarterlyServiceDuration(lawyerImportForms.get(0).getQuarterlyServiceDuration()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//查询amount类型的金额,然后添加到服务成本中
|
|
|
// 第一步:先查询年度统计数据(有条件)
|
|
|
queryForm.setUserId(lawyerServiceVO.getUserId()); |
|
|
LawyerStatisticsQueryForm annualQueryForm = new LawyerStatisticsQueryForm(); |
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(queryForm); |
|
|
annualQueryForm.setYear(queryForm.getYear()); |
|
|
|
|
|
// 如果指定了机构ID,则应用过滤条件
|
|
|
// 安全地添加季度服务成本
|
|
|
if (queryForm.getFirmId() != null) { |
|
|
BigDecimal currentQuarterlyCost = lawyerServiceVO.getQuarterlyServiceCost(); |
|
|
annualQueryForm.setFirmId(queryForm.getFirmId()); |
|
|
if (currentQuarterlyCost != null) { |
|
|
} |
|
|
lawyerServiceVO.setQuarterlyServiceCost(currentQuarterlyCost.add(amount)); |
|
|
// 设置年度时间范围
|
|
|
|
|
|
String yearStart = queryForm.getYear() + "-01-01"; |
|
|
|
|
|
String yearEnd = queryForm.getYear() + "-12-31"; |
|
|
|
|
|
annualQueryForm.setStartTime(yearStart); |
|
|
|
|
|
annualQueryForm.setEndTime(yearEnd); |
|
|
|
|
|
|
|
|
|
|
|
// 初始化季度时间变量
|
|
|
|
|
|
LocalDateTime quarterStart = null; |
|
|
|
|
|
LocalDateTime quarterEnd = null; |
|
|
|
|
|
|
|
|
|
|
|
List<LawyerStatisticsVO> annualStatistics = serviceApplicationsDao.getdepartmentStatistics(annualQueryForm); |
|
|
|
|
|
|
|
|
|
|
|
if (!annualStatistics.isEmpty()) { |
|
|
|
|
|
// 第二步:如果有季度条件,查询季度统计数据
|
|
|
|
|
|
List<LawyerStatisticsVO> quarterlyStatistics = new ArrayList<>(); |
|
|
|
|
|
if (queryForm.getQuarter() != null) { |
|
|
|
|
|
// 设置季度时间范围
|
|
|
|
|
|
quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
|
|
quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
|
|
annualQueryForm.setStartTime(quarterStart.toString()); |
|
|
|
|
|
annualQueryForm.setEndTime(quarterEnd.toString()); |
|
|
|
|
|
quarterlyStatistics = serviceApplicationsDao.getdepartmentStatistics(annualQueryForm); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 第三步:合并年度和季度数据
|
|
|
|
|
|
Map<Long, LawyerStatisticsVO> quarterlyMap = quarterlyStatistics.stream() |
|
|
|
|
|
.collect(Collectors.toMap(LawyerStatisticsVO::getFirmId, Function.identity())); |
|
|
|
|
|
|
|
|
|
|
|
for (LawyerStatisticsVO annualStat : annualStatistics) { |
|
|
|
|
|
// 计算年度成本
|
|
|
|
|
|
BigDecimal annualCost = BigDecimal.valueOf(annualStat.getAnnualServiceDuration() * Long.valueOf(dictItem.getRemark())); |
|
|
|
|
|
annualStat.setAnnualServiceCost(annualCost); |
|
|
|
|
|
|
|
|
|
|
|
// 查询amount类型的金额并添加到年度成本
|
|
|
|
|
|
LawyerStatisticsQueryForm amountQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
|
|
amountQueryForm.setFirmId(annualStat.getFirmId()); |
|
|
|
|
|
amountQueryForm.setStartTime(yearStart); |
|
|
|
|
|
amountQueryForm.setEndTime(yearEnd); |
|
|
|
|
|
BigDecimal annualAmount = serviceApplicationsDao.getServiceAmount(amountQueryForm); |
|
|
|
|
|
|
|
|
|
|
|
// 安全地添加年度特殊金额
|
|
|
|
|
|
BigDecimal currentAnnualCost = annualStat.getAnnualServiceCost(); |
|
|
|
|
|
if (currentAnnualCost != null) { |
|
|
|
|
|
annualStat.setAnnualServiceCost(currentAnnualCost.add(annualAmount != null ? annualAmount : BigDecimal.ZERO)); |
|
|
} else { |
|
|
} else { |
|
|
lawyerServiceVO.setQuarterlyServiceCost(amount); |
|
|
annualStat.setAnnualServiceCost(annualAmount != null ? annualAmount : BigDecimal.ZERO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 设置季度数据
|
|
|
|
|
|
LawyerStatisticsVO quarterlyStat = quarterlyMap.get(annualStat.getFirmId()); |
|
|
|
|
|
if (quarterlyStat != null && queryForm.getQuarter() != null) { |
|
|
|
|
|
annualStat.setQuarterlyServiceDuration(quarterlyStat.getAnnualServiceDuration()); |
|
|
|
|
|
BigDecimal quarterlyCost = BigDecimal.valueOf(quarterlyStat.getAnnualServiceDuration() * Long.valueOf(dictItem.getRemark())); |
|
|
|
|
|
annualStat.setQuarterlyServiceCost(quarterlyCost); |
|
|
|
|
|
// 修复:创建独立的季度金额查询表单,避免时间范围污染
|
|
|
|
|
|
LawyerStatisticsQueryForm quarterlyAmountQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
|
|
quarterlyAmountQueryForm.setFirmId(annualStat.getFirmId()); |
|
|
|
|
|
quarterlyAmountQueryForm.setStartTime(quarterStart.toString()); |
|
|
|
|
|
quarterlyAmountQueryForm.setEndTime(quarterEnd.toString()); |
|
|
|
|
|
BigDecimal quarterlyAmount = serviceApplicationsDao.getServiceAmount(quarterlyAmountQueryForm); |
|
|
|
|
|
annualStat.setQuarterlyServiceCost(annualStat.getQuarterlyServiceCost().add(quarterlyAmount != null ? quarterlyAmount : BigDecimal.ZERO)); |
|
|
|
|
|
} else { |
|
|
|
|
|
// 没有季度数据时设置默认值
|
|
|
|
|
|
annualStat.setQuarterlyServiceDuration(0.00); |
|
|
|
|
|
annualStat.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
} |
|
|
} |
|
|
}); |
|
|
|
|
|
}else { |
|
|
|
|
|
lawyerServiceVOList.forEach(lawyerServiceVO -> { |
|
|
|
|
|
BigDecimal annualDuration = BigDecimal.valueOf(lawyerServiceVO.getAnnualServiceDuration()); |
|
|
|
|
|
BigDecimal costRate = BigDecimal.valueOf(Long.valueOf(dictItem.getRemark())); |
|
|
|
|
|
lawyerServiceVO.setAnnualServiceCost(annualDuration.multiply(costRate)); |
|
|
|
|
|
|
|
|
|
|
|
//查询amount类型的金额,然后添加到服务成本中
|
|
|
// 查询律所下律师的详细统计信息
|
|
|
queryForm.setUserId(lawyerServiceVO.getUserId()); |
|
|
ServiceLawyerQueryForm serviceLawyerQueryForm = new ServiceLawyerQueryForm(); |
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(queryForm); |
|
|
serviceLawyerQueryForm.setFirmId(annualStat.getFirmId()); |
|
|
|
|
|
serviceLawyerQueryForm.setYear(queryForm.getYear()); |
|
|
|
|
|
|
|
|
|
|
|
// 设置律师年度统计时间范围
|
|
|
|
|
|
serviceLawyerQueryForm.setStartTime(yearStart); |
|
|
|
|
|
serviceLawyerQueryForm.setEndTime(yearEnd); |
|
|
|
|
|
List<ServiceLawyerImportForm> lawyerAnnualStats = serviceApplicationsDao.getLawyerStatisticsWithParam(serviceLawyerQueryForm); |
|
|
|
|
|
|
|
|
|
|
|
// 处理律师季度统计
|
|
|
|
|
|
List<ServiceLawyerImportForm> lawyerQuarterlyStats = new ArrayList<>(); |
|
|
|
|
|
if (queryForm.getQuarter() != null) { |
|
|
|
|
|
// 为律师季度统计创建独立的查询表单,使用季度时间范围
|
|
|
|
|
|
ServiceLawyerQueryForm lawyerQuarterlyQueryForm = new ServiceLawyerQueryForm(); |
|
|
|
|
|
lawyerQuarterlyQueryForm.setFirmId(annualStat.getFirmId()); |
|
|
|
|
|
lawyerQuarterlyQueryForm.setYear(queryForm.getYear()); |
|
|
|
|
|
lawyerQuarterlyQueryForm.setStartTime(quarterStart.toString()); |
|
|
|
|
|
lawyerQuarterlyQueryForm.setEndTime(quarterEnd.toString()); |
|
|
|
|
|
lawyerQuarterlyStats = serviceApplicationsDao.getLawyerStatisticsWithParam(lawyerQuarterlyQueryForm); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 合并律师年度和季度数据
|
|
|
|
|
|
Map<Long, ServiceLawyerImportForm> lawyerQuarterlyMap = lawyerQuarterlyStats.stream() |
|
|
|
|
|
.collect(Collectors.toMap(ServiceLawyerImportForm::getUserId, Function.identity())); |
|
|
|
|
|
|
|
|
|
|
|
for (ServiceLawyerImportForm lawyerAnnual : lawyerAnnualStats) { |
|
|
|
|
|
// 计算律师年度成本
|
|
|
|
|
|
BigDecimal lawyerAnnualCost = BigDecimal.valueOf(lawyerAnnual.getAnnualServiceDuration() * Long.valueOf(dictItem.getRemark())); |
|
|
|
|
|
lawyerAnnual.setAnnualServiceCost(lawyerAnnualCost); |
|
|
|
|
|
|
|
|
|
|
|
// 查询律师年度amount类型金额
|
|
|
|
|
|
LawyerStatisticsQueryForm lawyerAmountQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
|
|
lawyerAmountQueryForm.setUserId(lawyerAnnual.getUserId()); |
|
|
|
|
|
lawyerAmountQueryForm.setStartTime(yearStart); |
|
|
|
|
|
lawyerAmountQueryForm.setEndTime(yearEnd); |
|
|
|
|
|
BigDecimal lawyerAnnualAmount = serviceApplicationsDao.getServiceAmount(lawyerAmountQueryForm); |
|
|
|
|
|
|
|
|
|
|
|
// 安全地添加律师年度特殊金额
|
|
|
|
|
|
BigDecimal currentLawyerAnnualCost = lawyerAnnual.getAnnualServiceCost(); |
|
|
|
|
|
if (currentLawyerAnnualCost != null) { |
|
|
|
|
|
lawyerAnnual.setAnnualServiceCost(currentLawyerAnnualCost.add(lawyerAnnualAmount != null ? lawyerAnnualAmount : BigDecimal.ZERO)); |
|
|
|
|
|
} else { |
|
|
|
|
|
lawyerAnnual.setAnnualServiceCost(lawyerAnnualAmount != null ? lawyerAnnualAmount : BigDecimal.ZERO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 安全地添加年度服务成本
|
|
|
// 设置律师季度数据
|
|
|
BigDecimal currentAnnualCost = lawyerServiceVO.getAnnualServiceCost(); |
|
|
ServiceLawyerImportForm lawyerQuarterly = lawyerQuarterlyMap.get(lawyerAnnual.getUserId()); |
|
|
if (currentAnnualCost != null) { |
|
|
if (lawyerQuarterly != null && queryForm.getQuarter() != null) { |
|
|
lawyerServiceVO.setAnnualServiceCost(currentAnnualCost.add(amount)); |
|
|
lawyerAnnual.setQuarterlyServiceDuration(lawyerQuarterly.getAnnualServiceDuration()); |
|
|
|
|
|
BigDecimal lawyerQuarterlyCost = BigDecimal.valueOf(lawyerQuarterly.getAnnualServiceDuration() * Long.valueOf(dictItem.getRemark())); |
|
|
|
|
|
lawyerAnnual.setQuarterlyServiceCost(lawyerQuarterlyCost); |
|
|
|
|
|
BigDecimal lawyerQuarterlyAmount = serviceApplicationsDao.getServiceAmount(annualQueryForm); |
|
|
|
|
|
lawyerAnnual.setQuarterlyServiceCost(lawyerAnnual.getQuarterlyServiceCost().add(lawyerQuarterlyAmount != null ? lawyerQuarterlyAmount : BigDecimal.ZERO)); |
|
|
} else { |
|
|
} else { |
|
|
lawyerServiceVO.setAnnualServiceCost(amount); |
|
|
lawyerAnnual.setQuarterlyServiceDuration(0.0); |
|
|
|
|
|
lawyerAnnual.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
} |
|
|
} |
|
|
}); |
|
|
|
|
|
} |
|
|
} |
|
|
lawyerStatisticsVO.setLawyerServiceVOList(lawyerServiceVOList); |
|
|
|
|
|
}); |
|
|
annualStat.setLawyerServiceVOList(lawyerAnnualStats); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//屏蔽成本数据
|
|
|
//屏蔽成本数据
|
|
|
maskCostDataForUser(lawyerStatisticsWithParamYear); |
|
|
maskCostDataForUser(annualStatistics); |
|
|
return lawyerStatisticsWithParamYear; |
|
|
return annualStatistics; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -1297,11 +1372,9 @@ public class ServiceApplicationsService { |
|
|
String yearEnd = yearStartAndEnd.getEndTime(); |
|
|
String yearEnd = yearStartAndEnd.getEndTime(); |
|
|
queryForm.setStartTime(yearStart); |
|
|
queryForm.setStartTime(yearStart); |
|
|
queryForm.setEndTime(yearEnd); |
|
|
queryForm.setEndTime(yearEnd); |
|
|
if (UserTypeEnum.USER.getDesc().equals(roleList.getRoleCode())){ |
|
|
if (UserTypeEnum.CTO.getDesc().equals(roleList.getRoleCode())){ |
|
|
queryForm.setUserId(requestUser.getEmployeeId()); |
|
|
|
|
|
}else if (UserTypeEnum.CTO.getDesc().equals(roleList.getRoleCode())){ |
|
|
|
|
|
queryForm.setUserId(null); |
|
|
|
|
|
queryForm.setFirmId(requestUser.getDepartmentId()); |
|
|
queryForm.setFirmId(requestUser.getDepartmentId()); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
//统计当前年度的
|
|
|
//统计当前年度的
|
|
|
List<LawyerStatisticsVO> lawyerStatisticsWithParamYear = serviceApplicationsDao.getLawyerStatisticsWithParamYear(page, queryForm); |
|
|
List<LawyerStatisticsVO> lawyerStatisticsWithParamYear = serviceApplicationsDao.getLawyerStatisticsWithParamYear(page, queryForm); |
|
|
@ -1313,8 +1386,39 @@ public class ServiceApplicationsService { |
|
|
queryForm.setUserId(statisticsVO.getUserId()); |
|
|
queryForm.setUserId(statisticsVO.getUserId()); |
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(queryForm); |
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(queryForm); |
|
|
statisticsVO.setAnnualServiceCost(statisticsVO.getAnnualServiceCost().add(amount)); |
|
|
statisticsVO.setAnnualServiceCost(statisticsVO.getAnnualServiceCost().add(amount)); |
|
|
|
|
|
|
|
|
|
|
|
// 直接为每个律师查询季度数据
|
|
|
|
|
|
LawyerStatisticsQueryForm quarterQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
|
|
quarterQueryForm.setYear(queryForm.getYear()); |
|
|
|
|
|
quarterQueryForm.setQuarter(queryForm.getQuarter()); |
|
|
|
|
|
quarterQueryForm.setUserId(statisticsVO.getUserId()); |
|
|
|
|
|
|
|
|
|
|
|
// 设置季度时间范围
|
|
|
|
|
|
if (quarterQueryForm.getQuarter() == null) { |
|
|
|
|
|
TimeVo startQuarter = DateTimeUtil.getStartQuarter(); |
|
|
|
|
|
quarterQueryForm.setStartTime(startQuarter.getStartTime()); |
|
|
|
|
|
quarterQueryForm.setEndTime(startQuarter.getEndTime()); |
|
|
|
|
|
} else { |
|
|
|
|
|
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(quarterQueryForm.getYear(), quarterQueryForm.getQuarter()); |
|
|
|
|
|
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(quarterQueryForm.getYear(), quarterQueryForm.getQuarter()); |
|
|
|
|
|
quarterQueryForm.setStartTime(quarterStart.toString()); |
|
|
|
|
|
quarterQueryForm.setEndTime(quarterEnd.toString()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 查询该律师的季度数据
|
|
|
|
|
|
LawyerStatisticsVO quarterData = serviceApplicationsDao.getLawyerStatistic(quarterQueryForm); |
|
|
|
|
|
if (quarterData != null && quarterData.getQuarterlyServiceDuration() != null) { |
|
|
|
|
|
statisticsVO.setQuarterlyServiceDuration(quarterData.getQuarterlyServiceDuration()); |
|
|
|
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.valueOf(quarterData.getQuarterlyServiceDuration() * Long.valueOf(one.getRemark()))); |
|
|
|
|
|
// 统计金额
|
|
|
|
|
|
BigDecimal quarterAmount = serviceApplicationsDao.getServiceAmount(quarterQueryForm); |
|
|
|
|
|
statisticsVO.setQuarterlyServiceCost(statisticsVO.getQuarterlyServiceCost().add(quarterAmount)); |
|
|
|
|
|
} else { |
|
|
|
|
|
// 如果没有季度数据,设置季度成本为0
|
|
|
|
|
|
statisticsVO.setQuarterlyServiceDuration(0.0); |
|
|
|
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
monthStatistics(queryForm, lawyerStatisticsVOPageResult.getList(),null); |
|
|
|
|
|
} |
|
|
} |
|
|
// 根据用户权限控制成本数据显示
|
|
|
// 根据用户权限控制成本数据显示
|
|
|
maskCostDataForUser(lawyerStatisticsVOPageResult.getList()); |
|
|
maskCostDataForUser(lawyerStatisticsVOPageResult.getList()); |
|
|
@ -1328,112 +1432,103 @@ public class ServiceApplicationsService { |
|
|
public void exportLawyer(ServiceLawyerQueryForm queryForm, HttpServletResponse response) { |
|
|
public void exportLawyer(ServiceLawyerQueryForm queryForm, HttpServletResponse response) { |
|
|
RequestEmployee requestUser = AdminRequestUtil.getRequestUser(); |
|
|
RequestEmployee requestUser = AdminRequestUtil.getRequestUser(); |
|
|
RoleVO roleList = roleEmployeeService.getRoleIdList(requestUser.getEmployeeId()).get(0); |
|
|
RoleVO roleList = roleEmployeeService.getRoleIdList(requestUser.getEmployeeId()).get(0); |
|
|
if (UserTypeEnum.USER.getDesc().equals(roleList.getRoleCode())){ |
|
|
|
|
|
queryForm.setUserId(requestUser.getEmployeeId()); |
|
|
// 应用权限控制和查询条件
|
|
|
}else if (UserTypeEnum.CTO.getDesc().equals(roleList.getRoleCode())){ |
|
|
if (UserTypeEnum.CTO.getDesc().equals(roleList.getRoleCode())){ |
|
|
|
|
|
// 律所只能查看自己的部门的数据
|
|
|
queryForm.setFirmId(requestUser.getDepartmentId()); |
|
|
queryForm.setFirmId(requestUser.getDepartmentId()); |
|
|
} |
|
|
} |
|
|
|
|
|
// 管理员可以看到所有数据,但仍应尊重用户指定的查询条件
|
|
|
DictEntity one = dictService.getOne("FILECOST"); |
|
|
DictEntity one = dictService.getOne("FILECOST"); |
|
|
// 如果没有指定季度,则使用年度范围,否则使用季度范围
|
|
|
|
|
|
|
|
|
// 保存原始的查询条件,用于年度数据查询
|
|
|
|
|
|
ServiceLawyerQueryForm annualQueryForm = SmartBeanUtil.copy(queryForm, ServiceLawyerQueryForm.class); |
|
|
|
|
|
|
|
|
|
|
|
// 如果没有指定季度,则使用年度范围,否则使用季度范围(仅用于季度数据查询)
|
|
|
if (queryForm.getQuarter() == null) { |
|
|
if (queryForm.getQuarter() == null) { |
|
|
TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(queryForm.getYear()); |
|
|
TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(queryForm.getYear()); |
|
|
String yearStart = yearStartAndEnd.getStartTime(); |
|
|
String yearStart = yearStartAndEnd.getStartTime(); |
|
|
String yearEnd = yearStartAndEnd.getEndTime(); |
|
|
String yearEnd = yearStartAndEnd.getEndTime(); |
|
|
queryForm.setStartTime(yearStart); |
|
|
queryForm.setStartTime(yearStart); |
|
|
queryForm.setEndTime(yearEnd); |
|
|
queryForm.setEndTime(yearEnd); |
|
|
|
|
|
|
|
|
|
|
|
annualQueryForm.setStartTime(yearStart); |
|
|
|
|
|
annualQueryForm.setEndTime(yearEnd); |
|
|
} else { |
|
|
} else { |
|
|
// 根据指定的季度设置时间范围
|
|
|
// 根据指定的季度设置时间范围(仅用于季度数据查询)
|
|
|
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter()); |
|
|
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter()); |
|
|
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter()); |
|
|
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter()); |
|
|
queryForm.setStartTime(quarterStart.toString()); |
|
|
queryForm.setStartTime(quarterStart.toString()); |
|
|
queryForm.setEndTime(quarterEnd.toString()); |
|
|
queryForm.setEndTime(quarterEnd.toString()); |
|
|
|
|
|
// 年度数据查询仍使用完整年度范围
|
|
|
|
|
|
TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(queryForm.getYear()); |
|
|
|
|
|
annualQueryForm.setStartTime(yearStartAndEnd.getStartTime()); |
|
|
|
|
|
annualQueryForm.setEndTime(yearStartAndEnd.getEndTime()); |
|
|
|
|
|
annualQueryForm.setQuarter(null); |
|
|
} |
|
|
} |
|
|
//律师年度
|
|
|
//律师年度数据查询使用完整的年度范围
|
|
|
List<ServiceLawyerImportForm> lawyerStatisticsWithParamYear = serviceApplicationsDao.getLawyerStatisticsWithParam(queryForm); |
|
|
List<ServiceLawyerImportForm> lawyerStatisticsWithParamYear = serviceApplicationsDao.getLawyerStatisticsWithParam(annualQueryForm); |
|
|
if (!lawyerStatisticsWithParamYear.isEmpty()) { |
|
|
if (!lawyerStatisticsWithParamYear.isEmpty()) { |
|
|
for (ServiceLawyerImportForm serviceLawyerImportForm : lawyerStatisticsWithParamYear) { |
|
|
for (ServiceLawyerImportForm serviceLawyerImportForm : lawyerStatisticsWithParamYear) { |
|
|
serviceLawyerImportForm.setAnnualServiceCost(BigDecimal.valueOf(serviceLawyerImportForm.getAnnualServiceDuration() * Long.valueOf(one.getRemark()))); |
|
|
serviceLawyerImportForm.setAnnualServiceCost(BigDecimal.valueOf(serviceLawyerImportForm.getAnnualServiceDuration() * Long.valueOf(one.getRemark()))); |
|
|
} |
|
|
|
|
|
LawyerStatisticsQueryForm queryForm1 = SmartBeanUtil.copy(queryForm, LawyerStatisticsQueryForm.class); |
|
|
|
|
|
monthStatistics(queryForm1, null, lawyerStatisticsWithParamYear); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
maskCostDataForExport(lawyerStatisticsWithParamYear); |
|
|
// 查询该律师的年度特殊金额
|
|
|
//写入数据到文件
|
|
|
LawyerStatisticsQueryForm annualAmountQueryForm = new LawyerStatisticsQueryForm(); |
|
|
exportExcel(response, "律师统计信息.xlsx", "律师统计信息", ServiceLawyerImportForm.class, lawyerStatisticsWithParamYear); |
|
|
annualAmountQueryForm.setYear(queryForm.getYear()); |
|
|
|
|
|
annualAmountQueryForm.setUserId(serviceLawyerImportForm.getUserId()); |
|
|
|
|
|
// 年度金额使用完整年度范围
|
|
|
|
|
|
TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(queryForm.getYear()); |
|
|
|
|
|
annualAmountQueryForm.setStartTime(yearStartAndEnd.getStartTime()); |
|
|
|
|
|
annualAmountQueryForm.setEndTime(yearStartAndEnd.getEndTime()); |
|
|
|
|
|
|
|
|
|
|
|
// 添加年度特殊金额
|
|
|
|
|
|
BigDecimal annualAmount = serviceApplicationsDao.getServiceAmount(annualAmountQueryForm); |
|
|
|
|
|
if (annualAmount != null) { |
|
|
|
|
|
serviceLawyerImportForm.setAnnualServiceCost(serviceLawyerImportForm.getAnnualServiceCost().add(annualAmount)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 直接为每个律师查询季度数据
|
|
|
|
|
|
LawyerStatisticsQueryForm quarterQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
|
|
quarterQueryForm.setYear(queryForm.getYear()); |
|
|
|
|
|
quarterQueryForm.setQuarter(queryForm.getQuarter()); |
|
|
|
|
|
quarterQueryForm.setUserId(serviceLawyerImportForm.getUserId()); |
|
|
|
|
|
|
|
|
/** |
|
|
// 设置季度时间范围
|
|
|
* 统计月度的工作时长 |
|
|
if (quarterQueryForm.getQuarter() == null) { |
|
|
* @param originalQueryForm |
|
|
|
|
|
* @param lawyerStatisticsVOPageResult |
|
|
|
|
|
*/ |
|
|
|
|
|
public void monthStatistics(LawyerStatisticsQueryForm originalQueryForm, List<LawyerStatisticsVO> lawyerStatisticsVOPageResult,List<ServiceLawyerImportForm> lawyerStatisticsWithParamYear) { |
|
|
|
|
|
DictEntity one = dictService.getOne("FILECOST"); |
|
|
|
|
|
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.toString()); |
|
|
|
|
|
queryForm.setEndTime(quarterEnd.toString()); |
|
|
|
|
|
} 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.getLawyerStatistic(queryForm); |
|
|
|
|
|
if (quarterStatisticsVO != null && quarterStatisticsVO.getQuarterlyServiceDuration() != null) { |
|
|
|
|
|
statisticsVO.setQuarterlyServiceDuration(quarterStatisticsVO.getQuarterlyServiceDuration()); |
|
|
|
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.valueOf(quarterStatisticsVO.getQuarterlyServiceDuration() * Long.valueOf(one.getRemark()))); |
|
|
|
|
|
//统计金额
|
|
|
|
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(queryForm); |
|
|
|
|
|
statisticsVO.setQuarterlyServiceCost(statisticsVO.getQuarterlyServiceCost().add(amount)); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}else if (lawyerStatisticsWithParamYear != null) { |
|
|
|
|
|
for (ServiceLawyerImportForm statisticsVO : lawyerStatisticsWithParamYear) { |
|
|
|
|
|
// 创建新的查询表单对象以避免修改原始对象
|
|
|
|
|
|
LawyerStatisticsQueryForm queryForm = SmartBeanUtil.copy(originalQueryForm, LawyerStatisticsQueryForm.class); |
|
|
|
|
|
if (queryForm.getQuarter() == null) { |
|
|
|
|
|
//获取当前月份上一季度的开始时间和结束时间
|
|
|
|
|
|
TimeVo startQuarter = DateTimeUtil.getStartQuarter(); |
|
|
TimeVo startQuarter = DateTimeUtil.getStartQuarter(); |
|
|
String quarterStart = startQuarter.getStartTime(); |
|
|
quarterQueryForm.setStartTime(startQuarter.getStartTime()); |
|
|
String quarterEnd = startQuarter.getEndTime(); |
|
|
quarterQueryForm.setEndTime(startQuarter.getEndTime()); |
|
|
queryForm.setStartTime(quarterStart.toString()); |
|
|
} else { |
|
|
queryForm.setEndTime(quarterEnd.toString()); |
|
|
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(quarterQueryForm.getYear(), quarterQueryForm.getQuarter()); |
|
|
} else{ |
|
|
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(quarterQueryForm.getYear(), quarterQueryForm.getQuarter()); |
|
|
//根据季度获取季度的开发时间和
|
|
|
quarterQueryForm.setStartTime(quarterStart.toString()); |
|
|
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter()); |
|
|
quarterQueryForm.setEndTime(quarterEnd.toString()); |
|
|
//结束时间
|
|
|
} |
|
|
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
|
|
queryForm.setStartTime(quarterStart.toString()); |
|
|
// 查询该律师的季度数据
|
|
|
queryForm.setEndTime(quarterEnd.toString()); |
|
|
LawyerStatisticsVO quarterData = serviceApplicationsDao.getLawyerStatistic(quarterQueryForm); |
|
|
|
|
|
if (quarterData != null && quarterData.getQuarterlyServiceDuration() != null) { |
|
|
|
|
|
serviceLawyerImportForm.setQuarterlyServiceDuration(quarterData.getQuarterlyServiceDuration()); |
|
|
|
|
|
serviceLawyerImportForm.setQuarterlyServiceCost(BigDecimal.valueOf(quarterData.getQuarterlyServiceDuration() * Long.valueOf(one.getRemark()))); |
|
|
|
|
|
// 统计季度特殊金额
|
|
|
|
|
|
BigDecimal quarterAmount = serviceApplicationsDao.getServiceAmount(quarterQueryForm); |
|
|
|
|
|
if (quarterAmount != null) { |
|
|
|
|
|
serviceLawyerImportForm.setQuarterlyServiceCost(serviceLawyerImportForm.getQuarterlyServiceCost().add(quarterAmount)); |
|
|
} |
|
|
} |
|
|
queryForm.setUserId(statisticsVO.getUserId()); |
|
|
} else { |
|
|
//季度服务时间范围
|
|
|
// 如果没有季度数据,设置季度成本为0
|
|
|
LawyerStatisticsVO quarterStatisticsVO = serviceApplicationsDao.getLawyerStatistic(queryForm); |
|
|
serviceLawyerImportForm.setQuarterlyServiceDuration(0.0); |
|
|
if (quarterStatisticsVO != null && quarterStatisticsVO.getQuarterlyServiceDuration() != null) { |
|
|
serviceLawyerImportForm.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
statisticsVO.setQuarterlyServiceDuration(quarterStatisticsVO.getQuarterlyServiceDuration()); |
|
|
|
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.valueOf(quarterStatisticsVO.getQuarterlyServiceDuration() * Long.valueOf(one.getRemark()))); |
|
|
|
|
|
//统计金额
|
|
|
|
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(queryForm); |
|
|
|
|
|
statisticsVO.setQuarterlyServiceCost(statisticsVO.getQuarterlyServiceCost().add(amount)); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
maskCostDataForExport(lawyerStatisticsWithParamYear); |
|
|
|
|
|
//写入数据到文件
|
|
|
|
|
|
exportExcel(response, "律师统计信息.xlsx", "律师统计信息", ServiceLawyerImportForm.class, lawyerStatisticsWithParamYear); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void monthStatisticsDepartment(LawyerStatisticsQueryForm originalQueryForm, List<LawyerStatisticsVO> lawyerStatisticsVOPageResult,List<ServiceDepartmentImportForm> lawyerStatisticsWithParamYear) { |
|
|
public void monthStatisticsDepartment(LawyerStatisticsQueryForm originalQueryForm, List<LawyerStatisticsVO> lawyerStatisticsVOPageResult,List<ServiceDepartmentImportForm> lawyerStatisticsWithParamYear) { |
|
|
DictEntity dictItem = dictService.getOne("FILECOST"); |
|
|
DictEntity dictItem = dictService.getOne("FILECOST"); |
|
|
if (lawyerStatisticsVOPageResult != null) { |
|
|
if (lawyerStatisticsVOPageResult != null) { |
|
|
@ -1467,6 +1562,10 @@ public class ServiceApplicationsService { |
|
|
statisticsVO.setQuarterlyServiceDuration(quarterStatisticsVO.getQuarterlyServiceDuration()); |
|
|
statisticsVO.setQuarterlyServiceDuration(quarterStatisticsVO.getQuarterlyServiceDuration()); |
|
|
//计算季度累计服务成本
|
|
|
//计算季度累计服务成本
|
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.valueOf(quarterStatisticsVO.getQuarterlyServiceDuration() * Long.valueOf(dictItem.getRemark()))); |
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.valueOf(quarterStatisticsVO.getQuarterlyServiceDuration() * Long.valueOf(dictItem.getRemark()))); |
|
|
|
|
|
} else { |
|
|
|
|
|
// 如果没有季度数据,设置季度成本为0而不是null
|
|
|
|
|
|
statisticsVO.setQuarterlyServiceDuration(0.0); |
|
|
|
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
} |
|
|
} |
|
|
if (queryForm.getQuarter() == null) { |
|
|
if (queryForm.getQuarter() == null) { |
|
|
BigDecimal currentAnnualCost = statisticsVO.getAnnualServiceCost(); |
|
|
BigDecimal currentAnnualCost = statisticsVO.getAnnualServiceCost(); |
|
|
@ -1486,8 +1585,11 @@ public class ServiceApplicationsService { |
|
|
} |
|
|
} |
|
|
}else if (lawyerStatisticsWithParamYear != null) { |
|
|
}else if (lawyerStatisticsWithParamYear != null) { |
|
|
for (ServiceDepartmentImportForm statisticsVO : lawyerStatisticsWithParamYear) { |
|
|
for (ServiceDepartmentImportForm statisticsVO : lawyerStatisticsWithParamYear) { |
|
|
// 创建新的查询表单对象以避免修改原始对象
|
|
|
// 为每个律所单独构建季度查询条件
|
|
|
LawyerStatisticsQueryForm queryForm = SmartBeanUtil.copy(originalQueryForm, LawyerStatisticsQueryForm.class); |
|
|
LawyerStatisticsQueryForm queryForm = new LawyerStatisticsQueryForm(); |
|
|
|
|
|
queryForm.setYear(originalQueryForm.getYear()); |
|
|
|
|
|
queryForm.setQuarter(originalQueryForm.getQuarter()); |
|
|
|
|
|
|
|
|
if (queryForm.getQuarter() == null) { |
|
|
if (queryForm.getQuarter() == null) { |
|
|
// 如果没有指定季度,使用上一季度的时间范围
|
|
|
// 如果没有指定季度,使用上一季度的时间范围
|
|
|
TimeVo startQuarter = DateTimeUtil.getStartQuarter(); |
|
|
TimeVo startQuarter = DateTimeUtil.getStartQuarter(); |
|
|
@ -1504,6 +1606,7 @@ public class ServiceApplicationsService { |
|
|
queryForm.setEndTime(quarterEnd.toString()); |
|
|
queryForm.setEndTime(quarterEnd.toString()); |
|
|
} |
|
|
} |
|
|
queryForm.setFirmId(statisticsVO.getFirmId()); |
|
|
queryForm.setFirmId(statisticsVO.getFirmId()); |
|
|
|
|
|
|
|
|
//计算年度累计服务成本
|
|
|
//计算年度累计服务成本
|
|
|
statisticsVO.setAnnualServiceCost(BigDecimal.valueOf(statisticsVO.getAnnualServiceDuration() * Long.valueOf(dictItem.getRemark()))); |
|
|
statisticsVO.setAnnualServiceCost(BigDecimal.valueOf(statisticsVO.getAnnualServiceDuration() * Long.valueOf(dictItem.getRemark()))); |
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(queryForm); |
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(queryForm); |
|
|
@ -1513,6 +1616,10 @@ public class ServiceApplicationsService { |
|
|
statisticsVO.setQuarterlyServiceDuration(quarterStatisticsVO.getQuarterlyServiceDuration()); |
|
|
statisticsVO.setQuarterlyServiceDuration(quarterStatisticsVO.getQuarterlyServiceDuration()); |
|
|
//计算季度累计服务成本
|
|
|
//计算季度累计服务成本
|
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.valueOf(quarterStatisticsVO.getQuarterlyServiceDuration() * Long.valueOf(dictItem.getRemark()))); |
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.valueOf(quarterStatisticsVO.getQuarterlyServiceDuration() * Long.valueOf(dictItem.getRemark()))); |
|
|
|
|
|
} else { |
|
|
|
|
|
// 如果没有季度数据,设置季度成本为0而不是null
|
|
|
|
|
|
statisticsVO.setQuarterlyServiceDuration(0.0); |
|
|
|
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
} |
|
|
} |
|
|
if (queryForm.getQuarter() == null) { |
|
|
if (queryForm.getQuarter() == null) { |
|
|
BigDecimal currentAnnualCost = statisticsVO.getAnnualServiceCost(); |
|
|
BigDecimal currentAnnualCost = statisticsVO.getAnnualServiceCost(); |
|
|
|