package com.doumee.service.business.impl; 
 | 
  
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
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.DateUtil; 
 | 
import com.doumee.core.utils.Utils; 
 | 
import com.doumee.core.utils.Week; 
 | 
import com.doumee.core.utils.redis.RedisUtil; 
 | 
import com.doumee.dao.business.YwLinePointMapper; 
 | 
import com.doumee.dao.business.YwPatrolSchemeMapper; 
 | 
import com.doumee.dao.business.YwPatrolTaskMapper; 
 | 
import com.doumee.dao.business.YwPatrolTaskRecordMapper; 
 | 
import com.doumee.dao.business.model.*; 
 | 
import com.doumee.dao.system.SystemUserMapper; 
 | 
import com.doumee.dao.system.join.NoticesJoinMapper; 
 | 
import com.doumee.dao.system.model.Notices; 
 | 
import com.doumee.dao.system.model.SystemUser; 
 | 
import com.doumee.service.business.YwPatrolSchemeService; 
 | 
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 org.apache.commons.lang3.StringUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.data.redis.core.RedisTemplate; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
  
 | 
import java.util.*; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * 运维巡检计划信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2024/11/19 16:07 
 | 
 */ 
 | 
@Service 
 | 
public class YwPatrolSchemeServiceImpl implements YwPatrolSchemeService { 
 | 
  
 | 
    @Autowired 
 | 
    private YwPatrolSchemeMapper ywPatrolSchemeMapper; 
 | 
    @Autowired 
 | 
    private YwPatrolTaskMapper ywPatrolTaskMapper; 
 | 
    @Autowired 
 | 
    private YwLinePointMapper ywLinePointMapper; 
 | 
    @Autowired 
 | 
    private YwPatrolTaskRecordMapper ywPatrolTaskRecordMapper; 
 | 
    @Autowired 
 | 
    private SystemUserMapper systemUserMapper; 
 | 
    @Autowired 
 | 
    private RedisTemplate<String, Object> redisTemplate; 
 | 
    @Autowired 
 | 
    private NoticesJoinMapper noticesJoinMapper; 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = {Exception.class,BusinessException.class}) 
 | 
    public Integer create(YwPatrolScheme ywPatrolScheme) { 
 | 
        if(Objects.isNull(ywPatrolScheme) 
 | 
        || StringUtils.isBlank(ywPatrolScheme.getTitle()) 
 | 
                ||Objects.isNull(ywPatrolScheme.getLineId()) 
 | 
                ||StringUtils.isBlank(ywPatrolScheme.getUserIds()) 
 | 
                ||Objects.isNull(ywPatrolScheme.getStartDate()) 
 | 
                ||Objects.isNull(ywPatrolScheme.getEndDate()) 
 | 
                ||Objects.isNull(ywPatrolScheme.getCircleType()) 
 | 
                || (!Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ZERO) &&StringUtils.isBlank(ywPatrolScheme.getCircleDays())) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        if(StringUtils.isBlank(ywPatrolScheme.getStartTime())){ 
 | 
            ywPatrolScheme.setStartTime("00:00:00"); 
 | 
        } 
 | 
        if(StringUtils.isBlank(ywPatrolScheme.getEndTime())){ 
 | 
            ywPatrolScheme.setEndTime("23:59:59"); 
 | 
        } 
 | 
        LoginUserInfo loginUserInfo = ywPatrolScheme.getLoginUserInfo(); 
 | 
        ywPatrolScheme.setCreateDate(new Date()); 
 | 
        ywPatrolScheme.setCreator(loginUserInfo.getId()); 
 | 
        ywPatrolScheme.setIsdeleted(Constants.ZERO); 
 | 
        ywPatrolScheme.setStatus(Constants.ZERO); 
 | 
        ywPatrolScheme.setCode(this.getNextCode()); 
 | 
        ywPatrolSchemeMapper.insert(ywPatrolScheme); 
 | 
  
 | 
        this.createThreeDaysData(ywPatrolScheme); 
 | 
        return ywPatrolScheme.getId(); 
 | 
    } 
 | 
  
 | 
    public synchronized String  getNextCode(){ 
 | 
        String prefix =  "P"; 
 | 
        Integer countNum  = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.PATROL_SCHEME_CODE_KEY,Integer.class); 
 | 
        countNum = Constants.formatIntegerNum(countNum)+1; 
 | 
        //更新缓存 
 | 
        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.PATROL_SCHEME_CODE_KEY,countNum); 
 | 
        String nextIndex =Integer.toString( countNum ); 
 | 
        return prefix + StringUtils.leftPad(nextIndex,4,"0"); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    public void createThreeDaysData(YwPatrolScheme ywPatrolScheme){ 
 | 
        //循环生成三天内的数据 
 | 
        for (int i = 0; i < 3; i++) { 
 | 
            Date schemeDate = DateUtil.getXDayAfterDate( 
 | 
                    DateUtil.StringToDate( 
 | 
                    DateUtil.getDate(new Date(),"yyyy-MM-dd"),"yyyy-MM-dd"),i); 
 | 
            this.createTask(schemeDate,ywPatrolScheme); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public void timerAuto(){ 
 | 
        List<YwPatrolScheme> ywPatrolSchemeList = ywPatrolSchemeMapper.selectList(new QueryWrapper<YwPatrolScheme>().lambda() 
 | 
                .eq(YwPatrolScheme::getIsdeleted,Constants.ZERO) 
 | 
                .eq(YwPatrolScheme::getStatus,Constants.ZERO) 
 | 
                .apply(" START_DATE <= now() and END_DATE>= now()   ") 
 | 
        ); 
 | 
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywPatrolSchemeList)){ 
 | 
            for (YwPatrolScheme ywPatrolScheme:ywPatrolSchemeList) { 
 | 
                this.createTask(new Date(),ywPatrolScheme); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    /** 
 | 
     * 根据日期生成任务 
 | 
     * @param schemeDate 
 | 
     * @param ywPatrolScheme 
 | 
     */ 
 | 
    public void createTask(Date schemeDate,YwPatrolScheme ywPatrolScheme){ 
 | 
        if(!(ywPatrolScheme.getStartDate().getTime() <= schemeDate.getTime() 
 | 
            && ywPatrolScheme.getEndDate().getTime() >= schemeDate.getTime()) ){ 
 | 
            return; 
 | 
        } 
 | 
        if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ONE)){ 
 | 
            //每周根据日期生成 根据日期获取是周几 
 | 
            Week week = DateUtil.getWeek(schemeDate); 
 | 
            if(Objects.isNull(week)){ 
 | 
                return; 
 | 
            } 
 | 
            List<String> weeks = Arrays.asList(ywPatrolScheme.getCircleDays().split(",")); 
 | 
            if(weeks.stream().filter(i->Constants.equalsInteger(Integer.valueOf(i),week.getNumber())).collect(Collectors.toList()).size()<=Constants.ZERO){ 
 | 
                return; 
 | 
            } 
 | 
  
 | 
        }else if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.TWO)){ 
 | 
            //每月根据日期生成 根据日期获取是哪天 
 | 
            List<String> days = Arrays.asList(ywPatrolScheme.getCircleDays().split(",")); 
 | 
            Integer dayStr = Integer.valueOf(DateUtil.getFomartDate(schemeDate,"dd")); 
 | 
            if(days.stream().filter(i->i.equals(dayStr.toString())).collect(Collectors.toList()).size()<=Constants.ZERO){ 
 | 
                return; 
 | 
            } 
 | 
        } 
 | 
        String schemeDateStr = DateUtil.getDate(schemeDate,"yyyy-MM-dd"); 
 | 
        //查询当天是否生成过数据 
 | 
        if(ywPatrolTaskMapper.selectCount(new QueryWrapper<YwPatrolTask>().lambda().eq(YwPatrolTask::getSchemeId,ywPatrolScheme.getId()).like(YwPatrolTask::getStartDate,schemeDateStr))>Constants.ZERO){ 
 | 
            return; 
 | 
        }; 
 | 
        YwPatrolTask ywPatrolTaskForCodeSn = ywPatrolTaskMapper.selectOne(new MPJLambdaWrapper<YwPatrolTask>() 
 | 
                .select(" ifnull( max(replace(code,'"+ywPatrolScheme.getCode()+"-','')),0) AS codeSn ") 
 | 
                .eq(YwPatrolTask::getSchemeId,ywPatrolScheme.getId()) 
 | 
                .orderByDesc( YwPatrolTask::getId) 
 | 
                .last(" limit 1 ") 
 | 
        ); 
 | 
        Integer codeSn = ywPatrolTaskForCodeSn.getCodeSn(); 
 | 
  
 | 
        List<YwLinePoint> ywLinePointList = ywLinePointMapper.selectList(new QueryWrapper<YwLinePoint>().lambda() 
 | 
                .eq(YwLinePoint::getLineId,ywPatrolScheme.getLineId()) 
 | 
                .eq(YwLinePoint::getIsdeleted,Constants.ZERO) 
 | 
                .orderByAsc(YwLinePoint::getSortnum)); 
 | 
        if(CollectionUtils.isEmpty(ywLinePointList)){ 
 | 
            return; 
 | 
        } 
 | 
        codeSn = codeSn + 1; 
 | 
        String nextCode = StringUtils.leftPad(codeSn.toString(),3,"0"); 
 | 
        YwPatrolTask ywPatrolTask = new YwPatrolTask(); 
 | 
        ywPatrolTask.setCreateDate(new Date()); 
 | 
        ywPatrolTask.setCreator(ywPatrolScheme.getCreator()); 
 | 
        ywPatrolTask.setIsdeleted(Constants.ZERO); 
 | 
        ywPatrolTask.setStatus(Constants.patrolTaskStatus.waitStart); 
 | 
        ywPatrolTask.setSchemeId(ywPatrolScheme.getId());  
 | 
        ywPatrolTask.setCircleType(ywPatrolScheme.getCircleType()); 
 | 
        ywPatrolTask.setStartDate(DateUtil.getDateFromString(schemeDateStr +" "+ ywPatrolScheme.getStartTime() +":00")); 
 | 
        ywPatrolTask.setEndDate(DateUtil.getDateFromString(schemeDateStr +" "+ ywPatrolScheme.getEndTime() +":00")); 
 | 
        ywPatrolTask.setDealUserId(ywPatrolScheme.getDealUserId());  
 | 
        ywPatrolTask.setCode(ywPatrolScheme.getCode() + "-" + nextCode); 
 | 
        ywPatrolTaskMapper.insert(ywPatrolTask); 
 | 
         
 | 
        List<YwPatrolTaskRecord> ywPatrolTaskRecordList = new ArrayList<>(); 
 | 
        for (int i = 0; i < ywLinePointList.size(); i++) { 
 | 
            YwLinePoint ywLinePoint = ywLinePointList.get(i); 
 | 
            //生成任务数据 
 | 
            YwPatrolTaskRecord ywPatrolTaskRecord = new YwPatrolTaskRecord(); 
 | 
            ywPatrolTaskRecord.setCreateDate(new Date()); 
 | 
            ywPatrolTaskRecord.setCreator(ywPatrolScheme.getCreator()); 
 | 
            ywPatrolTaskRecord.setIsdeleted(Constants.ZERO); 
 | 
            ywPatrolTaskRecord.setStatus(Constants.ZERO); 
 | 
            ywPatrolTaskRecord.setSchemeId(ywPatrolScheme.getId()); 
 | 
            ywPatrolTaskRecord.setPointId(ywLinePoint.getPointId()); 
 | 
            ywPatrolTaskRecord.setTaskId(ywPatrolTask.getId()); 
 | 
            ywPatrolTaskRecord.setDealUserId(ywPatrolScheme.getDealUserId()); 
 | 
            ywPatrolTaskRecord.setSortnum(i+1); 
 | 
            ywPatrolTaskRecordList.add(ywPatrolTaskRecord); 
 | 
        } 
 | 
        ywPatrolTaskRecordMapper.insert(ywPatrolTaskRecordList); 
 | 
  
 | 
        if(StringUtils.isNotBlank(ywPatrolScheme.getUserIds())){ 
 | 
            String [] userIds = ywPatrolScheme.getUserIds().split(","); 
 | 
            List<SystemUser> systemUserList = systemUserMapper.selectList(new QueryWrapper<SystemUser>().lambda().in(SystemUser::getId,userIds)); 
 | 
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(systemUserList)){ 
 | 
                List<String> names = systemUserList.stream().filter(i->StringUtils.isNotBlank(i.getRealname())).map(i->i.getRealname()).collect(Collectors.toList()); 
 | 
                for (SystemUser systemUser:systemUserList) { 
 | 
                    //添加待办信息 
 | 
                    Notices notices = new Notices(); 
 | 
                    notices.setCreateDate(new Date()); 
 | 
                    notices.setCreator(ywPatrolScheme.getCreator()); 
 | 
                    notices.setIsdeleted(Constants.ZERO); 
 | 
                    notices.setParam1(DateUtil.formatDate(ywPatrolTask.getStartDate(),"yyyy-MM-dd")); 
 | 
                    notices.setTitle("巡检任务待办"); 
 | 
                    notices.setContent("["+ywPatrolTask.getCode()+"]将在["+notices.getParam1()+"]进行巡检,请按时执行"); 
 | 
                    notices.setObjId(ywPatrolTask.getId()); 
 | 
                    notices.setObjType(Constants.ONE); 
 | 
                    notices.setType(notices.getObjType()); 
 | 
                    notices.setUserId(Integer.valueOf(systemUser.getId())); 
 | 
                    notices.setStatus(Constants.ZERO); 
 | 
                    //整理json数据 
 | 
                    Map<String,Object> jsonMap = new HashMap<>(); 
 | 
                    jsonMap.put("key1", ywPatrolScheme.getTitle()); 
 | 
                    jsonMap.put("key2", DateUtil.getFomartDate(ywPatrolTask.getStartDate(),"yyyy-MM-dd")); 
 | 
                    jsonMap.put("key3", DateUtil.getFomartDate(ywPatrolTask.getStartDate(),"HH:mm") + "-" + DateUtil.getFomartDate(ywPatrolTask.getEndDate(),"HH:mm")); 
 | 
                    jsonMap.put("key4", StringUtils.join(names , "、")); 
 | 
                    notices.setParam2(JSONObject.toJSONString(jsonMap)); 
 | 
                    notices.setParam3(Constants.ZERO+""); 
 | 
                    noticesJoinMapper.insert(notices); 
 | 
                } 
 | 
            } 
 | 
  
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id, LoginUserInfo user) { 
 | 
        //判断是否有进行中或已超期的任务 
 | 
        if(ywPatrolTaskMapper.selectCount(new QueryWrapper<YwPatrolTask>().lambda() 
 | 
                .eq(YwPatrolTask::getSchemeId,id) 
 | 
                .in(YwPatrolTask::getStatus,Constants.ONE,Constants.THREE,Constants.TWO) 
 | 
        )>Constants.ZERO){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在进行中/已完成的任务,无法进行删除"); 
 | 
        } 
 | 
        if(ywPatrolTaskMapper.selectCount(new QueryWrapper<YwPatrolTask>().lambda() 
 | 
                        .eq(YwPatrolTask::getSchemeId,id) 
 | 
                        .eq(YwPatrolTask::getStatus,Constants.ZERO) 
 | 
                        .le(YwPatrolTask::getEndDate,"now()") 
 | 
        )>Constants.ZERO){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在已超期的任务,无法进行删除"); 
 | 
        } 
 | 
        ywPatrolSchemeMapper.deleteById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(YwPatrolScheme ywPatrolScheme) { 
 | 
        UpdateWrapper<YwPatrolScheme> deleteWrapper = new UpdateWrapper<>(ywPatrolScheme); 
 | 
        ywPatrolSchemeMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        ywPatrolSchemeMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(YwPatrolScheme ywPatrolScheme) { 
 | 
        if(Objects.isNull(ywPatrolScheme) 
 | 
                || Objects.isNull(ywPatrolScheme.getId()) 
 | 
                || StringUtils.isBlank(ywPatrolScheme.getTitle()) 
 | 
                ||Objects.isNull(ywPatrolScheme.getLineId()) 
 | 
                ||StringUtils.isBlank(ywPatrolScheme.getUserIds()) 
 | 
                ||Objects.isNull(ywPatrolScheme.getStartDate()) 
 | 
                ||Objects.isNull(ywPatrolScheme.getEndDate()) 
 | 
                ||Objects.isNull(ywPatrolScheme.getCircleType()) 
 | 
                ||StringUtils.isBlank(ywPatrolScheme.getStartTime()) 
 | 
                ||StringUtils.isBlank(ywPatrolScheme.getEndTime()) 
 | 
                || (!Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ZERO) &&StringUtils.isBlank(ywPatrolScheme.getCircleDays())) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        LoginUserInfo loginUserInfo = ywPatrolScheme.getLoginUserInfo(); 
 | 
        ywPatrolScheme.setEditDate(new Date()); 
 | 
        ywPatrolScheme.setEditor(loginUserInfo.getId()); 
 | 
        ywPatrolSchemeMapper.updateById(ywPatrolScheme); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateStatus(YwPatrolScheme ywPatrolScheme) { 
 | 
        if(Objects.isNull(ywPatrolScheme) 
 | 
                || Objects.isNull(ywPatrolScheme.getId()) 
 | 
                || Objects.isNull(ywPatrolScheme.getStatus()) 
 | 
                || !(Constants.equalsInteger(ywPatrolScheme.getStatus(),Constants.ZERO) || Constants.equalsInteger(ywPatrolScheme.getStatus(),Constants.ONE )) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        LoginUserInfo loginUserInfo = ywPatrolScheme.getLoginUserInfo(); 
 | 
        ywPatrolScheme.setEditDate(new Date()); 
 | 
        ywPatrolScheme.setEditor(loginUserInfo.getId()); 
 | 
        ywPatrolSchemeMapper.updateById(ywPatrolScheme); 
 | 
        if(Constants.equalsInteger(ywPatrolScheme.getStatus(),Constants.ZERO)){ 
 | 
            this.createThreeDaysData(ywPatrolScheme); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<YwPatrolScheme> ywPatrolSchemes) { 
 | 
        if (CollectionUtils.isEmpty(ywPatrolSchemes)) { 
 | 
            return; 
 | 
        } 
 | 
        for (YwPatrolScheme ywPatrolScheme: ywPatrolSchemes) { 
 | 
            this.updateById(ywPatrolScheme); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public YwPatrolScheme findById(Integer id) { 
 | 
        return ywPatrolSchemeMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public YwPatrolScheme findOne(YwPatrolScheme ywPatrolScheme) { 
 | 
        QueryWrapper<YwPatrolScheme> wrapper = new QueryWrapper<>(ywPatrolScheme); 
 | 
        return ywPatrolSchemeMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<YwPatrolScheme> findList(YwPatrolScheme ywPatrolScheme) { 
 | 
        QueryWrapper<YwPatrolScheme> wrapper = new QueryWrapper<>(ywPatrolScheme); 
 | 
        return ywPatrolSchemeMapper.selectList(wrapper); 
 | 
    } 
 | 
   
 | 
    @Override 
 | 
    public PageData<YwPatrolScheme> findPage(PageWrap<YwPatrolScheme> pageWrap) { 
 | 
        IPage<YwPatrolScheme> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        MPJLambdaWrapper<YwPatrolScheme> queryWrapper = new MPJLambdaWrapper<YwPatrolScheme>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        YwPatrolScheme model = pageWrap.getModel(); 
 | 
        queryWrapper.selectAll(YwPatrolScheme.class) 
 | 
                .select(" t2.realName as createUserName ") 
 | 
//                .select(" t1.realName as userName ") 
 | 
//                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolScheme::getUserIds) 
 | 
                .leftJoin(" system_user t2 on t.creator =  t2.id  ") 
 | 
                .eq(YwPatrolScheme::getIsdeleted,Constants.ZERO) 
 | 
                .like(StringUtils.isNotBlank(model.getTitle()),YwPatrolScheme::getTitle,model.getTitle()) 
 | 
                //查询有时段交集的数据 
 | 
              /*  .apply(Objects.nonNull(model.getStartDate())&&Objects.nonNull(model.getEndDate()), 
 | 
                        " t.START_DATE <= '"+pageWrap.getModel().getEndDate()+"' or t.END_DATE >= '"+pageWrap.getModel().getStartDate()+"' " 
 | 
                )*/ 
 | 
                .ge( model.getStartDate()!=null,YwPatrolScheme::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate())) 
 | 
                .le(Objects.nonNull(model.getEndDate()),YwPatrolScheme::getStartDate, Utils.Date.getStart(pageWrap.getModel().getEndDate())) 
 | 
                .ge(Objects.nonNull(model.getStartDateSec()),YwPatrolScheme::getEndDate, Utils.Date.getStart(pageWrap.getModel().getStartDateSec())) 
 | 
                .le(Objects.nonNull(model.getEndDateSec()),YwPatrolScheme::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDateSec())) 
 | 
                .orderByDesc(YwPatrolScheme::getCreateDate) 
 | 
        ; 
 | 
        IPage<YwPatrolScheme> iPage = ywPatrolSchemeMapper.selectJoinPage(page,YwPatrolScheme.class,queryWrapper); 
 | 
        for (YwPatrolScheme ywPatrolScheme:iPage.getRecords()) { 
 | 
            this.getSchemeStatus(ywPatrolScheme); 
 | 
            //巡检人员 
 | 
            this.getUserNames(ywPatrolScheme); 
 | 
        } 
 | 
        return PageData.from(iPage); 
 | 
    } 
 | 
  
 | 
  
 | 
    public void getUserNames(YwPatrolScheme ywPatrolScheme){ 
 | 
        if(Objects.nonNull(ywPatrolScheme)&&StringUtils.isNotBlank(ywPatrolScheme.getUserIds())){ 
 | 
            List<SystemUser>  systemUserList = systemUserMapper.selectList(new QueryWrapper<SystemUser>().lambda() 
 | 
                    .apply(" find_in_set(id,'"+ywPatrolScheme.getUserIds()+"') ") 
 | 
            ); 
 | 
            String userName = String.join(",",systemUserList.stream().map(i->i.getRealname()).collect(Collectors.toList())); 
 | 
            ywPatrolScheme.setUserName(userName); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    //获取状态 
 | 
    public void getSchemeStatus(YwPatrolScheme ywPatrolScheme){ 
 | 
        List<YwPatrolTask> ywPatrolTaskList = ywPatrolTaskMapper.selectList(new QueryWrapper<YwPatrolTask>().lambda() 
 | 
                .eq(YwPatrolTask::getSchemeId,ywPatrolScheme.getId()) 
 | 
                .eq(YwPatrolTask::getIsdeleted,Constants.ZERO) 
 | 
                .ne(YwPatrolTask::getStatus,Constants.FOUR) 
 | 
        ); 
 | 
  
 | 
        if(CollectionUtils.isEmpty(ywPatrolTaskList)){ 
 | 
            ywPatrolScheme.setSchemeStatus(Constants.ZERO); 
 | 
            ywPatrolScheme.setTimeOutTaskNum(Constants.ZERO); 
 | 
            return; 
 | 
        } 
 | 
        //过滤数据是否存在进行中的 
 | 
        if(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ONE)).collect(Collectors.toList()).size()>Constants.ZERO){ 
 | 
            ywPatrolScheme.setSchemeStatus(Constants.ONE); 
 | 
            ywPatrolScheme.setTimeOutTaskNum(ywPatrolTaskList.stream().filter(i->i.getEndDate().getTime()>System.currentTimeMillis()) 
 | 
                    .collect(Collectors.toList()).size()); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        //过滤数据是不是全部未开始 
 | 
        if(Constants.equalsInteger(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ZERO)).collect(Collectors.toList()).size(),ywPatrolTaskList.size())){ 
 | 
            ywPatrolScheme.setSchemeStatus(Constants.ZERO); 
 | 
            ywPatrolScheme.setTimeOutTaskNum(ywPatrolTaskList.stream().filter(i->i.getEndDate().getTime()>System.currentTimeMillis()) 
 | 
                    .collect(Collectors.toList()).size()); 
 | 
            return; 
 | 
        } 
 | 
        //过滤数据是不是全部已完成 
 | 
        if(Constants.equalsInteger(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.THREE)).collect(Collectors.toList()).size() 
 | 
                ,ywPatrolTaskList.size())){ 
 | 
            ywPatrolScheme.setSchemeStatus(Constants.TWO); 
 | 
            return; 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    public long count(YwPatrolScheme ywPatrolScheme) { 
 | 
        QueryWrapper<YwPatrolScheme> wrapper = new QueryWrapper<>(ywPatrolScheme); 
 | 
        return ywPatrolSchemeMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
} 
 |