gunshi-project-ss/src/main/java/com/gunshi/project/xyt/service/InspectTaskService.java

143 lines
5.3 KiB
Java

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<InspectTaskMapper, InspectTask>
{
@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<InspectTask> 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<InspectTaskDetailVo> 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<MessageCenter> 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<InspectTask> listQuery(InspectTaskSo so) {
LambdaQueryWrapper<InspectTask> 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<InspectTask> 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);
}
}