|
|
@@ -4,6 +4,8 @@ import cn.hutool.core.date.DateField;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
@@ -17,6 +19,8 @@ import com.xunmei.common.core.domain.R;
|
|
|
import com.xunmei.common.core.domain.drill.domain.*;
|
|
|
import com.xunmei.common.core.domain.drill.dto.*;
|
|
|
import com.xunmei.common.core.domain.drill.vo.*;
|
|
|
+import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingTaskToUser;
|
|
|
+import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskExportVo;
|
|
|
import com.xunmei.common.core.domain.panel.dto.PanelListDto;
|
|
|
import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
|
|
|
import com.xunmei.common.core.domain.panel.vo.PanelListVo;
|
|
|
@@ -26,6 +30,7 @@ import com.xunmei.common.core.enums.CycleCommonEnum;
|
|
|
import com.xunmei.common.core.enums.ExportPdfType;
|
|
|
import com.xunmei.common.core.enums.OrgTypeEnum;
|
|
|
import com.xunmei.common.core.enums.drill.*;
|
|
|
+import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
|
|
|
import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
|
|
|
import com.xunmei.common.core.exception.SystemException;
|
|
|
import com.xunmei.common.core.utils.DateUtils;
|
|
|
@@ -57,8 +62,10 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
+import java.net.URLEncoder;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
@@ -102,6 +109,10 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
|
|
|
private RemoteWorkTimeService workTimeService;
|
|
|
|
|
|
@Autowired
|
|
|
+ private RemoteDictDataService remoteDictDataService;
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
@Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
|
|
|
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
|
|
|
|
|
@@ -956,6 +967,53 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
|
|
|
return waitRecTaskList;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void export(CoreDrillTaskPageDto request, HttpServletResponse response) {
|
|
|
+ dealParam(request);
|
|
|
+ List<CoreDrillTaskExportVo> list = coreDrillTaskMapper.selectDrillTaskExportList(request);
|
|
|
+ if (ObjectUtil.isEmpty(list)){
|
|
|
+ throw new SystemException("未获取到数据");
|
|
|
+ }
|
|
|
+ Map<String, SysDictData> dicts = remoteDictDataService.selectDictByeType("core_drill_type", SecurityConstants.INNER)
|
|
|
+ .stream().collect(Collectors.toMap(SysDictData::getDictValue, v -> v));
|
|
|
+ List<Long> taskIds = list.stream().map(x -> x.getId()).collect(Collectors.toList());
|
|
|
+ List<CoreDrillTaskToUser> allTaskUserList = taskToUserMapper.selectList(new LambdaQueryWrapper<CoreDrillTaskToUser>().in(CoreDrillTaskToUser::getDrillTaskId,taskIds));
|
|
|
+
|
|
|
+ for (CoreDrillTaskExportVo task : list) {
|
|
|
+ task.setStatusText(DrillDoStatus.getName(task.getStatus()));
|
|
|
+ if(dicts.containsKey(task.getType()))
|
|
|
+ {
|
|
|
+ task.setTypeText( dicts.get(task.getType()).getDictLabel());
|
|
|
+ }
|
|
|
+ List<CoreDrillTaskToUser> userList = allTaskUserList.stream().filter(x->x.getDrillTaskId().equals(task.getId())).collect(Collectors.toList());
|
|
|
+ if (ObjectUtil.isNotEmpty(userList)) {
|
|
|
+ task.setTaskUserNames(getUserName(userList, 1));
|
|
|
+ task.setAbsenceNames(getUserName(userList, 2));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ // 设置响应头
|
|
|
+ response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("演练任务", "utf-8"));
|
|
|
+ response.setContentType("application/octet-stream;charset=UTF-8");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+ // 数据导出
|
|
|
+ EasyExcel.write(response.getOutputStream(), CoreDrillTaskExportVo.class)
|
|
|
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("演练任务").doWrite(list);
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 重置response
|
|
|
+ response.reset();
|
|
|
+ response.setContentType("application/json");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getUserName(List<CoreDrillTaskToUser> userList, Integer type) {
|
|
|
+ return userList.stream()
|
|
|
+ .filter(user -> ObjectUtil.equal(type, user.getType()))
|
|
|
+ .map(CoreDrillTaskToUser::getUserName)
|
|
|
+ .collect(Collectors.joining(","));
|
|
|
+ }
|
|
|
+
|
|
|
private void dealListData(List<PanelListVo> list, Long userId) {
|
|
|
if (ObjectUtil.isEmpty(list)) {
|
|
|
return;
|