From f287dfb5249618bf821626e76b7ce8d8f74d6b99 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 02 七月 2025 16:15:12 +0800 Subject: [PATCH] 保洁巡检本周代码 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java | 416 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 414 insertions(+), 2 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java index 3489fae..b6bbbfb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java @@ -1,9 +1,47 @@ 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.ruoyi.common.core.domain.BaseModel; +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.vo.system.*; import io.swagger.annotations.Api; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.util.StringUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +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; /** * <p> @@ -17,6 +55,380 @@ @RestController @RequestMapping("/t-task") public class TTaskController { + @Resource + private TTaskCleanService taskCleanerService; + @Resource + private TNoticeService noticeService; + @Resource + private TNoticeSetService noticeSetService; + @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 TDictDataService dictDataService; + @Resource + private TokenService tokenService; + @Resource + private TCleanerService cleanerService; + + @ApiOperation(value = "任务记录分页列表") + @PostMapping(value = "/pageList") + public R<PageInfo<TaskListVO>> pageList(@RequestBody TaskListQuery query) { + List<SysUser> sysUsers = sysUserService.selectAllList(); + List<TLocation> locationList = locationService.list(); + if (StringUtils.hasLength(query.getDeptName())){ + List<String> projectIds = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list() + .stream().map(TProjectDept::getId).collect(Collectors.toList()); + List<String> deptIds = deptService.lambdaQuery().like(TDept::getDeptName, query.getDeptName()).list() + .stream().map(TDept::getId).collect(Collectors.toList()); + projectIds.addAll(deptIds); + if (projectIds.isEmpty()){ + return R.ok(new PageInfo<>()); + } + if (StringUtils.hasLength(query.getPhonenumber())){ + List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser -> + sysUser.getPhonenumber().contains(query.getPhonenumber()) + && projectIds.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<Long> 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<String> 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<String> 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<String> 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<Boolean> add(@RequestBody TTaskDTO dto) { + 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(); + } + @Log(title = "审核任务", businessType = BusinessType.UPDATE) + @ApiOperation(value = "审核任务") + @PostMapping(value = "/audit") + public R<Boolean> audit(@RequestBody TTaskAuditDTO dto) { + dto.setAuditTime(LocalDateTime.now()); + TTask task = taskCleanerService.getById(dto.getTaskId()); + TLocation location = locationService.getById(task.getLocationId()); + TNotice tNotice = new TNotice(); + TNoticeSet noticeSet = noticeSetService.lambdaQuery().eq(TNoticeSet::getType, 2).last("limit 1") + .one(); + tNotice.setUserId(task.getPatrolInspector()); + tNotice.setStatus(1); + tNotice.setDataId(task.getId()); + tNotice.setNoticeSetType(noticeSet.getNoticeType()); + if (dto.getAuditStatus()==2){ + dto.setHandleType(3); + // 将任务修改为待整改 + task.setStatus(4); + taskCleanerService.updateById(task); + // 增加消息 + tNotice.setNoticeType(1); + tNotice.setNoticeContent("【"+location.getLocationName()+"】任务不合格,请重新上传!"); + + }else{ + dto.setHandleType(2); + // 如果是初次审核就通过 将状态设置为已完成 + List<TTaskDetail> list = taskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, dto.getTaskId()).list(); + if (list.isEmpty()){ + task.setStatus(6); + taskCleanerService.updateById(task); + }else{ + task.setStatus(5); + taskCleanerService.updateById(task); + } + // 增加消息 + tNotice.setNoticeType(2); + tNotice.setNoticeContent("【"+location.getLocationName()+"】任务已通过"); + } + noticeService.save(tNotice); + dto.setAuditPerson(tokenService.getLoginUser().getUserId()+""); + taskDetailService.save(dto); + return R.ok(); + } + @Log(title = "批量审核任务", businessType = BusinessType.UPDATE) + @ApiOperation(value = "批量审核任务") + @PostMapping(value = "/auditBatch") + public R<Boolean> auditBatch(@RequestBody @Validated TTaskAuditBatchDTO dto) { + List<TTaskDetail> tTaskDetails = new ArrayList<>(); + for (String s : dto.getTaskIds().split(",")) { + TTask byId = taskCleanerService.getById(s); + TTaskDetail tTaskDetail = new TTaskDetail(); + tTaskDetail.setTaskId(s); + tTaskDetail.setAuditTime(LocalDateTime.now()); + tTaskDetail.setAuditPerson(tokenService.getLoginUser().getUserId()+""); + if (dto.getAuditStatus()==2){ + tTaskDetail.setHandleType(3); + // 将任务修改为待整改 + byId.setStatus(4); + taskCleanerService.updateById(byId); + }else{ + tTaskDetail.setHandleType(2); + // 如果是初次审核就通过 将状态设置为已完成 + List<TTaskDetail> list = taskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, s).list(); + if (list.isEmpty()){ + byId.setStatus(6); + taskCleanerService.updateById(byId); + }else{ + byId.setStatus(5); + taskCleanerService.updateById(byId); + } + } + tTaskDetails.add(tTaskDetail); + } + taskDetailService.saveBatch(tTaskDetails); + return R.ok(); + } + @ApiOperation(value = "详情任务") + @GetMapping(value = "/detail") + public R<TaskDetailVO> detail(@RequestParam String id) { + List<TTaskDetail> 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(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()); + } + } + taskDetailVO.setTaskDetail(tTaskDetail); + taskDetailVO.setRecords(list); + return R.ok(taskDetailVO); + } + @ApiOperation(value = "详情任务-根据任务编号") + @GetMapping(value = "/detailByTaskCode") + public R<TaskDetailVO> detailByTaskCode(@RequestParam String taskCode) { + TTask task = taskCleanerService.lambdaQuery().eq(TTask::getTaskCode, taskCode) + .last("limit 1").one(); + TaskDetailVO taskDetailVO = new TaskDetailVO(); + if (task!=null){ + String id = task.getId(); + List<TTaskDetail> list = taskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, id) + .orderByDesc(BaseModel::getCreateTime).list(); + 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(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()); + } + } + taskDetailVO.setTaskDetail(tTaskDetail); + taskDetailVO.setRecords(list); + }else{ + return R.fail("任务不存在"); + } + + return R.ok(taskDetailVO); + } + @ApiOperation(value = "详情任务-操作记录-详情") + @GetMapping(value = "/detailRecord") + public R<TaskRecordDetailVO> 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()); + } + } + 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<Boolean> deleteByIds(@RequestParam String ids) { + String[] split = ids.split(","); + taskCleanerService.removeBatchByIds(Arrays.asList(split)); + return R.ok(); + } + + @Log(title = "任务记录导出", businessType = BusinessType.EXPORT) + @ApiOperation(value = "任务记录导出") + @PostMapping(value = "/exportExcel") + public void exportExcel(@RequestBody TaskListQuery query) { + List<SysUser> sysUsers = sysUserService.selectAllList(); + List<TLocation> locationList = locationService.list(); + if (StringUtils.hasLength(query.getDeptName())){ + List<String> projectIds = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list() + .stream().map(TProjectDept::getId).collect(Collectors.toList()); + List<String> deptIds = deptService.lambdaQuery().like(TDept::getDeptName, query.getDeptName()).list() + .stream().map(TDept::getId).collect(Collectors.toList()); + projectIds.addAll(deptIds); + if (projectIds.isEmpty()){ + projectIds.add("-1"); + } + if (StringUtils.hasLength(query.getPhonenumber())){ + List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser -> + sysUser.getPhonenumber().equals(query.getPhonenumber()) + && projectIds.contains(sysUser.getDeptId()) + ).map(SysUser::getUserId).collect(Collectors.toList()); + if (patrolInspectorIds.isEmpty()){ + patrolInspectorIds.add(-1L); + } + query.setPatrolInspectorIds(patrolInspectorIds); + } + } + if (StringUtils.hasLength(query.getPhonenumber())){ + List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser -> + sysUser.getPhonenumber().equals(query.getPhonenumber()) + ).map(SysUser::getUserId).collect(Collectors.toList()); + if (!query.getPatrolInspectorIds().isEmpty()){ + // 取交集 + patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList()); + } + query.setPatrolInspectorIds(patrolInspectorIds); + if (patrolInspectorIds.isEmpty()){ + patrolInspectorIds.add(-1L); + } + } + if (query.getClearStatus()!=null){ + List<String> 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("-1"); + } + } + if (query.getLocationType()!=null){ + List<String> collect = locationList.stream().filter(e -> e.getLocationType().equals(query.getLocationType())).map(TLocation::getId) + .collect(Collectors.toList()); + if (collect.isEmpty()){ + collect.add("-1"); + } + query.setLocationIds(collect); + } + if (StringUtils.hasLength(query.getLocationName())){ + List<String> collect = locationList.stream().filter(e -> e.getLocationName().contains(query.getLocationName())).map(TLocation::getId) + .collect(Collectors.toList()); + if (collect.isEmpty()){ + collect.add("-1"); + }else{ + collect = collect.stream().filter(query.getLocationIds()::contains).collect(Collectors.toList()); + if (collect.isEmpty()){ + collect.add("-1"); + } + query.setLocationIds(collect); + } + } + List<TaskListVO> 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(); + } + } + + } } -- Gitblit v1.7.1