package com.ruoyi.web.controller.api; import java.io.IOException; import java.math.BigDecimal; import java.net.URLEncoder; import java.time.LocalDateTime; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.io.resource.ClassPathResource; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.domain.BaseModel; import com.ruoyi.common.utils.CodeGenerateUtils; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.WebUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.dto.TTaskAuditBatchDTO; import com.ruoyi.system.dto.TTaskAuditDTO; import com.ruoyi.system.model.TTaskDetail; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.system.dto.TTaskDTO; import com.ruoyi.system.model.*; import com.ruoyi.system.query.TaskListQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.utils.TemplateMessageSendUtil; import com.ruoyi.system.vo.system.*; import com.ruoyi.web.controller.tool.EmailUtils; import com.ruoyi.web.controller.tool.MsgUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import oshi.driver.mac.net.NetStat; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; /** *

* 任务记录 前端控制器 *

* * @author xiaochen * @since 2025-05-28 */ @Api(tags = "任务记录") @RestController @RequestMapping("/t-task") public class TTaskController { @Resource private TTaskCleanService taskCleanerService; @Resource private TNoticeService noticeService; @Resource private TEarlyWarningService earlyWarningService; @Resource private TTaskDetailService taskDetailService; @Resource private TLocationTypeService locationTypeService; @Resource private TLocationService locationService; @Resource private TProjectDeptService projectDeptService; @Resource private TTaskDetailService tTaskDetailService; @Resource private TDeptService deptService; @Resource private ISysUserService sysUserService; @Resource private TokenService tokenService; @Resource private TCleanerService cleanerService; @ApiOperation(value = "任务记录分页列表") @PostMapping(value = "/pageList") public R> pageList(@RequestBody TaskListQuery query) { List sysUsers = sysUserService.selectAllList(); List locationList = locationService.list(); if (StringUtils.hasLength(query.getDeptName())) { List list = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list(); List listIds = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list() .stream().map(TProjectDept::getId).collect(Collectors.toList()); for (TProjectDept tProjectDept : list) { if (tProjectDept.getParentId().equals("0")) { List collect = projectDeptService.lambdaQuery().eq(TProjectDept::getParentId, tProjectDept.getId()).list() .stream().map(TProjectDept::getId).collect(Collectors.toList()); listIds.addAll(collect); listIds.add(tProjectDept.getId()); } } List deptIds = deptService.lambdaQuery().like(TDept::getDeptName, query.getDeptName()).list() .stream().map(TDept::getId).collect(Collectors.toList()); listIds.addAll(deptIds); if (listIds.isEmpty()) { return R.ok(new PageInfo<>()); } List collect = sysUsers.stream().filter(e -> listIds.contains(e.getDeptId())) .map(SysUser::getUserId).collect(Collectors.toList()); query.setPatrolInspectorIds(collect); if (StringUtils.hasLength(query.getPhonenumber())) { List patrolInspectorIds = sysUsers.stream().filter(sysUser -> sysUser.getPhonenumber().contains(query.getPhonenumber()) && listIds.contains(sysUser.getDeptId()) ).map(SysUser::getUserId).collect(Collectors.toList()); if (patrolInspectorIds.isEmpty()) { return R.ok(new PageInfo<>()); } query.setPatrolInspectorIds(patrolInspectorIds); } } if (StringUtils.hasLength(query.getPhonenumber())) { List patrolInspectorIds = sysUsers.stream().filter(sysUser -> sysUser.getPhonenumber().contains(query.getPhonenumber()) ).map(SysUser::getUserId).collect(Collectors.toList()); query.setPatrolInspectorIds(patrolInspectorIds); if (!query.getPatrolInspectorIds().isEmpty()) { // 取交集 patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList()); } query.setPatrolInspectorIds(patrolInspectorIds); if (patrolInspectorIds.isEmpty()) { return R.ok(new PageInfo<>()); } } if (query.getClearStatus() != null) { List collect = tTaskDetailService.lambdaQuery().eq(TTaskDetail::getClearStatus, query.getClearStatus()) .list().stream().distinct().map(TTaskDetail::getTaskId).collect(Collectors.toList()); query.setTaskIds(collect); if (collect.isEmpty()) { return R.ok(new PageInfo<>()); } } if (StringUtils.hasLength(query.getLocationType())) { List collect = locationList.stream().filter(e -> e.getLocationType().equals(query.getLocationType())).map(TLocation::getId) .collect(Collectors.toList()); if (collect.isEmpty()) { return R.ok(new PageInfo<>()); } query.setLocationIds(collect); } if (StringUtils.hasLength(query.getLocationName())) { List collect = locationList.stream().filter(e -> e.getLocationName().contains(query.getLocationName())).map(TLocation::getId) .collect(Collectors.toList()); query.setLocationIds(collect); if (collect.isEmpty()) { return R.ok(new PageInfo<>()); } else { collect = collect.stream().filter(query.getLocationIds()::contains).collect(Collectors.toList()); if (collect.isEmpty()) { return R.ok(new PageInfo<>()); } query.setLocationIds(collect); } } return R.ok(taskCleanerService.pageList(query)); } @Log(title = "新增任务", businessType = BusinessType.INSERT) @ApiOperation(value = "新增任务") @PostMapping(value = "/add") public R add(@RequestBody TTaskDTO dto) { String nameAndCode = CodeGenerateUtils.generateVolumeSn(); dto.setTaskName(nameAndCode); dto.setTaskCode(nameAndCode); dto.setTaskType(2); String implementTime1 = dto.getImplementTime1(); // 转化为LocalDateTime类型 dto.setImplementTime(LocalDateTime.parse(implementTime1, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); TCleaner byId = cleanerService.getById(dto.getCleanerId()); dto.setProjectId(byId.getProjectId()); taskCleanerService.save(dto); return R.ok(); } @Resource private MsgUtils msgUtils; @Resource private TNoticeSetService noticeSetService; @Resource private TDictDataService dictDataService; @Resource private TemplateMessageSendUtil templateMessageSendUtil; @Log(title = "审核任务", businessType = BusinessType.UPDATE) @ApiOperation(value = "审核任务") @PostMapping(value = "/audit") public R audit(@RequestBody TTaskAuditDTO dto) throws Exception { dto.setAuditTime(LocalDateTime.now()); TTask task = taskCleanerService.getById(dto.getTaskId()); SysUser auditPerson = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); SysUser sysUser = sysUserService.selectUserById(Long.valueOf(task.getPatrolInspector())); TTaskDetail one = taskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, dto.getTaskId()) .eq(TTaskDetail::getHandleType, 1) .orderByDesc(BaseModel::getCreateTime).last("limit 1").one(); dto.setClearStatus(one.getClearStatus()); TLocation location = locationService.getById(task.getLocationId()); TNotice tNotice = new TNotice(); TNoticeSet noticeSet = noticeSetService.lambdaQuery().eq(TNoticeSet::getType, 2).last("limit 1") .one(); // 邮箱 TDictData email = dictDataService.lambdaQuery().eq(TDictData::getDataType,4).one(); // 授权码 TDictData code = dictDataService.lambdaQuery().eq(TDictData::getDataType,5).one(); tNotice.setUserId(task.getPatrolInspector()); tNotice.setStatus(1); tNotice.setDataId(task.getId()); tNotice.setNoticeSetType(noticeSet.getNoticeType()); if (dto.getAuditStatus() == 2) { dto.setHandleType(3); if (StringUtils.hasLength(location.getUnqualifiedTaskId())) { if (location.getUnqualifiedTaskId().split(",").length == 2) { // 已经两条不合格了 生成点位不合格预警记录 location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + dto.getTaskId()); TEarlyWarning tEarlyWarning = new TEarlyWarning(); tEarlyWarning.setWarningType(2); tEarlyWarning.setTaskId(location.getUnqualifiedTaskId()); earlyWarningService.save(tEarlyWarning); location.setUnqualifiedTaskId(""); locationService.updateById(location); }else{ if (StringUtils.hasLength(location.getUnqualifiedTaskId())){ location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + dto.getTaskId()); }else{ location.setUnqualifiedTaskId(dto.getTaskId()); } locationService.updateById(location); } } else { if (StringUtils.hasLength(location.getUnqualifiedTaskId())){ location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + dto.getTaskId()); }else{ location.setUnqualifiedTaskId(dto.getTaskId()); } locationService.updateById(location); } // 将任务修改为待整改 task.setStatus(4); taskCleanerService.updateById(task); // 增加消息 tNotice.setNoticeType(1); tNotice.setNoticeContent("【" + location.getLocationName() + "】任务不合格,请重新上传!"); if (sysUser!=null){ switch (noticeSet.getNoticeType()) { case 1: msgUtils.sendMsg1(sysUser.getPhonenumber(),location.getLocationName(),"驳回"); break; case 2: if (StringUtils.hasLength(email.getDataContent())&&StringUtils.hasLength(code.getDataContent())){ EmailUtils.sendEmail(sysUser.getEmail(),email.getDataContent(),code.getDataContent(),"【" + location.getLocationName() + "】任务不合格,请重新上传!"); } break; case 3: if (StringUtils.hasLength(sysUser.getOpenId())){ templateMessageSendUtil.wxTemplateTaskResultRequest(sysUser.getOpenId(), location.getLocationName(),"驳回",auditPerson.getNickName()); } break; } } } else { dto.setHandleType(2); if (dto.getClearStatus() == 2) { if (StringUtils.hasLength(location.getUnqualifiedTaskId())) { if (location.getUnqualifiedTaskId().split(",").length == 2) { // 已经两条不合格了 生成点位不合格预警记录 location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + dto.getTaskId()); TEarlyWarning tEarlyWarning = new TEarlyWarning(); tEarlyWarning.setWarningType(2); tEarlyWarning.setTaskId(location.getUnqualifiedTaskId()); earlyWarningService.save(tEarlyWarning); location.setUnqualifiedTaskId(""); locationService.updateById(location); }else{ if (StringUtils.hasLength(location.getUnqualifiedTaskId())){ location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + dto.getTaskId()); }else{ location.setUnqualifiedTaskId(dto.getTaskId()); } locationService.updateById(location); } } else { if (StringUtils.hasLength(location.getUnqualifiedTaskId())){ location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + dto.getTaskId()); }else{ location.setUnqualifiedTaskId(dto.getTaskId()); } locationService.updateById(location); } } dto.setHandleType(2); // 如果是初次审核就通过 将状态设置为已完成 List list = tTaskDetailService.lambdaQuery() .eq(TTaskDetail::getHandleType, 1) .eq(TTaskDetail::getTaskId, dto.getTaskId()).list(); if (list.size() < 2) { task.setStatus(6); taskCleanerService.updateById(task); tNotice.setNoticeType(2); tNotice.setNoticeContent("【" + location.getLocationName() + "】任务已通过"); } else { task.setStatus(5); taskCleanerService.updateById(task); tNotice.setNoticeType(2); tNotice.setNoticeContent("【" + location.getLocationName() + "】任务已通过"); } if (sysUser!=null){ switch (noticeSet.getNoticeType()) { case 1: msgUtils.sendMsg1(sysUser.getPhonenumber(),location.getLocationName(),"通过"); break; case 2: if (StringUtils.hasLength(email.getDataContent())&&StringUtils.hasLength(code.getDataContent())){ EmailUtils.sendEmail(sysUser.getEmail(),email.getDataContent(),code.getDataContent(),"【" + location.getLocationName() + "】任务已通过"); } break; case 3: if (StringUtils.hasLength(sysUser.getOpenId())){ templateMessageSendUtil.wxTemplateTaskResultRequest(sysUser.getOpenId(), location.getLocationName(),"驳回",auditPerson.getNickName()); } break; } } } noticeService.save(tNotice); dto.setAuditPerson(tokenService.getLoginUser().getUserId() + ""); dto.setAuditRemark(dto.getAuditRemark()); dto.setAuditTime(LocalDateTime.now()); taskDetailService.save(dto); one.setAuditPerson(tokenService.getLoginUser().getUserId() + ""); one.setAuditTime(LocalDateTime.now()); one.setAuditRemark(dto.getAuditRemark()); one.setAuditStatus(dto.getAuditStatus()); taskDetailService.updateById(one); return R.ok(); } @Log(title = "批量审核任务", businessType = BusinessType.UPDATE) @ApiOperation(value = "批量审核任务") @PostMapping(value = "/auditBatch") public R auditBatch(@RequestBody TTaskAuditBatchDTO dto) throws Exception { List tTaskDetails = new ArrayList<>(); List locations = locationService.list(); List sysUsers = sysUserService.selectAllList(); SysUser auditPerson = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); List taskDetails = taskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) .in(TTaskDetail::getTaskId, Arrays.asList(dto.getTaskIds().split(","))) .eq(TTaskDetail::getHandleType,1) .orderByDesc(TTaskDetail::getCreateTime)); taskDetails = new ArrayList<>(taskDetails.stream() .collect(Collectors.groupingBy( TTaskDetail::getTaskId, Collectors.collectingAndThen( Collectors.toList(), listAll -> listAll.get(0) ) )) .values()); for (String s : dto.getTaskIds().split(",")) { TTask task = taskCleanerService.getById(s); SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(task.getPatrolInspector()))) .findFirst().orElse(null); TLocation location = locations.stream().filter(e -> e.getId().equals(task.getLocationId())) .findFirst().orElse(null); TTaskDetail tTaskDetail = new TTaskDetail(); tTaskDetail.setTaskId(s); tTaskDetail.setAuditTime(LocalDateTime.now()); tTaskDetail.setAuditPerson(tokenService.getLoginUser().getUserId() + ""); // if (dto.getAuditStatus() == 2) { // tTaskDetail.setHandleType(3); // // 将任务修改为待整改 // task.setStatus(4); // taskCleanerService.updateById(task); // } else { // tTaskDetail.setHandleType(2); // // 如果是初次审核就通过 将状态设置为已完成 // List list = taskDetailService.lambdaQuery() // .eq(TTaskDetail::getHandleType, 1).eq(TTaskDetail::getTaskId, s).list(); // if (list.size() == 1) { // task.setStatus(6); // taskCleanerService.updateById(task); // } else { // task.setStatus(5); // taskCleanerService.updateById(task); // } // } TNotice tNotice = new TNotice(); TNoticeSet noticeSet = noticeSetService.lambdaQuery().eq(TNoticeSet::getType, 2).last("limit 1") .one(); // 邮箱 TDictData email = dictDataService.lambdaQuery().eq(TDictData::getDataType,4).one(); // 授权码 TDictData code = dictDataService.lambdaQuery().eq(TDictData::getDataType,5).one(); tNotice.setUserId(task.getPatrolInspector()); tNotice.setStatus(1); tNotice.setDataId(task.getId()); tNotice.setNoticeSetType(noticeSet.getNoticeType()); TTaskDetail taskDetail = taskDetails.stream().filter(e -> e.getTaskId().equals(s)) .findFirst().orElse(null); taskDetail.setAuditPerson(tokenService.getLoginUser().getUserId() + ""); taskDetail.setAuditTime(LocalDateTime.now()); taskDetail.setAuditRemark(dto.getAuditRemark()); taskDetail.setAuditStatus(dto.getAuditStatus()); taskDetailService.updateById(taskDetail); if (dto.getAuditStatus() == 2) { if (StringUtils.hasLength(location.getUnqualifiedTaskId())) { if (location.getUnqualifiedTaskId().split(",").length == 2) { // 已经两条不合格了 生成点位不合格预警记录 location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + task.getId()); TEarlyWarning tEarlyWarning = new TEarlyWarning(); tEarlyWarning.setWarningType(2); tEarlyWarning.setTaskId(location.getUnqualifiedTaskId()); earlyWarningService.save(tEarlyWarning); location.setUnqualifiedTaskId(""); locationService.updateById(location); }else{ if (StringUtils.hasLength(location.getUnqualifiedTaskId())){ location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + task.getId()); }else{ location.setUnqualifiedTaskId(task.getId()); } locationService.updateById(location); } } else { if (StringUtils.hasLength(location.getUnqualifiedTaskId())){ location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + task.getId()); }else{ location.setUnqualifiedTaskId(task.getId()); } locationService.updateById(location); } tTaskDetail.setHandleType(3); tTaskDetail.setAuditRemark(dto.getAuditRemark()); // 将任务修改为待整改 task.setStatus(4); taskCleanerService.updateById(task); // 增加消息 tNotice.setNoticeType(1); tNotice.setNoticeContent("【" + location.getLocationName() + "】任务不合格,请重新上传!"); if (sysUser!=null){ switch (noticeSet.getNoticeType()) { case 1: msgUtils.sendMsg1(sysUser.getPhonenumber(),location.getLocationName(),"驳回"); break; case 2: if (StringUtils.hasLength(email.getDataContent())&&StringUtils.hasLength(code.getDataContent())){ EmailUtils.sendEmail(sysUser.getEmail(),email.getDataContent(),code.getDataContent(),"【" + location.getLocationName() + "】任务不合格,请重新上传!"); } break; case 3: break; } } } else { if (taskDetail.getClearStatus() == 2) { if (StringUtils.hasLength(location.getUnqualifiedTaskId())) { if (location.getUnqualifiedTaskId().split(",").length == 2) { // 已经两条不合格了 生成点位不合格预警记录 location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + task.getId()); TEarlyWarning tEarlyWarning = new TEarlyWarning(); tEarlyWarning.setWarningType(2); tEarlyWarning.setTaskId(location.getUnqualifiedTaskId()); earlyWarningService.save(tEarlyWarning); location.setUnqualifiedTaskId(""); locationService.updateById(location); }else{ if (StringUtils.hasLength(location.getUnqualifiedTaskId())){ location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + task.getId()); }else{ location.setUnqualifiedTaskId(task.getId()); } locationService.updateById(location); } } else { if (StringUtils.hasLength(location.getUnqualifiedTaskId())){ location.setUnqualifiedTaskId(location.getUnqualifiedTaskId() + "," + task.getId()); }else{ location.setUnqualifiedTaskId(task.getId()); } locationService.updateById(location); } } taskDetail.setHandleType(2); // 如果是初次审核就通过 将状态设置为已完成 List list = tTaskDetailService.lambdaQuery() .eq(TTaskDetail::getHandleType, 1) .eq(TTaskDetail::getTaskId, task.getId()).list(); if (list.size() < 2) { task.setStatus(6); taskCleanerService.updateById(task); tNotice.setNoticeType(2); tNotice.setNoticeContent("【" + location.getLocationName() + "】任务已通过"); } else { task.setStatus(5); taskCleanerService.updateById(task); tNotice.setNoticeType(2); tNotice.setNoticeContent("【" + location.getLocationName() + "】任务已通过"); } if (sysUser!=null){ switch (noticeSet.getNoticeType()) { case 1: msgUtils.sendMsg1(sysUser.getPhonenumber(),location.getLocationName(),"通过"); break; case 2: if (StringUtils.hasLength(email.getDataContent())&&StringUtils.hasLength(code.getDataContent())){ EmailUtils.sendEmail(sysUser.getEmail(),email.getDataContent(),code.getDataContent(),"【" + location.getLocationName() + "】任务已通过"); } break; case 3: if (StringUtils.hasLength(sysUser.getOpenId())){ templateMessageSendUtil.wxTemplateTaskResultRequest(sysUser.getOpenId(), location.getLocationName(),"驳回",auditPerson.getNickName()); } break; } } } tTaskDetails.add(tTaskDetail); } taskDetailService.saveBatch(tTaskDetails); return R.ok(); } @ApiOperation(value = "详情任务") @GetMapping(value = "/detail") public R detail(@RequestParam String id) { List list = taskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, id) .orderByDesc(BaseModel::getCreateTime).list(); TaskDetailVO taskDetailVO = new TaskDetailVO(); TTask byId = taskCleanerService.getById(id); BeanUtils.copyProperties(byId, taskDetailVO); TLocation byId1 = locationService.getById(byId.getLocationId()); TLocationType byId2 = locationTypeService.getById(byId1.getLocationType()); taskDetailVO.setLocationAddress(byId1.getLocationAddress()); taskDetailVO.setLocationIcon(byId2.getLocationIcon()); taskDetailVO.setLocationName(byId1.getLocationName()); taskDetailVO.setLocationTypeName(byId2.getLocationName()); TTaskDetail tTaskDetail = list.stream().filter(e -> e.getHandleType() == 1).findFirst().orElse(null); if (tTaskDetail != null && tTaskDetail.getUnqualified() != null) { TDictData byId3 = dictDataService.getById(tTaskDetail.getUnqualified()); if (byId3 != null) { tTaskDetail.setUnqualifiedName(byId3.getDataContent()); } } if (tTaskDetail != null) { tTaskDetail.setFinishTime(tTaskDetail.getCreateTime()); } taskDetailVO.setTaskDetail(tTaskDetail); taskDetailVO.setRecords(list); return R.ok(taskDetailVO); } @ApiOperation(value = "详情任务-根据任务编号") @GetMapping(value = "/detailByTaskCode") public R detailByTaskCode(@RequestParam String taskCode) { TTask byId = taskCleanerService.lambdaQuery().eq(TTask::getTaskCode, taskCode).last("limit 1").one(); List list = taskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, byId.getId()) .orderByDesc(BaseModel::getCreateTime).list(); TaskDetailVO taskDetailVO = new TaskDetailVO(); BeanUtils.copyProperties(byId, taskDetailVO); TLocation byId1 = locationService.getById(byId.getLocationId()); TLocationType byId2 = locationTypeService.getById(byId1.getLocationType()); taskDetailVO.setLocationAddress(byId1.getLocationAddress()); taskDetailVO.setLocationIcon(byId2.getLocationIcon()); taskDetailVO.setLocationName(byId1.getLocationName()); taskDetailVO.setLocationTypeName(byId2.getLocationName()); TTaskDetail tTaskDetail = list.stream().filter(e -> e.getHandleType() == 1).findFirst().orElse(null); if (tTaskDetail != null && tTaskDetail.getUnqualified() != null) { TDictData byId3 = dictDataService.getById(tTaskDetail.getUnqualified()); if (byId3 != null) { tTaskDetail.setUnqualifiedName(byId3.getDataContent()); } } if (tTaskDetail != null) { tTaskDetail.setFinishTime(tTaskDetail.getCreateTime()); } taskDetailVO.setTaskDetail(tTaskDetail); taskDetailVO.setRecords(list); return R.ok(taskDetailVO); } @ApiOperation(value = "详情任务-操作记录-详情") @GetMapping(value = "/detailRecord") public R detailRecord(@RequestParam String id) { TaskRecordDetailVO taskDetailVO = new TaskRecordDetailVO(); TTaskDetail byId4 = taskDetailService.getById(id); TTask byId = taskCleanerService.getById(byId4.getTaskId()); BeanUtils.copyProperties(byId, taskDetailVO); TLocation byId1 = locationService.getById(byId.getLocationId()); TLocationType byId2 = locationTypeService.getById(byId1.getLocationType()); taskDetailVO.setLocationAddress(byId1.getLocationAddress()); taskDetailVO.setLocationIcon(byId2.getLocationIcon()); taskDetailVO.setLocationName(byId2.getLocationName()); if (byId4.getUnqualified() != null) { TDictData byId3 = dictDataService.getById(byId4.getUnqualified()); if (byId3 != null) { byId4.setUnqualifiedName(byId3.getDataContent()); } } if (byId4.getAuditPerson() != null) { SysUser sysUser = sysUserService.selectUserById(Long.valueOf(byId4.getAuditPerson())); if (sysUser != null) { byId4.setAuditPersonName(sysUser.getUserName()); } } taskDetailVO.setTaskDetail(byId4); return R.ok(taskDetailVO); } @Log(title = "批量删除任务", businessType = BusinessType.DELETE) @ApiOperation(value = "批量删除任务") @DeleteMapping(value = "/deleteByIds") public R deleteByIds(@RequestParam String ids) { String[] split = ids.split(","); taskCleanerService.removeBatchByIds(Arrays.asList(split)); return R.ok(); } @Log(title = "任务记录导出", businessType = BusinessType.OTHER) @ApiOperation(value = "任务记录导出") @PostMapping(value = "/exportExcel") public void exportExcel(@RequestBody TaskListQuery query) { List sysUsers = sysUserService.selectAllList(); List locationList = locationService.list(); if (CollectionUtils.isEmpty(query.getTaskIds())) { if (StringUtils.hasLength(query.getDeptName())) { List list = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list(); List listIds = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list() .stream().map(TProjectDept::getId).collect(Collectors.toList()); for (TProjectDept tProjectDept : list) { if (tProjectDept.getParentId().equals("0")) { List collect = projectDeptService.lambdaQuery().eq(TProjectDept::getParentId, tProjectDept.getId()).list() .stream().map(TProjectDept::getId).collect(Collectors.toList()); listIds.addAll(collect); } } List deptIds = deptService.lambdaQuery().like(TDept::getDeptName, query.getDeptName()).list() .stream().map(TDept::getId).collect(Collectors.toList()); listIds.addAll(deptIds); if (listIds.isEmpty()) { listIds.add("0"); } List collect = sysUsers.stream().filter(e -> listIds.contains(e.getDeptId())) .map(SysUser::getUserId).collect(Collectors.toList()); query.setPatrolInspectorIds(collect); if (StringUtils.hasLength(query.getPhonenumber())) { List patrolInspectorIds = sysUsers.stream().filter(sysUser -> sysUser.getPhonenumber().contains(query.getPhonenumber()) && listIds.contains(sysUser.getDeptId()) ).map(SysUser::getUserId).collect(Collectors.toList()); if (patrolInspectorIds.isEmpty()) { patrolInspectorIds.add(0L); } query.setPatrolInspectorIds(patrolInspectorIds); } } if (StringUtils.hasLength(query.getPhonenumber())) { List patrolInspectorIds = sysUsers.stream().filter(sysUser -> sysUser.getPhonenumber().contains(query.getPhonenumber()) ).map(SysUser::getUserId).collect(Collectors.toList()); query.setPatrolInspectorIds(patrolInspectorIds); if (!query.getPatrolInspectorIds().isEmpty()) { // 取交集 patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList()); } query.setPatrolInspectorIds(patrolInspectorIds); if (patrolInspectorIds.isEmpty()) { patrolInspectorIds.add(0L); } } if (query.getClearStatus() != null) { List collect = tTaskDetailService.lambdaQuery().eq(TTaskDetail::getClearStatus, query.getClearStatus()) .list().stream().distinct().map(TTaskDetail::getTaskId).collect(Collectors.toList()); query.setTaskIds(collect); if (collect.isEmpty()) { collect.add("0"); } } if (StringUtils.hasLength(query.getLocationType())) { List collect = locationList.stream().filter(e -> e.getLocationType().equals(query.getLocationType())).map(TLocation::getId) .collect(Collectors.toList()); if (collect.isEmpty()) { collect.add("0"); } query.setLocationIds(collect); } if (StringUtils.hasLength(query.getLocationName())) { List collect = locationList.stream().filter(e -> e.getLocationName().contains(query.getLocationName())).map(TLocation::getId) .collect(Collectors.toList()); query.setLocationIds(collect); if (collect.isEmpty()) { collect.add("0"); } else { collect = collect.stream().filter(query.getLocationIds()::contains).collect(Collectors.toList()); if (collect.isEmpty()) { collect.add("0"); } query.setLocationIds(collect); } } } List list = taskCleanerService.exportList(query); //1.获取excel模板 Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TaskListVO.class, list); HttpServletResponse response = WebUtils.response(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode("任务记录列表.xls", "utf-8"); response.setHeader("Content-dispodition", "attachment;filename=" + fileName); outputStream = response.getOutputStream(); workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); } finally { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }