package com.gunshi.project.xyt.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gunshi.project.xyt.entity.so.InspectTaskPageSo; import com.gunshi.project.xyt.entity.so.InspectTaskSo; import com.gunshi.project.xyt.entity.vo.InspectTaskDetailVo; import com.gunshi.project.xyt.entity.vo.InspectTaskVo; import com.gunshi.project.xyt.mapper.InspectTaskMapper; import com.gunshi.project.xyt.model.InspectTask; import com.gunshi.project.xyt.model.MessageCenter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * 描述: 巡检任务 * author: xusan * date: 2024-08-29 14:21:15 */ @Service @Slf4j @Transactional(rollbackFor = Exception.class) public class InspectTaskService extends ServiceImpl { @Autowired private InspectTaskDetailService inspectTaskDetailService; @Autowired private MessageCenterService messageCenterService; public InspectTask saveData(InspectTask dto) { dto.setId(IdWorker.getId()); dto.setStatus(0); dto.setCreateTime(new Date()); this.save(dto); inspectTaskDetailService.saveDetail(dto.getItems(),dto.getId()); MessageCenter center = new MessageCenter(); center.setPublishUserId(dto.getCreateUserId()); center.setPublishUserName(dto.getCreateUserName()); center.setReceiveUserId(dto.getInspectUserId()); center.setTitle("巡查任务"); center.setContent("您收到一条巡查任务的提醒:" + dto.getTaskTitle() +",请及时处理。"); messageCenterService.insertMessage(Arrays.asList(center)); return dto; } public InspectTask updateData(InspectTask dto) { if (Objects.isNull(this.getById(dto.getId()))) { throw new IllegalArgumentException("当前数据不存在"); } this.updateById(dto); inspectTaskDetailService.updateDetail(dto.getItems(),dto.getId()); return dto; } public Boolean delData(Long id) { if (Objects.isNull(this.getById(id))) { throw new IllegalArgumentException("当前数据不存在"); } inspectTaskDetailService.delDetail(id); return this.removeById(id); } public Page pageQuery(InspectTaskPageSo page) { return this.baseMapper.pageQuery(page.getPageSo().toPage(),page); } public Boolean startInspect(Long id) { InspectTask task = this.getById(id); if (Objects.isNull(task)) { throw new IllegalArgumentException("当前数据不存在"); } task.setReceiveTime(new Date()); task.setStatus(1); return this.updateById(task); } public Boolean finish(InspectTaskVo vo) { List list = vo.getList(); InspectTask task = this.getById(list.get(0).getTaskId()); inspectTaskDetailService.finish(list); task.setFinishTime(vo.getStatus() == 2 ? new Date() : null); task.setStatus(vo.getStatus()); List messageCenters = list.stream().filter(o -> o.getIsHandle() == 1).map(t->{ MessageCenter center = new MessageCenter(); center.setPublishUserId(task.getInspectUserId()); center.setPublishUserName(task.getInspectUserName()); center.setReceiveUserId(t.getHandleUserId()); center.setTitle("巡查问题"); center.setContent("您收到一条巡查任务未处理问题的提醒:"+task.getTaskTitle()+",请及时处理。"); return center; }).collect(Collectors.toList()); messageCenterService.insertMessage(messageCenters); return this.updateById(task); } public List listQuery(InspectTaskSo so) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(InspectTask::getInspectUserId,so.getInspectUserId()) .in(InspectTask::getStatus,so.getStatusList()); if(so.getDateRangeSo() != null && so.getDateRangeSo().getStart() != null){ queryWrapper.ge(InspectTask::getStartDate,so.getDateRangeSo().getStart()); } if(so.getDateRangeSo() != null && so.getDateRangeSo().getEnd() != null){ queryWrapper.le(InspectTask::getStartDate,so.getDateRangeSo().getEnd()); } return this.list(queryWrapper); } public List month() { LocalDate now = LocalDate.now(); String monthValue = String.valueOf(now.getMonthValue()); if(now.getMonthValue() < 10){ monthValue = "0"+monthValue; } return this.baseMapper.month(monthValue); } public Integer year() { LocalDate now = LocalDate.now(); String year = String.valueOf(now.getYear()); return this.baseMapper.year(year); } }