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 deleteWrapper = new UpdateWrapper<>(ywPatrolTaskRecord); ywPatrolTaskRecordMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } ywPatrolTaskRecordMapper.deleteBatchIds(ids); } @Override public void updateById(YwPatrolTaskRecord ywPatrolTaskRecord) { ywPatrolTaskRecordMapper.updateById(ywPatrolTaskRecord); } @Override public void updateByIdInBatch(List 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 wrapper = new QueryWrapper<>(ywPatrolTaskRecord); return ywPatrolTaskRecordMapper.selectOne(wrapper); } @Override public List findList(YwPatrolTaskRecord ywPatrolTaskRecord) { QueryWrapper wrapper = new QueryWrapper<>(ywPatrolTaskRecord); return ywPatrolTaskRecordMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper(); 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) .leftJoin(YwPatrolPoint.class,YwPatrolPoint::getId,YwPatrolTaskRecord::getPointId) .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTaskRecord::getDealUserId) .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()) .orderByDesc(YwPatrolScheme::getCreateDate) ; IPage iPage = ywPatrolTaskRecordMapper.selectJoinPage(page,YwPatrolTaskRecord.class,queryWrapper); return PageData.from(iPage); } @Override public long count(YwPatrolTaskRecord ywPatrolTaskRecord) { QueryWrapper 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().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().lambda() .eq(YwPatrolTaskRecord::getTaskId,ywPatrolTask.getId()) .eq(YwPatrolTaskRecord::getStatus,Constants.ZERO) .ne(YwPatrolTaskRecord::getId,ywPatrolTaskRecord.getId()) )==Constants.ZERO){ ywPatrolTaskMapper.update(null,new UpdateWrapper().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().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().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().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().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() .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(),"未匹配到巡检点!"); } //附件数据 List multifileList = multifileMapper.selectJoinList(Multifile.class,new MPJLambdaWrapper() .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); } return ywPatrolTaskRecord; } @Override public YwPatrolTaskRecord getDetail(Integer id) { YwPatrolTaskRecord ywPatrolTaskRecord = ywPatrolTaskRecordMapper.selectJoinOne(YwPatrolTaskRecord.class,new MPJLambdaWrapper() .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 multifileList = multifileMapper.selectJoinList(Multifile.class,new MPJLambdaWrapper() .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; } }