|
@@ -1,5 +1,6 @@
|
|
|
package com.dayou.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.util.NumberUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -9,9 +10,7 @@ import com.dayou.entity.User;
|
|
|
import com.dayou.mapper.MajorStatisticalStatementMapper;
|
|
|
import com.dayou.service.IUserService;
|
|
|
import com.dayou.service.IMajorStatisticalStatementService;
|
|
|
-import com.dayou.vo.MajorLedgerVO;
|
|
|
-import com.dayou.vo.MajorPerformanceDeductionDetailVO;
|
|
|
-import com.dayou.vo.MajorPerformanceDeductionVO;
|
|
|
+import com.dayou.vo.*;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -97,6 +96,219 @@ public class MajorStatisticalStatementServiceImpl implements IMajorStatisticalSt
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 评估部效率查询
|
|
|
+ * @param dto 查询dto
|
|
|
+ * @return List<MajorEvaluateEfficiencyVO>
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<MajorEvaluateEfficiencyVO> getMajorEvaluateDepEfficiencyVO(MajorStatisticalSelectDTO dto) {
|
|
|
+ List<MajorEvaluateEfficiencyVO> efficiencyVOList = majorStatisticalStatementMapper.getMajorEvaluateDepEfficiencyVO(dto);
|
|
|
+ // 循环计算每个部门的同比、环比
|
|
|
+ for (MajorEvaluateEfficiencyVO efficiencyVO : efficiencyVOList) {
|
|
|
+
|
|
|
+ // 计算当期出单率
|
|
|
+ if (efficiencyVO.getCurrentPeriodReportVolume() > 0) { // 当期出报告书大于0
|
|
|
+ efficiencyVO.setCurrentPeriodOrderHasReportVolume((efficiencyVO.getCurrentPeriodReportVolume().doubleValue() / (efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount())));
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setCurrentPeriodOrderHasReportVolume(0.0);
|
|
|
+ }
|
|
|
+ // 计算同比出单率
|
|
|
+ if (efficiencyVO.getYoYReportVolume() > 0) {
|
|
|
+ efficiencyVO.setYoYOrderHasReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderHasReportVolume() - (efficiencyVO.getYoYReportVolume() / efficiencyVO.getYoYOrderVolume())) / (efficiencyVO.getYoYReportVolume() / efficiencyVO.getYoYOrderVolume()) * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
|
|
|
+ }
|
|
|
+ // 计算环比出单率
|
|
|
+ if (efficiencyVO.getQoQReportVolume() > 0) {
|
|
|
+ efficiencyVO.setQoQOrderHasReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderHasReportVolume() - (efficiencyVO.getQoQReportVolume() / efficiencyVO.getQoQOrderVolume())) / (efficiencyVO.getQoQReportVolume() / efficiencyVO.getQoQOrderVolume()) * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
|
|
|
+ }
|
|
|
+ efficiencyVO.setCurrentPeriodOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
|
|
|
+
|
|
|
+ // 同比计算(同比增长率 = (当期数据 - 去年同期数据) / 去年同期数据 * 100%) (保留两位小数)
|
|
|
+ if (efficiencyVO.getYoYOrderVolume() > 0) {
|
|
|
+ efficiencyVO.setYoYOrderVolume(NumberUtil.round(((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) - efficiencyVO.getYoYOrderVolume()) / efficiencyVO.getYoYOrderVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYOrderVolume((double) ((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getYoYStatementVolume() > 0) {
|
|
|
+ efficiencyVO.setYoYStatementVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodStatementVolume() - efficiencyVO.getYoYStatementVolume()) / efficiencyVO.getYoYStatementVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYStatementVolume((double) (efficiencyVO.getCurrentPeriodStatementVolume() * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getYoYReportVolume() > 0) {
|
|
|
+ efficiencyVO.setYoYReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodReportVolume() - efficiencyVO.getYoYReportVolume()) / efficiencyVO.getYoYReportVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYReportVolume((double) (efficiencyVO.getCurrentPeriodReportVolume() * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getYoYShouldAmountSum() > 0) {
|
|
|
+ efficiencyVO.setYoYShouldAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodShouldAmountSum() - efficiencyVO.getYoYShouldAmountSum()) / efficiencyVO.getYoYShouldAmountSum() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYShouldAmountSum(efficiencyVO.getCurrentPeriodShouldAmountSum() * 100);
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getYoYRealAmountSum() > 0) {
|
|
|
+ efficiencyVO.setYoYRealAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodRealAmountSum() - efficiencyVO.getYoYRealAmountSum()) / efficiencyVO.getYoYRealAmountSum() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYRealAmountSum(efficiencyVO.getCurrentPeriodRealAmountSum() * 100);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 环比计算(环比增长率 = (当期数据 - 前一期数据) / 前一期数据 * 100%) (保留两位小数)
|
|
|
+ if (efficiencyVO.getQoQOrderVolume() > 0) {
|
|
|
+ efficiencyVO.setQoQOrderVolume(NumberUtil.round(((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) - efficiencyVO.getQoQOrderVolume()) / efficiencyVO.getQoQOrderVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQOrderVolume((double) ((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getQoQStatementVolume() > 0) {
|
|
|
+ efficiencyVO.setQoQStatementVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodStatementVolume() - efficiencyVO.getQoQStatementVolume()) / efficiencyVO.getQoQStatementVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQStatementVolume((double) (efficiencyVO.getCurrentPeriodStatementVolume() * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getQoQReportVolume() > 0) {
|
|
|
+ efficiencyVO.setQoQReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodReportVolume() - efficiencyVO.getQoQReportVolume()) / efficiencyVO.getQoQReportVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQReportVolume((double) (efficiencyVO.getCurrentPeriodReportVolume() * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getQoQShouldAmountSum() > 0) {
|
|
|
+ efficiencyVO.setQoQShouldAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodShouldAmountSum() - efficiencyVO.getQoQShouldAmountSum()) / efficiencyVO.getQoQShouldAmountSum() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQShouldAmountSum(efficiencyVO.getCurrentPeriodShouldAmountSum() * 100);
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getQoQRealAmountSum() > 0) {
|
|
|
+ efficiencyVO.setQoQRealAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodRealAmountSum() - efficiencyVO.getQoQRealAmountSum()) / efficiencyVO.getQoQRealAmountSum() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQRealAmountSum(efficiencyVO.getCurrentPeriodRealAmountSum() * 100);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return efficiencyVOList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 评估人员效率查询
|
|
|
+ * @param dto 查询dto
|
|
|
+ * @return List<MajorEvaluateEfficiencyVO>
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<MajorEvaluateEfficiencyVO> getMajorEvaluatePerEfficiencyVO(MajorStatisticalSelectDTO dto) {
|
|
|
+ List<MajorEvaluateEfficiencyVO> efficiencyVOList = majorStatisticalStatementMapper.getMajorEvaluatePerEfficiencyVO(dto);
|
|
|
+ // 循环计算每个部门的同比、环比
|
|
|
+ for (MajorEvaluateEfficiencyVO efficiencyVO : efficiencyVOList) {
|
|
|
+
|
|
|
+ // 计算当期出单率
|
|
|
+ if (efficiencyVO.getCurrentPeriodReportVolume() > 0) { // 当期出报告书大于0
|
|
|
+ efficiencyVO.setCurrentPeriodOrderHasReportVolume((efficiencyVO.getCurrentPeriodReportVolume().doubleValue() / (efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount())));
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setCurrentPeriodOrderHasReportVolume(0.0);
|
|
|
+ }
|
|
|
+ // 计算同比出单率
|
|
|
+ if (efficiencyVO.getYoYReportVolume() > 0) {
|
|
|
+ efficiencyVO.setYoYOrderHasReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderHasReportVolume() - (efficiencyVO.getYoYReportVolume() / efficiencyVO.getYoYOrderVolume())) / (efficiencyVO.getYoYReportVolume() / efficiencyVO.getYoYOrderVolume()) * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
|
|
|
+ }
|
|
|
+ // 计算环比出单率
|
|
|
+ if (efficiencyVO.getQoQReportVolume() > 0) {
|
|
|
+ efficiencyVO.setQoQOrderHasReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodOrderHasReportVolume() - (efficiencyVO.getQoQReportVolume() / efficiencyVO.getQoQOrderVolume())) / (efficiencyVO.getQoQReportVolume() / efficiencyVO.getQoQOrderVolume()) * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
|
|
|
+ }
|
|
|
+ efficiencyVO.setCurrentPeriodOrderHasReportVolume(NumberUtil.round(efficiencyVO.getCurrentPeriodOrderHasReportVolume() * 100, 2).doubleValue());
|
|
|
+
|
|
|
+ // 同比计算(同比增长率 = (当期数据 - 去年同期数据) / 去年同期数据 * 100%) (保留两位小数)
|
|
|
+ if (efficiencyVO.getYoYOrderVolume() > 0) {
|
|
|
+ efficiencyVO.setYoYOrderVolume(NumberUtil.round(((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) - efficiencyVO.getYoYOrderVolume()) / efficiencyVO.getYoYOrderVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYOrderVolume((double) ((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getYoYStatementVolume() > 0) {
|
|
|
+ efficiencyVO.setYoYStatementVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodStatementVolume() - efficiencyVO.getYoYStatementVolume()) / efficiencyVO.getYoYStatementVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYStatementVolume((double) (efficiencyVO.getCurrentPeriodStatementVolume() * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getYoYReportVolume() > 0) {
|
|
|
+ efficiencyVO.setYoYReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodReportVolume() - efficiencyVO.getYoYReportVolume()) / efficiencyVO.getYoYReportVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYReportVolume((double) (efficiencyVO.getCurrentPeriodReportVolume() * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getYoYShouldAmountSum() > 0) {
|
|
|
+ efficiencyVO.setYoYShouldAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodShouldAmountSum() - efficiencyVO.getYoYShouldAmountSum()) / efficiencyVO.getYoYShouldAmountSum() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYShouldAmountSum(efficiencyVO.getCurrentPeriodShouldAmountSum() * 100);
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getYoYRealAmountSum() > 0) {
|
|
|
+ efficiencyVO.setYoYRealAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodRealAmountSum() - efficiencyVO.getYoYRealAmountSum()) / efficiencyVO.getYoYRealAmountSum() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setYoYRealAmountSum(efficiencyVO.getCurrentPeriodRealAmountSum() * 100);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 环比计算(环比增长率 = (当期数据 - 前一期数据) / 前一期数据 * 100%) (保留两位小数)
|
|
|
+ if (efficiencyVO.getQoQOrderVolume() > 0) {
|
|
|
+ efficiencyVO.setQoQOrderVolume(NumberUtil.round(((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) - efficiencyVO.getQoQOrderVolume()) / efficiencyVO.getQoQOrderVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQOrderVolume((double) ((efficiencyVO.getInformalEvaluateCount() + efficiencyVO.getUnInformalEvaluateCount()) * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getQoQStatementVolume() > 0) {
|
|
|
+ efficiencyVO.setQoQStatementVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodStatementVolume() - efficiencyVO.getQoQStatementVolume()) / efficiencyVO.getQoQStatementVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQStatementVolume((double) (efficiencyVO.getCurrentPeriodStatementVolume() * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getQoQReportVolume() > 0) {
|
|
|
+ efficiencyVO.setQoQReportVolume(NumberUtil.round((efficiencyVO.getCurrentPeriodReportVolume() - efficiencyVO.getQoQReportVolume()) / efficiencyVO.getQoQReportVolume() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQReportVolume((double) (efficiencyVO.getCurrentPeriodReportVolume() * 100));
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getQoQShouldAmountSum() > 0) {
|
|
|
+ efficiencyVO.setQoQShouldAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodShouldAmountSum() - efficiencyVO.getQoQShouldAmountSum()) / efficiencyVO.getQoQShouldAmountSum() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQShouldAmountSum(efficiencyVO.getCurrentPeriodShouldAmountSum() * 100);
|
|
|
+ }
|
|
|
+ if (efficiencyVO.getQoQRealAmountSum() > 0) {
|
|
|
+ efficiencyVO.setQoQRealAmountSum(NumberUtil.round((efficiencyVO.getCurrentPeriodRealAmountSum() - efficiencyVO.getQoQRealAmountSum()) / efficiencyVO.getQoQRealAmountSum() * 100, 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ efficiencyVO.setQoQRealAmountSum(efficiencyVO.getCurrentPeriodRealAmountSum() * 100);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return efficiencyVOList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 效率详情列表查询
|
|
|
+ * @param page 分页
|
|
|
+ * @param dto 查询dto
|
|
|
+ * @return Page<MajorEfficiencyDetailVO>
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Page<MajorEfficiencyDetailVO> getMajorEfficiencyDetailVO(Page page, MajorStatisticalSelectDTO dto) {
|
|
|
+ Page<MajorEfficiencyDetailVO> detailVOPage = majorStatisticalStatementMapper.getMajorEfficiencyDetailVO(page, dto);
|
|
|
+ for (MajorEfficiencyDetailVO detailVO : detailVOPage.getRecords()){
|
|
|
+ if (ObjectUtil.isNotNull(detailVO.getMembers())){
|
|
|
+ JSONArray jsonArray = JSONArray.parseArray(detailVO.getMembers());
|
|
|
+ List<Long> membersId = jsonArray.toJavaList(Long.class);
|
|
|
+ String names = null;
|
|
|
+ for (Long id : membersId) {
|
|
|
+ if (ObjectUtil.isNull(names)) {
|
|
|
+ names = userService.getById(id).getName() + ';';
|
|
|
+ } else {
|
|
|
+ names += userService.getById(id).getName() + ';';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ detailVO.setMembers(names);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return detailVOPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 效率详情列表导出
|
|
|
+ * @param dto 查询dto
|
|
|
+ * @return List<MajorEfficiencyDetailVO>
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<MajorEfficiencyDetailVO> exportMajorEfficiencyDetailVO(MajorStatisticalSelectDTO dto) {
|
|
|
+ return majorStatisticalStatementMapper.exportMajorEfficiencyDetailVO(dto);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 设置项目参与人
|
|
|
* @param majorLedgerVOList 台账集合
|
|
|
* @return List<MajorLedgerVO>
|