jiangping
2025-06-06 a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java
@@ -12,7 +12,9 @@
import com.doumee.dao.business.*;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.MultifileMapper;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.system.model.Multifile;
import com.doumee.dao.system.model.Notices;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.YwPatrolTaskRecordService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -26,9 +28,11 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * 运维巡检任务 - 巡检点信息表Service实现
@@ -56,6 +60,11 @@
    @Autowired
    private YwPatrolTaskMapper ywPatrolTaskMapper;
    @Autowired
    private YwPatrolSchemeMapper ywPatrolSchemeMapper;
    @Autowired
    private NoticesJoinMapper noticesJoinMapper;
    @Override
@@ -125,17 +134,52 @@
                .selectAs(YwPatrolPoint::getName,YwPatrolTaskRecord::getPointName)
                .selectAs(YwPatrolPoint::getContent,YwPatrolTaskRecord::getContent)
                .selectAs(SystemUser::getRealname,YwPatrolTaskRecord::getRealname)
                .selectAs(YwPatrolScheme::getTitle,YwPatrolTaskRecord::getSchemeTitle)
                .selectAs(YwPatrolTask::getCode,YwPatrolTaskRecord::getTaskCode)
                .selectAs(YwPatrolTask::getStartDate,YwPatrolTaskRecord::getStartDate)
                .selectAs(YwPatrolTask::getEndDate,YwPatrolTaskRecord::getEndDate)
                .leftJoin(YwPatrolPoint.class,YwPatrolPoint::getId,YwPatrolTaskRecord::getPointId)
                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTaskRecord::getDealUserId)
                .leftJoin(YwPatrolTask.class,YwPatrolTask::getId,YwPatrolTaskRecord::getTaskId)
                .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId)
                .eq(YwPatrolScheme::getIsdeleted, Constants.ZERO)
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getTaskId()),YwPatrolTaskRecord::getTaskId, model.getTaskId())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getDealUserId()),YwPatrolTaskRecord::getDealUserId, model.getDealUserId())
                .like(StringUtils.isNotBlank(model.getPointName()),YwPatrolPoint::getName,model.getPointName())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getStatus()) , YwPatrolTaskRecord::getStatus,model.getStatus())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getDeviceId()) , YwPatrolPoint::getDeviceId,model.getDeviceId())
                .orderByDesc(YwPatrolScheme::getCreateDate)
        ;
        IPage<YwPatrolTaskRecord> iPage = ywPatrolTaskRecordMapper.selectJoinPage(page,YwPatrolTaskRecord.class,queryWrapper); 
        if(iPage!=null && iPage.getRecords()!=null){
            for(YwPatrolTaskRecord m : iPage.getRecords()){
                getFileListByModel(m);
            }
        }
        return PageData.from(iPage);
    }
    private void getFileListByModel(YwPatrolTaskRecord ywPatrolTaskRecord) {
        //附件数据
        List<Multifile> multifileList = multifileMapper.selectJoinList(Multifile.class,new MPJLambdaWrapper<Multifile>()
                .selectAll(Multifile.class)
                .selectAs(SystemUser::getRealname,Multifile::getUserName)
                .leftJoin(SystemUser.class,SystemUser::getId,Multifile::getCreator)
                .eq(Multifile::getObjId,ywPatrolTaskRecord.getId())
                .eq(Multifile::getIsdeleted,Constants.ZERO)
                .eq(Multifile::getObjType,Constants.MultiFile.FN_PATROL_TASK_RECORD_FILE.getKey()));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_PATROL).getCode();
            for (Multifile multifile:multifileList) {
                if(StringUtils.isNotBlank(multifile.getFileurl())){
                    multifile.setFileurlFull(path + multifile.getFileurl());
                }
            }
            ywPatrolTaskRecord.setMultifileList(multifileList);
        }
    }
    @Override
@@ -149,7 +193,8 @@
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void patrolData(YwPatrolTaskRecord ywPatrolTaskRecord) {
        if(Objects.isNull(ywPatrolTaskRecord)
        || Objects.isNull(ywPatrolTaskRecord.getId())
            || Objects.isNull(ywPatrolTaskRecord.getId())
            || Objects.isNull(ywPatrolTaskRecord.getDealStatus())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
@@ -161,13 +206,18 @@
        if(!Constants.equalsInteger(model.getStatus(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态已流转");
        }
        YwPatrolPoint ywPatrolPoint = ywPatrolPointMapper.selectById(model.getPointId());
        if(Objects.isNull(ywPatrolPoint)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        YwDevice ywDevice = ywDeviceMapper.selectById(ywPatrolPoint.getDeviceId());
        if(Objects.isNull(ywDevice)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        YwPatrolScheme ywPatrolScheme = ywPatrolSchemeMapper.selectById(model.getSchemeId());
        if(Objects.isNull(ywPatrolScheme)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到巡检计划信息");
        }
        List<String>  userIdList = Arrays.asList(ywPatrolScheme.getUserIds().split(","));
        if(userIdList.stream().filter(i->Constants.equalsInteger(Integer.valueOf(i),loginUserInfo.getId())).collect(Collectors.toList()).size()<=0){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"非您的巡检任务无法进行处理");
        }
        YwPatrolTask ywPatrolTask = ywPatrolTaskMapper.selectById(model.getTaskId());
        if(Objects.isNull(ywPatrolTask)){
@@ -176,8 +226,9 @@
        if(ywPatrolTask.getStartDate().getTime()>System.currentTimeMillis()){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未到巡检时间无法进行该操作");
        }
        ywPatrolTaskRecordMapper.update(null,new UpdateWrapper<YwPatrolTaskRecord>().lambda()
                .set(YwPatrolTaskRecord::getDealStatus,ywDevice.getStatus())
                .set(YwPatrolTaskRecord::getDealStatus,ywPatrolTaskRecord.getDealStatus())
                .set(YwPatrolTaskRecord::getEditor,loginUserInfo.getId())
                .set(YwPatrolTaskRecord::getEditDate, DateUtil.getCurrDateTime())
                .set(YwPatrolTaskRecord::getDealDate, DateUtil.getCurrDateTime())
@@ -186,19 +237,46 @@
                .set(YwPatrolTaskRecord::getDealInfo, ywPatrolTaskRecord.getDealInfo())
                .eq(YwPatrolTaskRecord::getId,ywPatrolTaskRecord.getId()));
        if(ywPatrolTaskRecordMapper.selectCount(new QueryWrapper<YwPatrolTaskRecord>().lambda()
                .eq(YwPatrolTaskRecord::getTaskId,ywPatrolTask.getId())
                .ne(YwPatrolTaskRecord::getId,ywPatrolTaskRecord.getId()))==Constants.ZERO){
            ywPatrolTask.setStatus(Constants.THREE);
                .eq(YwPatrolTaskRecord::getStatus,Constants.ZERO)
                .ne(YwPatrolTaskRecord::getId,ywPatrolTaskRecord.getId())
        )==Constants.ZERO){
            ywPatrolTaskMapper.update(null,new UpdateWrapper<YwPatrolTask>().lambda()
                    .eq(YwPatrolTask::getId,ywPatrolTask.getId())
                    .set(YwPatrolTask::getStatus,Constants.THREE)
                    .set(YwPatrolTask::getEditDate,DateUtil.getCurrDateTime())
                    .set(YwPatrolTask::getDealDate,DateUtil.getCurrDateTime())
                    .set(YwPatrolTask::getDealUserId,loginUserInfo.getId())
                    .set(YwPatrolTask::getEditor,loginUserInfo.getId())
            );
            //标记待办已处理
            noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda()
                    .set(Notices::getStatus,Constants.ONE)
                    .set(Notices::getParam3,Constants.TWO)
                    .eq(Notices::getIsdeleted,Constants.ZERO)
                    .eq(Notices::getObjType,Constants.ONE)
                    .eq(Notices::getObjId,ywPatrolTask.getId())
            );
        }else{
            ywPatrolTask.setStatus(Constants.ONE);
            if(Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.ZERO)){
                ywPatrolTaskMapper.update(null,new UpdateWrapper<YwPatrolTask>().lambda()
                        .eq(YwPatrolTask::getId,ywPatrolTask.getId())
                        .set(YwPatrolTask::getStatus,Constants.ONE)
                        .set(YwPatrolTask::getEditDate,DateUtil.getCurrDateTime())
                        .set(YwPatrolTask::getEditor,loginUserInfo.getId())
                );
            }
            //标记待办已处理
            noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda()
                    .set(Notices::getParam3,Constants.ONE)
                    .eq(Notices::getIsdeleted,Constants.ZERO)
                    .eq(Notices::getObjType,Constants.ONE)
                    .eq(Notices::getObjId,ywPatrolTask.getId())
            );
        }
        //查询是否存在其他未
       ywPatrolTaskMapper.update(null,new UpdateWrapper<YwPatrolTask>().lambda().eq(YwPatrolTask::getId,ywPatrolTask.getId())
               .set(YwPatrolTask::getStatus,ywPatrolTask.getStatus())
               .set(YwPatrolTask::getEditDate,DateUtil.getCurrDateTime())
               .set(YwPatrolTask::getEditor,loginUserInfo.getId())
       );
        //附件数据
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywPatrolTaskRecord.getMultifileList())){
            for (Multifile multifile:ywPatrolTaskRecord.getMultifileList()) {
@@ -232,12 +310,13 @@
                .selectAll(YwPatrolTaskRecord.class)
                .selectAs(YwPatrolPoint::getName,YwPatrolTaskRecord::getPointName)
                .selectAs(YwPatrolPoint::getContent,YwPatrolTaskRecord::getContent)
                .selectAs(YwPatrolPoint::getDeviceId,YwPatrolTaskRecord::getDeviceId)
                .selectAs(SystemUser::getRealname,YwPatrolTaskRecord::getRealname)
                .selectAs(Company::getName,YwPatrolTaskRecord::getCompanyName)
                .leftJoin(YwPatrolPoint.class,YwPatrolPoint::getId,YwPatrolTaskRecord::getPointId)
                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTaskRecord::getDealUserId)
                .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
                .eq(YwPatrolScheme::getIsdeleted, Constants.ZERO)
                .eq(YwPatrolTaskRecord::getIsdeleted, Constants.ZERO)
                .eq(YwPatrolPoint::getCode,bean.getPointCode())
                .eq(YwPatrolTaskRecord::getTaskId,bean.getTaskId())
                .orderByDesc(YwPatrolScheme::getCreateDate)
@@ -246,29 +325,54 @@
        if(Objects.isNull(ywPatrolTaskRecord)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未匹配到巡检点!");
        }
        //附件数据
        List<Multifile> multifileList = multifileMapper.selectJoinList(Multifile.class,new MPJLambdaWrapper<Multifile>()
                .selectAll(Multifile.class)
                .selectAs(SystemUser::getRealname,Multifile::getUserName)
                .leftJoin(SystemUser.class,SystemUser::getId,Multifile::getCreator)
                .eq(Multifile::getObjId,ywPatrolTaskRecord.getId())
                .eq(Multifile::getIsdeleted,Constants.ZERO)
                .eq(Multifile::getObjType,Constants.MultiFile.FN_PATROL_TASK_RECORD_FILE.getKey()));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_PATROL).getCode();
            for (Multifile multifile:multifileList) {
                if(StringUtils.isNotBlank(multifile.getFileurl())){
                    multifile.setFileurlFull(path + multifile.getFileurl());
                }
            }
            ywPatrolTaskRecord.setMultifileList(multifileList);
        }
        getFileListByModel(ywPatrolTaskRecord);
        return ywPatrolTaskRecord;
    }
    /**
     * 根据登录人与巡检点查询任务信息
     * @param bean
     * @return
     */
    @Override
    public YwPatrolTaskRecord getRecordByUserPoint(YwPatrolTaskRecord bean,LoginUserInfo loginUserInfo) {
        if(Objects.isNull(bean)
                || StringUtils.isBlank(bean.getPointCode())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(ywPatrolPointMapper.selectCount(new QueryWrapper<YwPatrolPoint>().lambda().eq(YwPatrolPoint::getCode,bean.getPointCode()))==Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未匹配到巡检点,请重新扫码!");
        }
        YwPatrolTaskRecord ywPatrolTaskRecord = ywPatrolTaskRecordMapper.selectJoinOne(YwPatrolTaskRecord.class,new MPJLambdaWrapper<YwPatrolTaskRecord>()
                .selectAll(YwPatrolTaskRecord.class)
                .selectAs(YwPatrolPoint::getName,YwPatrolTaskRecord::getPointName)
                .selectAs(YwPatrolPoint::getContent,YwPatrolTaskRecord::getContent)
                .selectAs(YwPatrolPoint::getDeviceId,YwPatrolTaskRecord::getDeviceId)
                .selectAs(YwPatrolScheme::getTitle,YwPatrolTaskRecord::getSchemeTitle)
                .selectAs(SystemUser::getRealname,YwPatrolTaskRecord::getRealname)
                .selectAs(Company::getName,YwPatrolTaskRecord::getCompanyName)
                .leftJoin(YwPatrolPoint.class,YwPatrolPoint::getId,YwPatrolTaskRecord::getPointId)
                .leftJoin(YwPatrolTask.class,YwPatrolTask::getId,YwPatrolTaskRecord::getTaskId)
                .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId)
                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTaskRecord::getDealUserId)
                .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
                .eq(YwPatrolTaskRecord::getIsdeleted, Constants.ZERO)
                .eq(YwPatrolTaskRecord::getStatus, Constants.ZERO)
                .eq(YwPatrolPoint::getCode,bean.getPointCode())
                .apply("  DATE(t2.START_DATE) = DATE(NOW()) and find_in_set('"+loginUserInfo.getId()+"', t3.USER_IDS )  ")
                .orderByDesc(YwPatrolScheme::getCreateDate)
                .last(" limit 1 ")
        );
        if(Objects.isNull(ywPatrolTaskRecord)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"今日暂无巡检任务!");
        }
        getFileListByModel(ywPatrolTaskRecord);
        return ywPatrolTaskRecord;
    }