|
@@ -32,7 +32,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import static cn.com.qmth.examcloud.core.print.common.Constants.PRT_CODE_500;
|
|
|
|
|
@@ -138,11 +140,14 @@ public class PrintingProjectStatisticServiceImpl implements PrintingProjectStati
|
|
|
//常规-A4数量(试卷袋数 * 4)
|
|
|
final int normalA4 = totalPkg * 4;
|
|
|
|
|
|
+ //统计备份A3、A4数
|
|
|
+ Map<String, Integer> backupMaps = this.parseBackupA3A4(backupSetting, packageCodes, project.getExamId());
|
|
|
+
|
|
|
//备份-A3数量(每袋冗余数 + 单独备份袋数)
|
|
|
- final int backupA3 = this.parseBackupA3(backupSetting, packageCodes, project.getExamId());
|
|
|
+ final int backupA3 = backupMaps.get("backupA3");
|
|
|
|
|
|
//备份-A4数量(试卷袋数 * 2)
|
|
|
- final int backupA4 = totalPkg * 2;
|
|
|
+ final int backupA4 = backupMaps.get("backupA4");
|
|
|
|
|
|
statistic.setTotalStudent(totalStudent);
|
|
|
statistic.setTotalCourse(totalCourse);
|
|
@@ -170,40 +175,56 @@ public class PrintingProjectStatisticServiceImpl implements PrintingProjectStati
|
|
|
return sumPaperA3 + (totalStudent * 2);
|
|
|
}
|
|
|
|
|
|
- private int parseBackupA3(ProjectBackupSetting backupSetting, List<String> packageCodes, Long examId) {
|
|
|
+ private Map<String, Integer> parseBackupA3A4(ProjectBackupSetting backupSetting, List<String> packageCodes, Long examId) {
|
|
|
+ Map<String, Integer> backupMaps = new HashMap<>();
|
|
|
+ backupMaps.put("backupA3", 0);
|
|
|
+ backupMaps.put("backupA4", 0);
|
|
|
+
|
|
|
if (backupSetting == null) {
|
|
|
- return 0;
|
|
|
+ return backupMaps;
|
|
|
}
|
|
|
|
|
|
if (!backupSetting.getNeedEachPkg() && !backupSetting.getNeedAlonePkg()) {
|
|
|
- return 0;
|
|
|
+ return backupMaps;
|
|
|
}
|
|
|
|
|
|
- int sumA3 = 0;
|
|
|
+ int backupA3 = 0, backupA4 = 0;
|
|
|
|
|
|
if (backupSetting.getNeedEachPkg()) {
|
|
|
//备份A3 = ∑n 试卷袋(X考生 * P%备份比例) * 2
|
|
|
int eachTotal = 0;
|
|
|
+
|
|
|
+ Double percent = backupSetting.getEachPkgPercent();//备份比例:高于最大取最大;低于最小则取最小
|
|
|
+ if (percent > backupSetting.getEachPkgMax()) {
|
|
|
+ percent = backupSetting.getEachPkgMax();
|
|
|
+ }
|
|
|
+ if (percent < backupSetting.getEachPkgMin()) {
|
|
|
+ percent = backupSetting.getEachPkgMin();
|
|
|
+ }
|
|
|
+
|
|
|
for (String packageCode : packageCodes) {
|
|
|
- eachTotal += statisticService.countExamTotalStudentByPackageCode(examId, packageCode);
|
|
|
+ int count = statisticService.countExamTotalStudentByPackageCode(examId, packageCode);
|
|
|
+ eachTotal += Math.ceil((count * percent) / 100);
|
|
|
}
|
|
|
- sumA3 += (eachTotal * 2);
|
|
|
+ backupA3 += (eachTotal * 2);
|
|
|
}
|
|
|
|
|
|
if (backupSetting.getNeedAlonePkg()) {
|
|
|
+ //备份-A4数量:只有单独备份袋设置才计算,默认不用算
|
|
|
+ backupA4 = packageCodes.size() * 2;
|
|
|
+
|
|
|
//备份A3 = ∑n 学习中心或考点(X考生 * P%备份比例) * 2
|
|
|
int aloneTotal = 0;
|
|
|
|
|
|
- if (BackupGroupType.isLeanCenter(backupSetting.getGroupType())) {
|
|
|
- //备份比例:高于最大取最大;低于最小则取最小
|
|
|
- Double percent = backupSetting.getAlonePkgPercent();
|
|
|
- if (percent > backupSetting.getAlonePkgMax()) {
|
|
|
- percent = backupSetting.getAlonePkgMin();
|
|
|
- }
|
|
|
- if (percent < backupSetting.getAlonePkgMin()) {
|
|
|
- percent = backupSetting.getAlonePkgMin();
|
|
|
- }
|
|
|
+ Double percent = backupSetting.getAlonePkgPercent();//备份比例:高于最大取最大;低于最小则取最小
|
|
|
+ if (percent > backupSetting.getAlonePkgMax()) {
|
|
|
+ percent = backupSetting.getAlonePkgMax();
|
|
|
+ }
|
|
|
+ if (percent < backupSetting.getAlonePkgMin()) {
|
|
|
+ percent = backupSetting.getAlonePkgMin();
|
|
|
+ }
|
|
|
|
|
|
+ if (BackupGroupType.isLeanCenter(backupSetting.getGroupType())) {
|
|
|
//计算每个学习中心的备份数
|
|
|
List<Long> learnCenters = statisticService.findExamLearnCenters(examId);
|
|
|
for (Long learnCenterId : learnCenters) {
|
|
@@ -211,15 +232,6 @@ public class PrintingProjectStatisticServiceImpl implements PrintingProjectStati
|
|
|
aloneTotal += Math.ceil((count * percent) / 100);
|
|
|
}
|
|
|
} else {
|
|
|
- //备份比例:高于最大取最大;低于最小则取最小
|
|
|
- Double percent = backupSetting.getAlonePkgPercent();
|
|
|
- if (percent > backupSetting.getAlonePkgMax()) {
|
|
|
- percent = backupSetting.getAlonePkgMax();
|
|
|
- }
|
|
|
- if (percent < backupSetting.getAlonePkgMin()) {
|
|
|
- percent = backupSetting.getAlonePkgMin();
|
|
|
- }
|
|
|
-
|
|
|
//计算每个考点的备份数
|
|
|
List<String> siteIds = statisticService.findExamSites(examId);
|
|
|
for (String siteId : siteIds) {
|
|
@@ -228,10 +240,12 @@ public class PrintingProjectStatisticServiceImpl implements PrintingProjectStati
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- sumA3 += (aloneTotal * 2);
|
|
|
+ backupA3 += (aloneTotal * 2);
|
|
|
}
|
|
|
|
|
|
- return sumA3;
|
|
|
+ backupMaps.put("backupA3", backupA3);
|
|
|
+ backupMaps.put("backupA4", backupA4);
|
|
|
+ return backupMaps;
|
|
|
}
|
|
|
|
|
|
}
|