|
@@ -33,6 +33,9 @@ import java.io.IOException;
|
|
|
import java.io.OutputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.CompletableFuture;
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
+import java.util.concurrent.Executors;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@RequestMapping
|
|
@@ -132,6 +135,8 @@ public class ExportController extends BaseController {
|
|
|
private MusicEnlightenmentQuestionnaireService musicEnlightenmentQuestionnaireService;
|
|
|
@Autowired
|
|
|
private MusicGroupService musicGroupService;
|
|
|
+ @Autowired
|
|
|
+ private SysTenantConfigService sysTenantConfigService;
|
|
|
|
|
|
@ApiOperation(value = "获取可导出字段")
|
|
|
@RequestMapping("export/getFields")
|
|
@@ -1951,9 +1956,6 @@ public class ExportController extends BaseController {
|
|
|
@GetMapping("export/superFindCourseSchedules")
|
|
|
@PreAuthorize("@pcs.hasPermissions('export/superFindCourseSchedules')")
|
|
|
public HttpResponseResult superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo) throws IOException {
|
|
|
- queryInfo.setPage(1);
|
|
|
- queryInfo.setRows(49999);
|
|
|
- queryInfo.setIsExport(true);
|
|
|
SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
if (sysUser == null) {
|
|
|
throw new BizException("用户信息获取失败");
|
|
@@ -1961,6 +1963,16 @@ public class ExportController extends BaseController {
|
|
|
queryInfo.setOrganIdList(organizationService.getEmployeeOrgan(sysUser.getId(),queryInfo.getOrganIdList(),sysUser.getIsSuperAdmin()));
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
MapUtil.populateMap(params, queryInfo);
|
|
|
+ Integer tenantId = TenantContextHolder.getTenantId();
|
|
|
+ if(Objects.equals("COURSE_TIME_ERROR",queryInfo.getSearchType())){
|
|
|
+ String courseStartTimeError = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_START_TIME_ERROR, tenantId);
|
|
|
+ String courseEndTimeError = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_END_TIME_ERROR, tenantId);
|
|
|
+ if(StringUtils.isEmpty(courseStartTimeError) || StringUtils.isEmpty(courseEndTimeError)){
|
|
|
+ return failed("没有可导出的数据");
|
|
|
+ }
|
|
|
+ params.put("courseStartTimeError",courseStartTimeError);
|
|
|
+ params.put("courseEndTimeError",courseEndTimeError);
|
|
|
+ }
|
|
|
int count = scheduleService.endCountCourseSchedules(params);
|
|
|
if (count <= 0) {
|
|
|
return failed("没有可导出的数据");
|
|
@@ -1969,7 +1981,20 @@ public class ExportController extends BaseController {
|
|
|
return failed("数据集太大,不能导出.最大数据集不能超过50000");
|
|
|
}
|
|
|
ManagerDownload managerDownload = exportService.saveManagerDownload(ExportTypeEnum.COURSE_SCHEDULE,sysUser.getId());
|
|
|
- exportService.superFindCourseSchedules(queryInfo, managerDownload);
|
|
|
+ ExecutorService executor = Executors.newCachedThreadPool();
|
|
|
+ CompletableFuture.runAsync(()->{
|
|
|
+ try {
|
|
|
+ TenantContextHolder.setTenantId(tenantId);
|
|
|
+ queryInfo.setPage(1);
|
|
|
+ queryInfo.setRows(49999);
|
|
|
+ queryInfo.setIsExport(true);
|
|
|
+ exportService.superFindCourseSchedules(queryInfo, managerDownload);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }finally {
|
|
|
+ TenantContextHolder.clearTenantId();
|
|
|
+ }
|
|
|
+ },executor);
|
|
|
HttpResponseResult<Object> succeed = succeed();
|
|
|
succeed.setMsg(managerDownload.getName() + "导出申请已提交,请到【报表中心-下载列表查看】");
|
|
|
return succeed;
|
|
@@ -2265,13 +2290,25 @@ public class ExportController extends BaseController {
|
|
|
BigDecimal submitRate = new BigDecimal(row.getExercisesReplyNum()).divide(new BigDecimal(row.getActualExercisesNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(oneHundred);
|
|
|
row.setSubmitRate(submitRate+"%");
|
|
|
}
|
|
|
+ if(row.getExercisesReplyNum() <= 0){
|
|
|
+ row.setExercisesMessageRate(zero.toString()+"%");
|
|
|
+ }else {
|
|
|
+ BigDecimal exercisesMessageRate = new BigDecimal(row.getExercisesMessageNum()).divide(new BigDecimal(row.getExercisesReplyNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(oneHundred);
|
|
|
+ row.setExercisesMessageRate(exercisesMessageRate+"%");
|
|
|
+ }
|
|
|
+ if(row.getExercisesReplyNum() <= 0){
|
|
|
+ row.setExercisesMessageTimelyRate(zero.toString()+"%");
|
|
|
+ }else {
|
|
|
+ BigDecimal exercisesMessageTimelyRate = new BigDecimal(row.getExercisesMessageTimelyNum()).divide(new BigDecimal(row.getExercisesReplyNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(oneHundred);
|
|
|
+ row.setExercisesMessageTimelyRate(exercisesMessageTimelyRate+"%");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
- String[] header = {"分部", "老师编号", "老师姓名", "服务周期", "课后训练(节)", "课外训练(人)", "布置次数", "提交次数",
|
|
|
+ String[] header = {"分部", "老师编号", "老师姓名", "服务周期", "课后训练(节)", "课后训练(人)", "课外训练(人)", "预计训练布置(人次)", "实际训练布置(人次)", "提交次数", "评价次数", "及时评价次数", "及时评价率", "作业点评率",
|
|
|
"训练布置", "训练点评", "训练提交率",
|
|
|
"提醒时间", "操作人"};
|
|
|
- String[] body = {"organName", "teacherId", "teacherName", "dateRange", "homeworkNum", "exerciseNum", "actualExercisesNum", "exercisesReplyNum",
|
|
|
+ String[] body = {"organName", "teacherId", "teacherName", "dateRange", "homeworkNum", "homeworkStuNum", "exerciseNum", "expectExercisesNum", "actualExercisesNum", "exercisesReplyNum","exercisesMessageNum","exercisesMessageTimelyNum","exercisesMessageTimelyRate","exercisesMessageRate",
|
|
|
"expectExercisesNum>actualExercisesNum?'异常':'正常'", "exercisesReplyNum>exercisesMessageNum?'异常':'正常'", "submitRate",
|
|
|
"remindDate", "operatorName"};
|
|
|
HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result.getRows());
|