| package com.doumee.service.business.impl; | 
|   | 
| import com.doumee.biz.system.SystemDictDataBiz; | 
| 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.dao.business.*; | 
| import com.doumee.dao.business.model.*; | 
| import com.doumee.dao.system.MultifileMapper; | 
| import com.doumee.dao.system.model.Multifile; | 
| import com.doumee.dao.system.model.SystemUser; | 
| import com.doumee.service.business.YwPatrolTaskRecordService; | 
| 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.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import java.util.Date; | 
| import java.util.List; | 
| import java.util.Objects; | 
|   | 
| /** | 
|  * 运维巡检任务 - 巡检点信息表Service实现 | 
|  * @author 江蹄蹄 | 
|  * @date 2024/11/21 18:11 | 
|  */ | 
| @Service | 
| public class YwPatrolTaskRecordServiceImpl implements YwPatrolTaskRecordService { | 
|   | 
|     @Autowired | 
|     private YwPatrolTaskRecordMapper ywPatrolTaskRecordMapper; | 
|   | 
|     @Autowired | 
|     private MultifileMapper multifileMapper; | 
|   | 
|     @Autowired | 
|     private YwDeviceMapper ywDeviceMapper; | 
|   | 
|     @Autowired | 
|     private YwPatrolPointMapper ywPatrolPointMapper; | 
|   | 
|     @Autowired | 
|     private SystemDictDataBiz systemDictDataBiz; | 
|   | 
|     @Autowired | 
|     private YwPatrolTaskMapper ywPatrolTaskMapper; | 
|   | 
|     @Autowired | 
|     private YwPatrolSchemeMapper ywPatrolSchemeMapper; | 
|   | 
|   | 
|     @Override | 
|     public Integer create(YwPatrolTaskRecord ywPatrolTaskRecord) { | 
|         ywPatrolTaskRecordMapper.insert(ywPatrolTaskRecord); | 
|         return ywPatrolTaskRecord.getId(); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteById(Integer id) { | 
|         ywPatrolTaskRecordMapper.deleteById(id); | 
|     } | 
|   | 
|     @Override | 
|     public void delete(YwPatrolTaskRecord ywPatrolTaskRecord) { | 
|         UpdateWrapper<YwPatrolTaskRecord> deleteWrapper = new UpdateWrapper<>(ywPatrolTaskRecord); | 
|         ywPatrolTaskRecordMapper.delete(deleteWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         ywPatrolTaskRecordMapper.deleteBatchIds(ids); | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(YwPatrolTaskRecord ywPatrolTaskRecord) { | 
|         ywPatrolTaskRecordMapper.updateById(ywPatrolTaskRecord); | 
|     } | 
|   | 
|     @Override | 
|     public void updateByIdInBatch(List<YwPatrolTaskRecord> ywPatrolTaskRecords) { | 
|         if (CollectionUtils.isEmpty(ywPatrolTaskRecords)) { | 
|             return; | 
|         } | 
|         for (YwPatrolTaskRecord ywPatrolTaskRecord: ywPatrolTaskRecords) { | 
|             this.updateById(ywPatrolTaskRecord); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public YwPatrolTaskRecord findById(Integer id) { | 
|         return ywPatrolTaskRecordMapper.selectById(id); | 
|     } | 
|   | 
|     @Override | 
|     public YwPatrolTaskRecord findOne(YwPatrolTaskRecord ywPatrolTaskRecord) { | 
|         QueryWrapper<YwPatrolTaskRecord> wrapper = new QueryWrapper<>(ywPatrolTaskRecord); | 
|         return ywPatrolTaskRecordMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<YwPatrolTaskRecord> findList(YwPatrolTaskRecord ywPatrolTaskRecord) { | 
|         QueryWrapper<YwPatrolTaskRecord> wrapper = new QueryWrapper<>(ywPatrolTaskRecord); | 
|         return ywPatrolTaskRecordMapper.selectList(wrapper); | 
|     } | 
|    | 
|     @Override | 
|     public PageData<YwPatrolTaskRecord> findPage(PageWrap<YwPatrolTaskRecord> pageWrap) { | 
|         IPage<YwPatrolTaskRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         MPJLambdaWrapper<YwPatrolTaskRecord> queryWrapper = new MPJLambdaWrapper<YwPatrolTaskRecord>(); | 
|         Utils.MP.blankToNull(pageWrap.getModel()); | 
|         YwPatrolTaskRecord model = pageWrap.getModel(); | 
|         queryWrapper.selectAll(YwPatrolTaskRecord.class) | 
|                 .selectAs(YwPatrolPoint::getName,YwPatrolTaskRecord::getPointName) | 
|                 .selectAs(YwPatrolPoint::getContent,YwPatrolTaskRecord::getContent) | 
|                 .selectAs(SystemUser::getRealname,YwPatrolTaskRecord::getRealname) | 
|   | 
|                 .selectAs(YwPatrolScheme::getTitle,YwPatrolTaskRecord::getSchemeTitle) | 
|                 .selectAs(YwPatrolTask::getTitle,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 | 
|     public long count(YwPatrolTaskRecord ywPatrolTaskRecord) { | 
|         QueryWrapper<YwPatrolTaskRecord> wrapper = new QueryWrapper<>(ywPatrolTaskRecord); | 
|         return ywPatrolTaskRecordMapper.selectCount(wrapper); | 
|     } | 
|   | 
|   | 
|     @Override | 
|     @Transactional(rollbackFor = {Exception.class,BusinessException.class}) | 
|     public void patrolData(YwPatrolTaskRecord ywPatrolTaskRecord) { | 
|         if(Objects.isNull(ywPatrolTaskRecord) | 
|             || Objects.isNull(ywPatrolTaskRecord.getId()) | 
|             || Objects.isNull(ywPatrolTaskRecord.getDealStatus()) | 
|         ){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
|         } | 
|         LoginUserInfo loginUserInfo = ywPatrolTaskRecord.getLoginUserInfo(); | 
|         YwPatrolTaskRecord model = ywPatrolTaskRecordMapper.selectById(ywPatrolTaskRecord.getId()); | 
|         if(Objects.isNull(model)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
|         } | 
|         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); | 
|         } | 
|         YwPatrolScheme ywPatrolScheme = ywPatrolSchemeMapper.selectById(model.getSchemeId()); | 
|         if(Objects.isNull(ywPatrolScheme)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到巡检计划信息"); | 
|         } | 
|         if(!ywPatrolScheme.getUserIds().equals(loginUserInfo.getId().toString())){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"非您的巡检任务无法进行处理"); | 
|         } | 
|         YwPatrolTask ywPatrolTask = ywPatrolTaskMapper.selectById(model.getTaskId()); | 
|         if(Objects.isNull(ywPatrolTask)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
|         } | 
|         if(ywPatrolTask.getStartDate().getTime()>System.currentTimeMillis()){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未到巡检时间无法进行该操作"); | 
|         } | 
|   | 
|         ywPatrolTaskRecordMapper.update(null,new UpdateWrapper<YwPatrolTaskRecord>().lambda() | 
|                 .set(YwPatrolTaskRecord::getDealStatus,ywPatrolTaskRecord.getDealStatus()) | 
|                 .set(YwPatrolTaskRecord::getEditor,loginUserInfo.getId()) | 
|                 .set(YwPatrolTaskRecord::getEditDate, DateUtil.getCurrDateTime()) | 
|                 .set(YwPatrolTaskRecord::getDealDate, DateUtil.getCurrDateTime()) | 
|                 .set(YwPatrolTaskRecord::getDealUserId,loginUserInfo.getId()) | 
|                 .set(YwPatrolTaskRecord::getStatus,Constants.ONE) | 
|                 .set(YwPatrolTaskRecord::getDealInfo, ywPatrolTaskRecord.getDealInfo()) | 
|                 .eq(YwPatrolTaskRecord::getId,ywPatrolTaskRecord.getId())); | 
|   | 
|         if(ywPatrolTaskRecordMapper.selectCount(new QueryWrapper<YwPatrolTaskRecord>().lambda() | 
|                 .eq(YwPatrolTaskRecord::getTaskId,ywPatrolTask.getId()) | 
|                 .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()) | 
|             ); | 
|   | 
|             if(ywPatrolTaskMapper.selectCount(new QueryWrapper<YwPatrolTask>().lambda() | 
|                     .eq(YwPatrolTask::getSchemeId,ywPatrolTask.getSchemeId()) | 
|                     .in(YwPatrolTask::getStatus,Constants.ZERO,Constants.ONE) | 
|                     .ne(YwPatrolTask::getId,ywPatrolTask.getId()) | 
|             )==Constants.ZERO){ | 
|                 ywPatrolSchemeMapper.update(null,new UpdateWrapper<YwPatrolScheme>().lambda() | 
|                         .eq(YwPatrolScheme::getId,ywPatrolScheme.getId()) | 
|                         .set(YwPatrolScheme::getStatus,Constants.TWO) | 
|                         .set(YwPatrolScheme::getEditDate,DateUtil.getCurrDateTime()) | 
|                         .set(YwPatrolScheme::getEditor,loginUserInfo.getId()) | 
|                 ); | 
|             } | 
|         }else{ | 
|             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()) | 
|                 ); | 
|             } | 
|             if(Constants.equalsInteger(ywPatrolScheme.getStatus(),Constants.ZERO)){ | 
|                 ywPatrolSchemeMapper.update(null,new UpdateWrapper<YwPatrolScheme>().lambda() | 
|                         .eq(YwPatrolScheme::getId,ywPatrolScheme.getId()) | 
|                         .set(YwPatrolScheme::getStatus,Constants.ONE) | 
|                         .set(YwPatrolScheme::getEditDate,DateUtil.getCurrDateTime()) | 
|                         .set(YwPatrolScheme::getEditor,loginUserInfo.getId()) | 
|                 ); | 
|             } | 
|         } | 
|         //附件数据 | 
|         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywPatrolTaskRecord.getMultifileList())){ | 
|             for (Multifile multifile:ywPatrolTaskRecord.getMultifileList()) { | 
|                 if(Objects.isNull(multifile) | 
|                         || StringUtils.isBlank(multifile.getFileurl()) | 
|                 ){ | 
|                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"附件信息错误"); | 
|                 } | 
|                 multifile.setCreator(loginUserInfo.getId()); | 
|                 multifile.setCreateDate(new Date()); | 
|                 multifile.setIsdeleted(Constants.ZERO); | 
|                 multifile.setObjType(Constants.MultiFile.FN_PATROL_TASK_RECORD_FILE.getKey()); | 
|                 multifile.setObjId(ywPatrolTaskRecord.getId()); | 
|             } | 
|             multifileMapper.insert(ywPatrolTaskRecord.getMultifileList()); | 
|         } | 
|   | 
|     } | 
|   | 
|   | 
|   | 
|     @Override | 
|     @Transactional(rollbackFor = {Exception.class,BusinessException.class}) | 
|     public YwPatrolTaskRecord getPointRecordByCode(YwPatrolTaskRecord bean) { | 
|         if(Objects.isNull(bean) | 
|         || Objects.isNull(bean.getTaskId()) | 
|         || StringUtils.isBlank(bean.getPointCode())){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
|         } | 
|         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(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(YwPatrolPoint::getCode,bean.getPointCode()) | 
|                 .eq(YwPatrolTaskRecord::getTaskId,bean.getTaskId()) | 
|                 .orderByDesc(YwPatrolScheme::getCreateDate) | 
|                 .last(" limit 1 ") | 
|         ); | 
|         if(Objects.isNull(ywPatrolTaskRecord)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未匹配到巡检点!"); | 
|         } | 
|         getFileListByModel(ywPatrolTaskRecord); | 
|   | 
|         return ywPatrolTaskRecord; | 
|   | 
|     } | 
|   | 
|   | 
|   | 
|   | 
|     @Override | 
|     public YwPatrolTaskRecord getDetail(Integer id) { | 
|   | 
|         YwPatrolTaskRecord ywPatrolTaskRecord = ywPatrolTaskRecordMapper.selectJoinOne(YwPatrolTaskRecord.class,new MPJLambdaWrapper<YwPatrolTaskRecord>() | 
|                 .selectAll(YwPatrolTaskRecord.class) | 
|                 .selectAs(YwPatrolPoint::getName,YwPatrolTaskRecord::getPointName) | 
|                 .selectAs(YwPatrolPoint::getContent,YwPatrolTaskRecord::getContent) | 
|                 .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::getId,id) | 
|                 .orderByDesc(YwPatrolScheme::getCreateDate) | 
|         ); | 
|         //附件数据 | 
|         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,id) | 
|                 .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); | 
|         } | 
|         return ywPatrolTaskRecord; | 
|     } | 
|   | 
|   | 
|   | 
| } |