package com.doumee.service.business.impl; 
 | 
  
 | 
import com.doumee.core.constants.ResponseStatus; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
import com.doumee.core.model.LoginUserInfo; 
 | 
import com.doumee.core.model.PageData; 
 | 
import com.doumee.core.model.PageWrap; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.core.utils.Utils; 
 | 
import com.doumee.dao.business.YwPatrolTaskMapper; 
 | 
import com.doumee.dao.business.model.YwDeviceRecord; 
 | 
import com.doumee.dao.business.model.YwPatrolScheme; 
 | 
import com.doumee.dao.business.model.YwPatrolTask; 
 | 
import com.doumee.dao.system.model.SystemUser; 
 | 
import com.doumee.service.business.YwPatrolTaskService; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.github.yulichang.wrapper.MPJLambdaWrapper; 
 | 
import lombok.extern.java.Log; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
  
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * 运维巡检任务信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2024/11/19 16:07 
 | 
 */ 
 | 
@Service 
 | 
public class YwPatrolTaskServiceImpl implements YwPatrolTaskService { 
 | 
  
 | 
    @Autowired 
 | 
    private YwPatrolTaskMapper ywPatrolTaskMapper; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(YwPatrolTask ywPatrolTask) { 
 | 
        ywPatrolTaskMapper.insert(ywPatrolTask); 
 | 
        return ywPatrolTask.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id, LoginUserInfo user) { 
 | 
        ywPatrolTaskMapper.deleteById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(YwPatrolTask ywPatrolTask) { 
 | 
        UpdateWrapper<YwPatrolTask> deleteWrapper = new UpdateWrapper<>(ywPatrolTask); 
 | 
        ywPatrolTaskMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        ywPatrolTaskMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(YwPatrolTask ywPatrolTask) { 
 | 
        ywPatrolTaskMapper.updateById(ywPatrolTask); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<YwPatrolTask> ywPatrolTasks) { 
 | 
        if (CollectionUtils.isEmpty(ywPatrolTasks)) { 
 | 
            return; 
 | 
        } 
 | 
        for (YwPatrolTask ywPatrolTask: ywPatrolTasks) { 
 | 
            this.updateById(ywPatrolTask); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public YwPatrolTask findById(Integer id) { 
 | 
        YwPatrolTask ywPatrolTask = ywPatrolTaskMapper.selectJoinOne(YwPatrolTask.class,new MPJLambdaWrapper<YwPatrolTask>() 
 | 
                .selectAll(YwPatrolTask.class) 
 | 
                .selectAs(YwPatrolScheme::getCode,YwPatrolTask::getPlanCode) 
 | 
                .selectAs(YwPatrolScheme::getTitle,YwPatrolTask::getPlanTitle) 
 | 
                .selectAs(SystemUser::getRealname,YwPatrolTask::getUserName) 
 | 
                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and t.ISDELETED = 0  ) ",YwPatrolTask::getPatrolNum) 
 | 
                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and t.STATUS = 1 and t.ISDELETED = 0) ",YwPatrolTask::getPatrolNum) 
 | 
                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTask::getDealUserId) 
 | 
                .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId) 
 | 
                .eq(YwPatrolTask::getIsdeleted, Constants.ZERO) 
 | 
                .eq(YwPatrolTask::getId,id) 
 | 
                .last(" limit 1 ")) 
 | 
        ; 
 | 
        if(Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.TWO) && 
 | 
                ywPatrolTask.getEndDate().getTime()<System.currentTimeMillis()){ 
 | 
            ywPatrolTask.setStatus(Constants.TWO); 
 | 
        } 
 | 
        return ywPatrolTask; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public YwPatrolTask findOne(YwPatrolTask ywPatrolTask) { 
 | 
        QueryWrapper<YwPatrolTask> wrapper = new QueryWrapper<>(ywPatrolTask); 
 | 
        return ywPatrolTaskMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<YwPatrolTask> findList(YwPatrolTask ywPatrolTask) { 
 | 
        QueryWrapper<YwPatrolTask> wrapper = new QueryWrapper<>(ywPatrolTask); 
 | 
        return ywPatrolTaskMapper.selectList(wrapper); 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public void taskCancel(Integer id, LoginUserInfo loginUserInfo) { 
 | 
        YwPatrolTask ywPatrolTask = ywPatrolTaskMapper.selectById(id); 
 | 
        if(Objects.isNull(ywPatrolTask)){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY); 
 | 
        } 
 | 
        if(!Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.ZERO)){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"状态已流转"); 
 | 
        } 
 | 
        ywPatrolTask.setStatus(Constants.FOUR); 
 | 
        ywPatrolTask.setEditDate(new Date()); 
 | 
        ywPatrolTask.setEditor(loginUserInfo.getId()); 
 | 
        ywPatrolTaskMapper.updateById(ywPatrolTask); 
 | 
    } 
 | 
  
 | 
   
 | 
    @Override 
 | 
    public PageData<YwPatrolTask> findPage(PageWrap<YwPatrolTask> pageWrap) { 
 | 
        IPage<YwPatrolTask> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        MPJLambdaWrapper<YwPatrolTask> queryWrapper = new MPJLambdaWrapper<YwPatrolTask>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        YwPatrolTask model = pageWrap.getModel(); 
 | 
        queryWrapper.selectAll(YwPatrolTask.class) 
 | 
                .selectAs(YwPatrolScheme::getCode,YwPatrolTask::getPlanCode) 
 | 
                .selectAs(YwPatrolScheme::getTitle,YwPatrolTask::getPlanTitle) 
 | 
                .selectAs(SystemUser::getRealname,YwPatrolTask::getUserName) 
 | 
                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and t.ISDELETED = 0  ) ",YwPatrolTask::getPatrolNum) 
 | 
                .select(" ( select count(1) from yw_patrol_task_record ytr where ytr.TASK_ID = t.id  and t.STATUS = 1 and t.ISDELETED = 0) ",YwPatrolTask::getPatrolNum) 
 | 
                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTask::getDealUserId) 
 | 
                .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId) 
 | 
                .eq(YwPatrolTask::getIsdeleted, Constants.ZERO) 
 | 
                .eq(Objects.nonNull(model.getStatus()) && !Constants.equalsInteger(model.getStatus(),Constants.TWO),YwPatrolTask::getStatus, model.getStatus()) 
 | 
                .eq(Objects.nonNull(model.getDealUserId()),YwPatrolScheme::getUserIds, model.getDealUserId()) 
 | 
                .apply(Objects.nonNull(model.getStatus()) && Constants.equalsInteger(model.getStatus(),Constants.TWO)," t.status = 1 and t.END_DATE > now() ") 
 | 
                .apply(StringUtils.isNotBlank(model.getQueryStatus())," find_in_set(t.status ,'"+model.getQueryStatus()+"') ") 
 | 
                .like(StringUtils.isNotBlank(model.getPlanTitle()),YwPatrolScheme::getTitle,model.getPlanTitle()) 
 | 
                .ge(Objects.nonNull(model.getStartDate()), YwPatrolTask::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate())) 
 | 
                .le(Objects.nonNull(model.getEndDate()),YwPatrolTask::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate())) 
 | 
                .orderByDesc(YwPatrolTask::getId) 
 | 
        ; 
 | 
        IPage<YwPatrolTask> iPage = ywPatrolTaskMapper.selectJoinPage(page,YwPatrolTask.class,queryWrapper); 
 | 
        for (YwPatrolTask ywPatrolTask:iPage.getRecords()) { 
 | 
            if(Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.TWO) && 
 | 
             ywPatrolTask.getEndDate().getTime()<System.currentTimeMillis()){ 
 | 
                ywPatrolTask.setStatus(Constants.TWO); 
 | 
            } 
 | 
        } 
 | 
        return PageData.from(iPage); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(YwPatrolTask ywPatrolTask) { 
 | 
        QueryWrapper<YwPatrolTask> wrapper = new QueryWrapper<>(ywPatrolTask); 
 | 
        return ywPatrolTaskMapper.selectCount(wrapper); 
 | 
    } 
 | 
} 
 |