|
@@ -1237,7 +1237,12 @@ public class WmSupervisionManager {
|
|
|
}
|
|
|
|
|
|
// 获取当前企业当季度的包
|
|
|
- List<WmScorePackage> pkgs = packageService.list(queryWrapper);
|
|
|
+ // mybatisplus hardcode page size 500
|
|
|
+ // half half select to avoid network exception when executing too long
|
|
|
+ List<String> deptIds = depts.stream().map(dept -> dept.getDeptId().toString()).collect(Collectors.toList());
|
|
|
+ List<WmScorePackage> pkgs = packageService.list(queryWrapper.clone().in(WmScorePackage::getDeptId, deptIds.subList(0, deptIds.size()/2)));
|
|
|
+ pkgs.addAll(packageService.list(queryWrapper.in(WmScorePackage::getDeptId, deptIds.subList(deptIds.size()/2, deptIds.size()))));
|
|
|
+;
|
|
|
if (CollUtil.isEmpty(pkgs)) {
|
|
|
throw new BizException("没有查询到匹配积分包");
|
|
|
}
|
|
@@ -1251,7 +1256,16 @@ public class WmSupervisionManager {
|
|
|
.sorted()
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
- List<WmTaskSupervision> allSupervisions = taskSupervisionService.getSupervisionByPkgIds(pkgIds);
|
|
|
+ int taskBatch = 10000;
|
|
|
+ int lastIdx = pkgIds.size() > taskBatch ? taskBatch : pkgIds.size();
|
|
|
+ List<WmTaskSupervision> allSupervisions = taskSupervisionService.getSupervisionByPkgIds(pkgIds.subList(0, lastIdx));
|
|
|
+ if (pkgIds.size() > taskBatch) {
|
|
|
+ while(lastIdx < pkgIds.size()) {
|
|
|
+ allSupervisions.addAll(taskSupervisionService.getSupervisionByPkgIds(
|
|
|
+ pkgIds.subList(lastIdx, Math.min(lastIdx + taskBatch, pkgIds.size()))));
|
|
|
+ lastIdx += taskBatch;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
Map<Integer, List<WmTaskSupervision>> pkg2sups = allSupervisions.stream().collect(Collectors.groupingBy(
|
|
|
WmTaskSupervision::getPackageId, Collectors.toList())
|
|
@@ -1427,7 +1441,8 @@ public class WmSupervisionManager {
|
|
|
|
|
|
if (isSupervision && todos > 0) {
|
|
|
count++;
|
|
|
- if (count >= query.getCurrent() * query.getSize()) {
|
|
|
+ if (count > query.getCurrent() * query.getSize()) {
|
|
|
+ // Only calculate one more of next page
|
|
|
break;
|
|
|
}
|
|
|
}
|