|
|
|
@ -7,7 +7,19 @@ import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; |
|
|
|
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; |
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import net.lab1024.sa.base.common.code.UserErrorCode; |
|
|
|
import net.lab1024.sa.base.common.domain.PageResult; |
|
|
|
import net.lab1024.sa.base.common.domain.RequestUser; |
|
|
|
import net.lab1024.sa.base.common.domain.ResponseDTO; |
|
|
|
import net.lab1024.sa.base.common.enumeration.UserTypeEnum; |
|
|
|
import net.lab1024.sa.base.common.exception.BusinessException; |
|
|
|
import net.lab1024.sa.base.common.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 net.lab1024.sa.admin.common.enums.ReviewEnum; |
|
|
|
import net.lab1024.sa.admin.common.enums.DateTimeEnum; |
|
|
|
import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity; |
|
|
|
import net.lab1024.sa.admin.module.business.category.service.CategoryService; |
|
|
|
import net.lab1024.sa.admin.module.business.goods.domain.entity.GoodsEntity; |
|
|
|
@ -15,8 +27,6 @@ import net.lab1024.sa.admin.module.business.goods.service.GoodsService; |
|
|
|
import net.lab1024.sa.admin.module.service.dao.ServiceApplicationsDao; |
|
|
|
import net.lab1024.sa.admin.module.service.domain.entity.ServiceApplicationsEntity; |
|
|
|
import net.lab1024.sa.admin.module.service.domain.form.*; |
|
|
|
import net.lab1024.sa.admin.module.service.domain.form.LawyerStatisticsQueryForm; |
|
|
|
import net.lab1024.sa.admin.common.enums.DateTimeEnum; |
|
|
|
import net.lab1024.sa.admin.module.service.domain.vo.*; |
|
|
|
import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeViewTypeEnum; |
|
|
|
import net.lab1024.sa.admin.module.system.datascope.service.DataScopeViewService; |
|
|
|
@ -34,17 +44,6 @@ 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.code.UserErrorCode; |
|
|
|
import net.lab1024.sa.base.common.domain.PageResult; |
|
|
|
import net.lab1024.sa.base.common.domain.RequestUser; |
|
|
|
import net.lab1024.sa.base.common.domain.ResponseDTO; |
|
|
|
import net.lab1024.sa.base.common.enumeration.UserTypeEnum; |
|
|
|
import net.lab1024.sa.base.common.exception.BusinessException; |
|
|
|
import net.lab1024.sa.base.common.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 net.sf.jsqlparser.expression.LongValue; |
|
|
|
import org.apache.catalina.util.RequestUtil; |
|
|
|
import org.apache.commons.collections4.CollectionUtils; |
|
|
|
@ -776,156 +775,348 @@ public class ServiceApplicationsService { |
|
|
|
|
|
|
|
/** |
|
|
|
* 律所统计 |
|
|
|
* @param queryForms |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public List<LawyerStatisticsVO> getLawyerStatisticsByDepartment(@Valid LawyerStatisticsQueryFormList queryForms) { |
|
|
|
LawyerStatisticsQueryForm queryForm = getQueryForm(queryForms); |
|
|
|
DictEntity dictItem = dictService.getOne("FILECOST"); |
|
|
|
|
|
|
|
// 第一步:先查询年度统计数据(有条件)
|
|
|
|
// 获取年度统计数据
|
|
|
|
List<LawyerStatisticsVO> annualStatistics = getAnnualStatistics(queryForm); |
|
|
|
|
|
|
|
if (!annualStatistics.isEmpty()) { |
|
|
|
// 处理统计数据
|
|
|
|
processStatistics(annualStatistics, queryForm, dictItem); |
|
|
|
} |
|
|
|
|
|
|
|
// 屏蔽成本数据
|
|
|
|
maskCostDataForUser(annualStatistics); |
|
|
|
return annualStatistics; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 获取年度统计数据 |
|
|
|
*/ |
|
|
|
private List<LawyerStatisticsVO> getAnnualStatistics(LawyerStatisticsQueryForm queryForm) { |
|
|
|
LawyerStatisticsQueryForm annualQueryForm = createAnnualQueryForm(queryForm); |
|
|
|
return serviceApplicationsDao.getdepartmentStatistics(annualQueryForm); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建年度查询表单 |
|
|
|
*/ |
|
|
|
private LawyerStatisticsQueryForm createAnnualQueryForm(LawyerStatisticsQueryForm queryForm) { |
|
|
|
LawyerStatisticsQueryForm annualQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
annualQueryForm.setYear(queryForm.getYear()); |
|
|
|
|
|
|
|
// 如果指定了机构ID,则应用过滤条件
|
|
|
|
if (queryForm.getFirmId() != null) { |
|
|
|
annualQueryForm.setFirmId(queryForm.getFirmId()); |
|
|
|
} |
|
|
|
|
|
|
|
// 设置年度时间范围
|
|
|
|
String yearStart = queryForm.getYear() + "-01-01"; |
|
|
|
String yearEnd = queryForm.getYear() + "-12-31"; |
|
|
|
annualQueryForm.setStartTime(yearStart); |
|
|
|
annualQueryForm.setEndTime(yearEnd); |
|
|
|
|
|
|
|
// 初始化季度时间变量
|
|
|
|
LocalDateTime quarterStart = null; |
|
|
|
LocalDateTime quarterEnd = null; |
|
|
|
return annualQueryForm; |
|
|
|
} |
|
|
|
|
|
|
|
List<LawyerStatisticsVO> annualStatistics = serviceApplicationsDao.getdepartmentStatistics(annualQueryForm); |
|
|
|
/** |
|
|
|
* 处理统计数据 |
|
|
|
*/ |
|
|
|
private void processStatistics(List<LawyerStatisticsVO> annualStatistics, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity dictItem) { |
|
|
|
// 获取季度统计数据(如果有季度条件)
|
|
|
|
List<LawyerStatisticsVO> quarterlyStatistics = getQuarterlyStatistics(queryForm); |
|
|
|
|
|
|
|
// 处理每个律所的统计数据
|
|
|
|
for (LawyerStatisticsVO annualStat : annualStatistics) { |
|
|
|
processDepartmentStatistics(annualStat, queryForm, dictItem, quarterlyStatistics); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 获取季度统计数据 |
|
|
|
*/ |
|
|
|
private List<LawyerStatisticsVO> getQuarterlyStatistics(LawyerStatisticsQueryForm queryForm) { |
|
|
|
if (queryForm.getQuarter() == null) { |
|
|
|
return new ArrayList<>(); |
|
|
|
} |
|
|
|
|
|
|
|
LawyerStatisticsQueryForm quarterlyQueryForm = createQuarterlyQueryForm(queryForm); |
|
|
|
return serviceApplicationsDao.getdepartmentStatistics(quarterlyQueryForm); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建季度查询表单 |
|
|
|
*/ |
|
|
|
private LawyerStatisticsQueryForm createQuarterlyQueryForm(LawyerStatisticsQueryForm queryForm) { |
|
|
|
LawyerStatisticsQueryForm quarterlyQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
quarterlyQueryForm.setYear(queryForm.getYear()); |
|
|
|
quarterlyQueryForm.setFirmId(queryForm.getFirmId()); |
|
|
|
|
|
|
|
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); |
|
|
|
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
quarterlyQueryForm.setStartTime(quarterStart.toString()); |
|
|
|
quarterlyQueryForm.setEndTime(quarterEnd.toString()); |
|
|
|
|
|
|
|
return quarterlyQueryForm; |
|
|
|
} |
|
|
|
|
|
|
|
// 第三步:合并年度和季度数据
|
|
|
|
Map<Long, LawyerStatisticsVO> quarterlyMap = quarterlyStatistics.stream() |
|
|
|
.collect(Collectors.toMap(LawyerStatisticsVO::getFirmId, Function.identity())); |
|
|
|
/** |
|
|
|
* 处理单个律所的统计数据 |
|
|
|
*/ |
|
|
|
private void processDepartmentStatistics(LawyerStatisticsVO annualStat, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity dictItem, |
|
|
|
List<LawyerStatisticsVO> quarterlyStatistics) { |
|
|
|
// 处理年度数据
|
|
|
|
processAnnualData(annualStat, queryForm, dictItem); |
|
|
|
|
|
|
|
for (LawyerStatisticsVO annualStat : annualStatistics) { |
|
|
|
// 处理季度数据
|
|
|
|
processQuarterlyData(annualStat, queryForm, dictItem, quarterlyStatistics); |
|
|
|
|
|
|
|
// 处理律师详细数据
|
|
|
|
processLawyerDetails(annualStat, queryForm, dictItem); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 处理年度数据 |
|
|
|
*/ |
|
|
|
private void processAnnualData(LawyerStatisticsVO annualStat, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity dictItem) { |
|
|
|
// 计算年度成本
|
|
|
|
calculateAnnualCost(annualStat, dictItem); |
|
|
|
|
|
|
|
// 添加金额类型数据
|
|
|
|
addAmountDataToAnnualCost(annualStat, queryForm); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 计算年度成本 |
|
|
|
*/ |
|
|
|
private void calculateAnnualCost(LawyerStatisticsVO annualStat, DictEntity dictItem) { |
|
|
|
BigDecimal annualCost = BigDecimal.valueOf(annualStat.getAnnualServiceDuration() * Long.valueOf(dictItem.getRemark())); |
|
|
|
annualStat.setAnnualServiceCost(annualCost); |
|
|
|
} |
|
|
|
|
|
|
|
// 查询amount类型的金额并添加到年度成本
|
|
|
|
/** |
|
|
|
* 添加金额类型数据到年度成本 |
|
|
|
*/ |
|
|
|
private void addAmountDataToAnnualCost(LawyerStatisticsVO annualStat, LawyerStatisticsQueryForm queryForm) { |
|
|
|
LawyerStatisticsQueryForm amountQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
amountQueryForm.setFirmId(annualStat.getFirmId()); |
|
|
|
|
|
|
|
// 设置年度时间范围
|
|
|
|
String yearStart = queryForm.getYear() + "-01-01"; |
|
|
|
String yearEnd = queryForm.getYear() + "-12-31"; |
|
|
|
amountQueryForm.setStartTime(yearStart); |
|
|
|
amountQueryForm.setEndTime(yearEnd); |
|
|
|
|
|
|
|
BigDecimal annualAmount = serviceApplicationsDao.getServiceAmount(amountQueryForm); |
|
|
|
if (annualAmount != null && annualAmount.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
annualStat.setAnnualServiceCost(annualStat.getAnnualServiceCost().add(annualAmount)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 安全地添加年度特殊金额
|
|
|
|
BigDecimal currentAnnualCost = annualStat.getAnnualServiceCost(); |
|
|
|
if (currentAnnualCost != null) { |
|
|
|
annualStat.setAnnualServiceCost(currentAnnualCost.add(annualAmount != null ? annualAmount : BigDecimal.ZERO)); |
|
|
|
} else { |
|
|
|
annualStat.setAnnualServiceCost(annualAmount != null ? annualAmount : BigDecimal.ZERO); |
|
|
|
/** |
|
|
|
* 处理季度数据 |
|
|
|
*/ |
|
|
|
private void processQuarterlyData(LawyerStatisticsVO annualStat, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity dictItem, |
|
|
|
List<LawyerStatisticsVO> quarterlyStatistics) { |
|
|
|
if (queryForm.getQuarter() == null) { |
|
|
|
annualStat.setQuarterlyServiceDuration(0.00); |
|
|
|
annualStat.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 设置季度数据
|
|
|
|
LawyerStatisticsVO quarterlyStat = quarterlyMap.get(annualStat.getFirmId()); |
|
|
|
if (quarterlyStat != null && queryForm.getQuarter() != null) { |
|
|
|
// 查找对应的季度数据
|
|
|
|
LawyerStatisticsVO quarterlyStat = findQuarterlyStatByFirmId(quarterlyStatistics, annualStat.getFirmId()); |
|
|
|
|
|
|
|
if (quarterlyStat != null) { |
|
|
|
annualStat.setQuarterlyServiceDuration(quarterlyStat.getAnnualServiceDuration()); |
|
|
|
BigDecimal quarterlyCost = BigDecimal.valueOf(quarterlyStat.getAnnualServiceDuration() * Long.valueOf(dictItem.getRemark())); |
|
|
|
calculateQuarterlyCost(annualStat, dictItem); |
|
|
|
addQuarterlyAmountData(annualStat, queryForm); |
|
|
|
} else { |
|
|
|
annualStat.setQuarterlyServiceDuration(0.00); |
|
|
|
annualStat.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 根据律所ID查找季度数据 |
|
|
|
*/ |
|
|
|
private LawyerStatisticsVO findQuarterlyStatByFirmId(List<LawyerStatisticsVO> quarterlyStatistics, Long firmId) { |
|
|
|
return quarterlyStatistics.stream() |
|
|
|
.filter(stat -> firmId.equals(stat.getFirmId())) |
|
|
|
.findFirst() |
|
|
|
.orElse(null); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 计算季度成本 |
|
|
|
*/ |
|
|
|
private void calculateQuarterlyCost(LawyerStatisticsVO annualStat, DictEntity dictItem) { |
|
|
|
BigDecimal quarterlyCost = BigDecimal.valueOf(annualStat.getQuarterlyServiceDuration() * Long.valueOf(dictItem.getRemark())); |
|
|
|
annualStat.setQuarterlyServiceCost(quarterlyCost); |
|
|
|
// 修复:创建独立的季度金额查询表单,避免时间范围污染
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 添加季度金额数据 |
|
|
|
*/ |
|
|
|
private void addQuarterlyAmountData(LawyerStatisticsVO annualStat, LawyerStatisticsQueryForm queryForm) { |
|
|
|
LawyerStatisticsQueryForm quarterlyAmountQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
quarterlyAmountQueryForm.setFirmId(annualStat.getFirmId()); |
|
|
|
|
|
|
|
// 设置季度时间范围
|
|
|
|
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
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); |
|
|
|
if (quarterlyAmount != null && quarterlyAmount.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
annualStat.setQuarterlyServiceCost(annualStat.getQuarterlyServiceCost().add(quarterlyAmount)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 处理律师详细数据 |
|
|
|
*/ |
|
|
|
private void processLawyerDetails(LawyerStatisticsVO annualStat, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity dictItem) { |
|
|
|
// 查询律师年度统计信息
|
|
|
|
List<ServiceLawyerImportForm> lawyerAnnualStats = getLawyerAnnualStats(annualStat.getFirmId(), queryForm); |
|
|
|
|
|
|
|
// 查询律师季度统计信息(如果有季度条件)
|
|
|
|
List<ServiceLawyerImportForm> lawyerQuarterlyStats = getLawyerQuarterlyStats(annualStat.getFirmId(), queryForm); |
|
|
|
|
|
|
|
// 查询律所下律师的详细统计信息
|
|
|
|
// 处理律师统计数据
|
|
|
|
processLawyerStats(lawyerAnnualStats, lawyerQuarterlyStats, queryForm, dictItem); |
|
|
|
|
|
|
|
annualStat.setLawyerServiceVOList(lawyerAnnualStats); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 查询律师年度统计信息 |
|
|
|
*/ |
|
|
|
private List<ServiceLawyerImportForm> getLawyerAnnualStats(Long firmId, LawyerStatisticsQueryForm queryForm) { |
|
|
|
ServiceLawyerQueryForm serviceLawyerQueryForm = new ServiceLawyerQueryForm(); |
|
|
|
serviceLawyerQueryForm.setFirmId(annualStat.getFirmId()); |
|
|
|
serviceLawyerQueryForm.setFirmId(firmId); |
|
|
|
serviceLawyerQueryForm.setYear(queryForm.getYear()); |
|
|
|
|
|
|
|
// 设置律师年度统计时间范围
|
|
|
|
// 设置年度时间范围
|
|
|
|
String yearStart = queryForm.getYear() + "-01-01"; |
|
|
|
String yearEnd = queryForm.getYear() + "-12-31"; |
|
|
|
serviceLawyerQueryForm.setStartTime(yearStart); |
|
|
|
serviceLawyerQueryForm.setEndTime(yearEnd); |
|
|
|
List<ServiceLawyerImportForm> lawyerAnnualStats = serviceApplicationsDao.getLawyerStatisticsWithParam(serviceLawyerQueryForm); |
|
|
|
|
|
|
|
// 处理律师季度统计
|
|
|
|
List<ServiceLawyerImportForm> lawyerQuarterlyStats = new ArrayList<>(); |
|
|
|
if (queryForm.getQuarter() != null) { |
|
|
|
// 为律师季度统计创建独立的查询表单,使用季度时间范围
|
|
|
|
return serviceApplicationsDao.getLawyerStatisticsWithParam(serviceLawyerQueryForm); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 查询律师季度统计信息 |
|
|
|
*/ |
|
|
|
private List<ServiceLawyerImportForm> getLawyerQuarterlyStats(Long firmId, LawyerStatisticsQueryForm queryForm) { |
|
|
|
if (queryForm.getQuarter() == null) { |
|
|
|
return new ArrayList<>(); |
|
|
|
} |
|
|
|
|
|
|
|
ServiceLawyerQueryForm lawyerQuarterlyQueryForm = new ServiceLawyerQueryForm(); |
|
|
|
lawyerQuarterlyQueryForm.setFirmId(annualStat.getFirmId()); |
|
|
|
lawyerQuarterlyQueryForm.setFirmId(firmId); |
|
|
|
lawyerQuarterlyQueryForm.setYear(queryForm.getYear()); |
|
|
|
|
|
|
|
// 设置季度时间范围
|
|
|
|
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
lawyerQuarterlyQueryForm.setStartTime(quarterStart.toString()); |
|
|
|
lawyerQuarterlyQueryForm.setEndTime(quarterEnd.toString()); |
|
|
|
lawyerQuarterlyStats = serviceApplicationsDao.getLawyerStatisticsWithParam(lawyerQuarterlyQueryForm); |
|
|
|
|
|
|
|
return serviceApplicationsDao.getLawyerStatisticsWithParam(lawyerQuarterlyQueryForm); |
|
|
|
} |
|
|
|
|
|
|
|
// 合并律师年度和季度数据
|
|
|
|
/** |
|
|
|
* 处理律师统计数据 |
|
|
|
*/ |
|
|
|
private void processLawyerStats(List<ServiceLawyerImportForm> lawyerAnnualStats, |
|
|
|
List<ServiceLawyerImportForm> lawyerQuarterlyStats, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity dictItem) { |
|
|
|
Map<Long, ServiceLawyerImportForm> lawyerQuarterlyMap = lawyerQuarterlyStats.stream() |
|
|
|
.collect(Collectors.toMap(ServiceLawyerImportForm::getUserId, Function.identity())); |
|
|
|
|
|
|
|
for (ServiceLawyerImportForm lawyerAnnual : lawyerAnnualStats) { |
|
|
|
// 计算律师年度成本
|
|
|
|
calculateLawyerAnnualCost(lawyerAnnual, dictItem, queryForm); |
|
|
|
|
|
|
|
// 设置律师季度数据
|
|
|
|
setLawyerQuarterlyData(lawyerAnnual, lawyerQuarterlyMap, queryForm, dictItem); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 计算律师年度成本 |
|
|
|
*/ |
|
|
|
private void calculateLawyerAnnualCost(ServiceLawyerImportForm lawyerAnnual, |
|
|
|
DictEntity dictItem, |
|
|
|
LawyerStatisticsQueryForm queryForm) { |
|
|
|
BigDecimal lawyerAnnualCost = BigDecimal.valueOf(lawyerAnnual.getAnnualServiceDuration() * Long.valueOf(dictItem.getRemark())); |
|
|
|
lawyerAnnual.setAnnualServiceCost(lawyerAnnualCost); |
|
|
|
|
|
|
|
// 查询律师年度amount类型金额
|
|
|
|
LawyerStatisticsQueryForm lawyerAmountQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
lawyerAmountQueryForm.setUserId(lawyerAnnual.getUserId()); |
|
|
|
|
|
|
|
// 设置年度时间范围
|
|
|
|
String yearStart = queryForm.getYear() + "-01-01"; |
|
|
|
String yearEnd = queryForm.getYear() + "-12-31"; |
|
|
|
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 lawyerAnnualAmount = serviceApplicationsDao.getServiceAmount(lawyerAmountQueryForm); |
|
|
|
if (lawyerAnnualAmount != null && lawyerAnnualAmount.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
lawyerAnnual.setAnnualServiceCost(lawyerAnnual.getAnnualServiceCost().add(lawyerAnnualAmount)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 设置律师季度数据
|
|
|
|
/** |
|
|
|
* 设置律师季度数据 |
|
|
|
*/ |
|
|
|
private void setLawyerQuarterlyData(ServiceLawyerImportForm lawyerAnnual, |
|
|
|
Map<Long, ServiceLawyerImportForm> lawyerQuarterlyMap, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity dictItem) { |
|
|
|
ServiceLawyerImportForm lawyerQuarterly = lawyerQuarterlyMap.get(lawyerAnnual.getUserId()); |
|
|
|
|
|
|
|
if (lawyerQuarterly != null && queryForm.getQuarter() != null) { |
|
|
|
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)); |
|
|
|
|
|
|
|
// 查询律师季度金额类型数据
|
|
|
|
LawyerStatisticsQueryForm quarterlyAmountQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
quarterlyAmountQueryForm.setUserId(lawyerAnnual.getUserId()); |
|
|
|
quarterlyAmountQueryForm.setStartTime(queryForm.getStartTime()); |
|
|
|
quarterlyAmountQueryForm.setEndTime(queryForm.getEndTime()); |
|
|
|
|
|
|
|
BigDecimal lawyerQuarterlyAmount = serviceApplicationsDao.getServiceAmount(quarterlyAmountQueryForm); |
|
|
|
if (lawyerQuarterlyAmount != null && lawyerQuarterlyAmount.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
lawyerAnnual.setQuarterlyServiceCost(lawyerAnnual.getQuarterlyServiceCost().add(lawyerQuarterlyAmount)); |
|
|
|
} |
|
|
|
} else { |
|
|
|
lawyerAnnual.setQuarterlyServiceDuration(0.0); |
|
|
|
lawyerAnnual.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
annualStat.setLawyerServiceVOList(lawyerAnnualStats); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//屏蔽成本数据
|
|
|
|
maskCostDataForUser(annualStatistics); |
|
|
|
return annualStatistics; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 律所查询条件封装 |
|
|
|
* @param queryForms |
|
|
|
@ -1089,10 +1280,11 @@ public class ServiceApplicationsService { |
|
|
|
*/ |
|
|
|
public BigDecimal getServiceApplicationsCost(ServiceLawyerQueryForm queryForm) { |
|
|
|
// 根据指定的季度设置时间范围
|
|
|
|
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(queryForm.getYear(), queryForm.getQuarter()); |
|
|
|
LocalDateTime quarterStart = DateTimeEnum.getMonthStart(queryForm.getYear(), queryForm.getMonth()); |
|
|
|
LocalDateTime quarterEnd = DateTimeEnum.getMonthEnd(queryForm.getYear(), queryForm.getMonth()); |
|
|
|
queryForm.setStartTime(quarterStart.toString()); |
|
|
|
queryForm.setEndTime(quarterEnd.toString()); |
|
|
|
queryForm.setFirmId(queryForm.getFirmId()); |
|
|
|
//获取多少小时
|
|
|
|
Long time = serviceApplicationsDao.getServiceApplicationsCost(queryForm); |
|
|
|
//获取字典表的设置
|
|
|
|
@ -1117,7 +1309,7 @@ public class ServiceApplicationsService { |
|
|
|
|
|
|
|
return result; |
|
|
|
}else { |
|
|
|
return BigDecimal.valueOf(0L); |
|
|
|
return BigDecimal.ZERO; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -1360,69 +1552,210 @@ public class ServiceApplicationsService { |
|
|
|
/** |
|
|
|
* 获取律师统计信息(带查询参数) |
|
|
|
*/ |
|
|
|
public PageResult<LawyerStatisticsVO> getLawyerStatistics(LawyerStatisticsQueryForm queryForm) { |
|
|
|
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm); |
|
|
|
DictEntity one = dictService.getOne("FILECOST"); |
|
|
|
//查询下角色
|
|
|
|
public List<LawyerStatisticsVO> getLawyerStatistics(LawyerStatisticsQueryForm queryForm) { |
|
|
|
DictEntity fileCostDict = dictService.getOne("FILECOST"); |
|
|
|
|
|
|
|
// 应用权限控制
|
|
|
|
applyUserPermissionControl(queryForm); |
|
|
|
|
|
|
|
// 设置年度时间范围
|
|
|
|
setAnnualTimeRange(queryForm); |
|
|
|
|
|
|
|
// 统计当前年度的律师数据(无分页)
|
|
|
|
List<LawyerStatisticsVO> lawyerStatisticsList = serviceApplicationsDao.getLawyerStatisticsWithParamYearNoPage(queryForm); |
|
|
|
|
|
|
|
// 处理统计数据
|
|
|
|
if (!lawyerStatisticsList.isEmpty()) { |
|
|
|
// 处理有服务时长类型数据的律师统计
|
|
|
|
processLawyersWithServiceDuration(lawyerStatisticsList, queryForm, fileCostDict); |
|
|
|
} else { |
|
|
|
// 处理只有金额类型数据的律师统计
|
|
|
|
processLawyersWithAmountOnly(lawyerStatisticsList, queryForm, fileCostDict); |
|
|
|
} |
|
|
|
|
|
|
|
// 根据用户权限控制成本数据显示
|
|
|
|
maskCostDataForUser(lawyerStatisticsList); |
|
|
|
return lawyerStatisticsList; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 应用用户权限控制 |
|
|
|
*/ |
|
|
|
private void applyUserPermissionControl(LawyerStatisticsQueryForm queryForm) { |
|
|
|
RequestEmployee requestUser = AdminRequestUtil.getRequestUser(); |
|
|
|
RoleVO roleList = roleEmployeeService.getRoleIdList(requestUser.getEmployeeId()).get(0); |
|
|
|
TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(queryForm.getYear()); |
|
|
|
//根据year拼接年度的开始时间和结束时间
|
|
|
|
String yearStart = yearStartAndEnd.getStartTime(); |
|
|
|
String yearEnd = yearStartAndEnd.getEndTime(); |
|
|
|
queryForm.setStartTime(yearStart); |
|
|
|
queryForm.setEndTime(yearEnd); |
|
|
|
if (UserTypeEnum.CTO.getDesc().equals(roleList.getRoleCode())){ |
|
|
|
queryForm.setFirmId(requestUser.getDepartmentId()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 设置年度时间范围 |
|
|
|
*/ |
|
|
|
private void setAnnualTimeRange(LawyerStatisticsQueryForm queryForm) { |
|
|
|
TimeVo yearStartAndEnd = DateTimeUtil.getYearStartAndEnd(queryForm.getYear()); |
|
|
|
queryForm.setStartTime(yearStartAndEnd.getStartTime()); |
|
|
|
queryForm.setEndTime(yearStartAndEnd.getEndTime()); |
|
|
|
} |
|
|
|
//统计当前年度的
|
|
|
|
List<LawyerStatisticsVO> lawyerStatisticsWithParamYear = serviceApplicationsDao.getLawyerStatisticsWithParamYear(page, queryForm); |
|
|
|
PageResult<LawyerStatisticsVO> lawyerStatisticsVOPageResult = SmartPageUtil.convert2PageResult(page, lawyerStatisticsWithParamYear); |
|
|
|
if (!lawyerStatisticsVOPageResult.getList().isEmpty()) { |
|
|
|
for (LawyerStatisticsVO statisticsVO : lawyerStatisticsWithParamYear) { |
|
|
|
statisticsVO.setAnnualServiceCost(BigDecimal.valueOf(statisticsVO.getAnnualServiceDuration() * Long.valueOf(one.getRemark()))); |
|
|
|
//统计金额
|
|
|
|
queryForm.setUserId(statisticsVO.getUserId()); |
|
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(queryForm); |
|
|
|
statisticsVO.setAnnualServiceCost(statisticsVO.getAnnualServiceCost().add(amount)); |
|
|
|
|
|
|
|
// 直接为每个律师查询季度数据
|
|
|
|
LawyerStatisticsQueryForm quarterQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
quarterQueryForm.setYear(queryForm.getYear()); |
|
|
|
quarterQueryForm.setQuarter(queryForm.getQuarter()); |
|
|
|
quarterQueryForm.setUserId(statisticsVO.getUserId()); |
|
|
|
/** |
|
|
|
* 处理有服务时长类型数据的律师统计 |
|
|
|
*/ |
|
|
|
private void processLawyersWithServiceDuration(List<LawyerStatisticsVO> lawyerStatisticsList, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity fileCostDict) { |
|
|
|
for (LawyerStatisticsVO statisticsVO : lawyerStatisticsList) { |
|
|
|
// 计算年度服务成本(服务时长 + 金额类型)
|
|
|
|
calculateAnnualServiceCost(statisticsVO, queryForm, fileCostDict); |
|
|
|
|
|
|
|
// 只有在有季度查询条件时才计算季度服务成本
|
|
|
|
if (queryForm.getQuarter() != null) { |
|
|
|
calculateQuarterlyServiceCost(statisticsVO, queryForm, fileCostDict); |
|
|
|
} else { |
|
|
|
// 没有季度查询条件时,设置季度数据为默认值
|
|
|
|
statisticsVO.setQuarterlyServiceDuration(0.0); |
|
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 设置季度时间范围
|
|
|
|
if (quarterQueryForm.getQuarter() == null) { |
|
|
|
TimeVo startQuarter = DateTimeUtil.getStartQuarter(); |
|
|
|
quarterQueryForm.setStartTime(startQuarter.getStartTime()); |
|
|
|
quarterQueryForm.setEndTime(startQuarter.getEndTime()); |
|
|
|
/** |
|
|
|
* 计算年度服务成本 |
|
|
|
*/ |
|
|
|
private void calculateAnnualServiceCost(LawyerStatisticsVO statisticsVO, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity fileCostDict) { |
|
|
|
// 检查字典项是否为空
|
|
|
|
if (fileCostDict == null || fileCostDict.getRemark() == null) { |
|
|
|
log.warn("FILECOST字典项为空或remark字段为空,无法计算服务时长成本"); |
|
|
|
statisticsVO.setAnnualServiceCost(BigDecimal.ZERO); |
|
|
|
} 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()); |
|
|
|
// 基于服务时长计算成本
|
|
|
|
BigDecimal serviceDurationCost = BigDecimal.valueOf( |
|
|
|
statisticsVO.getAnnualServiceDuration() * Long.valueOf(fileCostDict.getRemark()) |
|
|
|
); |
|
|
|
statisticsVO.setAnnualServiceCost(serviceDurationCost); |
|
|
|
} |
|
|
|
|
|
|
|
// 统计金额类型数据
|
|
|
|
LawyerStatisticsQueryForm amountQueryForm = createAmountQueryForm(queryForm, statisticsVO.getUserId()); |
|
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(amountQueryForm); |
|
|
|
if (amount != null && amount.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
statisticsVO.setAnnualServiceCost(statisticsVO.getAnnualServiceCost().add(amount)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 计算季度服务成本 |
|
|
|
*/ |
|
|
|
private void calculateQuarterlyServiceCost(LawyerStatisticsVO statisticsVO, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity fileCostDict) { |
|
|
|
LawyerStatisticsQueryForm quarterQueryForm = createQuarterQueryForm(queryForm, statisticsVO.getUserId()); |
|
|
|
|
|
|
|
// 查询该律师的季度数据
|
|
|
|
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 quarterServiceDurationCost = BigDecimal.valueOf( |
|
|
|
quarterData.getQuarterlyServiceDuration() * Long.valueOf(fileCostDict.getRemark()) |
|
|
|
); |
|
|
|
statisticsVO.setQuarterlyServiceCost(quarterServiceDurationCost); |
|
|
|
|
|
|
|
// 统计季度金额类型数据
|
|
|
|
BigDecimal quarterAmount = serviceApplicationsDao.getServiceAmount(quarterQueryForm); |
|
|
|
if (quarterAmount != null) { |
|
|
|
statisticsVO.setQuarterlyServiceCost(statisticsVO.getQuarterlyServiceCost().add(quarterAmount)); |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 如果没有季度数据,设置季度成本为0
|
|
|
|
statisticsVO.setQuarterlyServiceDuration(0.0); |
|
|
|
statisticsVO.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 处理只有金额类型数据的律师统计 |
|
|
|
*/ |
|
|
|
private void processLawyersWithAmountOnly(List<LawyerStatisticsVO> resultList, |
|
|
|
LawyerStatisticsQueryForm queryForm, |
|
|
|
DictEntity fileCostDict) { |
|
|
|
// 查询只有金额类型数据的律师
|
|
|
|
List<LawyerStatisticsVO> amountOnlyLawyers = findLawyersWithAmountOnly(queryForm); |
|
|
|
|
|
|
|
if (!amountOnlyLawyers.isEmpty()) { |
|
|
|
resultList.addAll(amountOnlyLawyers); |
|
|
|
} |
|
|
|
// 根据用户权限控制成本数据显示
|
|
|
|
maskCostDataForUser(lawyerStatisticsVOPageResult.getList()); |
|
|
|
return lawyerStatisticsVOPageResult; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 查找只有金额类型数据的律师 |
|
|
|
*/ |
|
|
|
private List<LawyerStatisticsVO> findLawyersWithAmountOnly(LawyerStatisticsQueryForm queryForm) { |
|
|
|
// 查询按律师统计的年度金额数据
|
|
|
|
List<LawyerStatisticsVO> amountOnlyLawyers = serviceApplicationsDao.getLawyerAmountStatistics(queryForm); |
|
|
|
|
|
|
|
if (!amountOnlyLawyers.isEmpty()) { |
|
|
|
log.info("发现 {} 个只有金额类型数据的律师", amountOnlyLawyers.size()); |
|
|
|
|
|
|
|
// 处理每个律师的季度金额数据
|
|
|
|
for (LawyerStatisticsVO lawyer : amountOnlyLawyers) { |
|
|
|
// 设置服务时长为0(只有金额类型数据)
|
|
|
|
lawyer.setAnnualServiceDuration(0.0); |
|
|
|
lawyer.setQuarterlyServiceDuration(0.0); |
|
|
|
|
|
|
|
// 只有在有季度参数时才查询季度金额数据
|
|
|
|
if (queryForm.getQuarter() != null) { |
|
|
|
LawyerStatisticsQueryForm quarterQueryForm = createQuarterQueryForm(queryForm, lawyer.getUserId()); |
|
|
|
BigDecimal quarterAmount = serviceApplicationsDao.getServiceAmount(quarterQueryForm); |
|
|
|
if (quarterAmount != null && quarterAmount.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
lawyer.setQuarterlyServiceCost(quarterAmount); |
|
|
|
} else { |
|
|
|
lawyer.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
|
} |
|
|
|
} else { |
|
|
|
lawyer.setQuarterlyServiceCost(BigDecimal.ZERO); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return amountOnlyLawyers; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建金额查询表单 |
|
|
|
*/ |
|
|
|
private LawyerStatisticsQueryForm createAmountQueryForm(LawyerStatisticsQueryForm originalForm, Long userId) { |
|
|
|
LawyerStatisticsQueryForm amountQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
amountQueryForm.setYear(originalForm.getYear()); |
|
|
|
amountQueryForm.setQuarter(originalForm.getQuarter()); |
|
|
|
amountQueryForm.setFirmId(originalForm.getFirmId()); |
|
|
|
amountQueryForm.setUserId(userId); |
|
|
|
amountQueryForm.setStartTime(originalForm.getStartTime()); |
|
|
|
amountQueryForm.setEndTime(originalForm.getEndTime()); |
|
|
|
return amountQueryForm; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建季度查询表单 |
|
|
|
*/ |
|
|
|
private LawyerStatisticsQueryForm createQuarterQueryForm(LawyerStatisticsQueryForm originalForm, Long userId) { |
|
|
|
LawyerStatisticsQueryForm quarterQueryForm = new LawyerStatisticsQueryForm(); |
|
|
|
quarterQueryForm.setYear(originalForm.getYear()); |
|
|
|
quarterQueryForm.setQuarter(originalForm.getQuarter()); |
|
|
|
quarterQueryForm.setUserId(userId); |
|
|
|
|
|
|
|
// 设置季度时间范围(只有在有季度参数时才设置具体季度范围)
|
|
|
|
if (quarterQueryForm.getQuarter() != null) { |
|
|
|
LocalDateTime quarterStart = DateTimeEnum.getQuarterStart(quarterQueryForm.getYear(), quarterQueryForm.getQuarter()); |
|
|
|
LocalDateTime quarterEnd = DateTimeEnum.getQuarterEnd(quarterQueryForm.getYear(), quarterQueryForm.getQuarter()); |
|
|
|
quarterQueryForm.setStartTime(quarterStart.toString()); |
|
|
|
quarterQueryForm.setEndTime(quarterEnd.toString()); |
|
|
|
} |
|
|
|
|
|
|
|
return quarterQueryForm; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@ -1637,6 +1970,36 @@ public class ServiceApplicationsService { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 处理 lawyerStatisticsVOPageResult 和 lawyerStatisticsWithParamYear 都为 null 的情况
|
|
|
|
// 但仍可能存在 amount 数据需要处理
|
|
|
|
LawyerStatisticsQueryForm queryForm = new LawyerStatisticsQueryForm(); |
|
|
|
queryForm.setYear(originalQueryForm.getYear()); |
|
|
|
queryForm.setQuarter(originalQueryForm.getQuarter()); |
|
|
|
|
|
|
|
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()); |
|
|
|
} |
|
|
|
|
|
|
|
// 即使没有统计数据,也要查询可能存在的 amount 数据
|
|
|
|
BigDecimal amount = serviceApplicationsDao.getServiceAmount(queryForm); |
|
|
|
if (amount != null && amount.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
log.warn("发现孤立的 amount 数据: {},但没有对应的统计数据", amount); |
|
|
|
// 这里可以根据业务需求决定如何处理孤立的 amount 数据
|
|
|
|
// 比如可以创建一个特殊的统计记录,或者记录到日志中
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|