package com.ruoyi.gas.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.PagePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.gas.domain.*; import com.ruoyi.gas.domain.bo.*; import com.ruoyi.gas.domain.vo.GRoadSectionInspectionVo; import com.ruoyi.gas.mapper.GRoadSectionInspectionMapper; import com.ruoyi.gas.service.IGRoadSectionInspectionPhotoService; import com.ruoyi.gas.service.IGRoadSectionInspectionService; import com.ruoyi.gas.service.IGRoadsectionProcessService; import com.ruoyi.gas.service.IGUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import java.util.*; import java.util.stream.Collectors; /** * 路段巡查Service业务层处理 * * @author ruoyi * @date 2024-03-06 */ @Service public class GRoadSectionInspectionServiceImpl extends ServicePlusImpl implements IGRoadSectionInspectionService { @Override public GRoadSectionInspectionVo queryById(Long id) { GRoadSectionInspectionVo voById = getVoById(id); voById.setPhotoList(baseMapper.getPhoto(voById.getId())); return voById; } @Autowired private IGUserService gUserService; @Override public TableDataInfo queryPageList(GRoadSectionInspectionBo bo) { String ranks = bo.getRanks(); if (StringUtils.isNotEmpty(ranks)) { bo.setUids(gUserService.getByRanks(ranks)); } PagePlus result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo)); TableDataInfo tableDataInfo = PageUtils.buildDataInfo(result); tableDataInfo.getRows().forEach(item -> { item.setPhotoList(baseMapper.getPhoto(item.getId())); // item.setCreateByName(baseMapper.getName(item.getCreateBy())); if (!ObjectUtils.isEmpty(bo.getPostNameArias())) { //按照顺序审核 //未审核过队长先展示 List listed = roadsectionProcessService.list(new QueryWrapper().eq("emr_id", item.getId()).eq("process_status","0")); if (ObjectUtils.isEmpty(listed)){ String regex = "^xx.*"; if (bo.getPostNameArias().matches(regex)){ item.setFlag(true); } } else { String regex = "^xx.*"; if (bo.getPostNameArias().matches(regex)){ if ("0".equals(item.getProcessStatus())){ item.setFlag(false); } if ("1".equals(item.getProcessStatus())){ item.setFlag(false); } if ("2".equals(item.getProcessStatus())){ item.setFlag(false); } if ("-1".equals(item.getProcessStatus())){ item.setFlag(true); } }else { if ("0".equals(item.getProcessStatus())){ item.setFlag(true); } if ("1".equals(item.getProcessStatus())){ item.setFlag(false); } if ("2".equals(item.getProcessStatus())){ item.setFlag(false); } if ("-1".equals(item.getProcessStatus())){ if (listed.get(0).getProcessStatus().equals("0")){ item.setFlag(true); } if (listed.get(0).getProcessStatus().equals("1")){ item.setFlag(false); } } } } } }); return tableDataInfo; } @Override public List queryList(GRoadSectionInspectionBo bo) { return listVo(buildQueryWrapper(bo)); } private LambdaQueryWrapper buildQueryWrapper(GRoadSectionInspectionBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByDesc(GRoadSectionInspection::getCreateTime); lqw.like(StringUtils.isNotBlank(bo.getSectionName()), GRoadSectionInspection::getSectionName, bo.getSectionName()); lqw.eq(StringUtils.isNotBlank(bo.getSamplingMeterCount()), GRoadSectionInspection::getSamplingMeterCount, bo.getSamplingMeterCount()); lqw.eq(StringUtils.isNotBlank(bo.getFindProblem()), GRoadSectionInspection::getFindProblem, bo.getFindProblem()); lqw.eq(bo.getFindTime() != null, GRoadSectionInspection::getFindTime, bo.getFindTime()); lqw.in(StringUtils.isNotEmpty(bo.getRanks()), GRoadSectionInspection::getCreateBy, !ObjectUtils.isEmpty(bo.getUids()) && bo.getUids().size() > 0 ? bo.getUids() : Arrays.asList(0L)); lqw.eq(StringUtils.isNotBlank(bo.getCreateBy()), GRoadSectionInspection::getCreateBy, bo.getCreateBy()); if (!"-1".equals(bo.getProcessStatus())) { lqw.eq(StringUtils.isNotBlank(bo.getProcessStatus()), GRoadSectionInspection::getProcessStatus, bo.getProcessStatus()); }else{ lqw.or().in(StringUtils.isNotBlank(bo.getProcessStatus()), GRoadSectionInspection::getProcessStatus, "-1",""); lqw.or().isNull(GRoadSectionInspection::getProcessStatus); } if (!ObjectUtils.isEmpty(bo.getCreateTimes())){ lqw.ge(GRoadSectionInspection::getCreateTime, bo.getCreateTimes().get(0)); lqw.le(GRoadSectionInspection::getCreateTime, bo.getCreateTimes().get(1)); } lqw.orderByDesc(GRoadSectionInspection::getCreateTime); return lqw; } @Autowired private IGRoadSectionInspectionPhotoService service; @Override public Boolean insertByBo(GRoadSectionInspectionBo bo) { GRoadSectionInspection add = BeanUtil.toBean(bo, GRoadSectionInspection.class); validEntityBeforeSave(add); boolean flag = save(add); if (flag) { bo.setId(add.getId()); //添加照片 List piclist = bo.getPhotoList(); if (piclist != null) { for (int i = 0; i < bo.getPhotoList().size(); i++) { GRoadSectionInspectionPhotoBo photo = new GRoadSectionInspectionPhotoBo(); photo.setParentId(bo.getId()); photo.setPicUrl(bo.getPhotoList().get(i)); service.insertByBo(photo); } } } return flag; } @Override @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(GRoadSectionInspectionBo bo) { GRoadSectionInspection update = BeanUtil.toBean(bo, GRoadSectionInspection.class); validEntityBeforeSave(update); List piclist = bo.getPhotoList(); if (piclist != null) { //原有的照片 List photolist = baseMapper.getPhoto(bo.getId()); //原有的照片不在新传的照片里 List dellist = photolist.stream().filter(i -> !piclist.contains(i)).collect(Collectors.toList()); //删除照片 if (dellist.size() > 0) { service.deleteByUrl(bo.getId(), dellist); } //新传的照片不在原有的照片里 List inslist = piclist.stream().filter(i -> !photolist.contains(i)).collect(Collectors.toList()); if (inslist.size() > 0) { for (int i = 0; i < inslist.size(); i++) { if (StringUtils.isNotEmpty(inslist.get(i))) { //添加照片 GRoadSectionInspectionPhotoBo photo = new GRoadSectionInspectionPhotoBo(); photo.setParentId(bo.getId()); photo.setPicUrl(inslist.get(i)); service.insertByBo(photo); } } } } update.setProcessStatus("-1"); return updateById(update); } /** * 保存前的数据校验 * * @param entity 实体类数据 */ private void validEntityBeforeSave(GRoadSectionInspection entity) { //TODO 做一些数据校验,如唯一约束 } @Override @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } roadsectionProcessService.remove(new QueryWrapper().in("emr_id", ids)); return removeByIds(ids); } @Override @Transactional(rollbackFor = Exception.class) public Boolean batchReview(BatchReviewBo bo) { List list = new ArrayList<>(); Collection processList = new ArrayList<>(); if (!ObjectUtils.isEmpty(bo.getUids())) { bo.getUids().forEach(item -> { GRoadSectionInspection roadSectionInspection = new GRoadSectionInspection(); roadSectionInspection.setId(item); GRoadsectionProcess processBo = new GRoadsectionProcess(); processBo.setEmrId(item); processBo.setProcessStatus(bo.getProcessStatus()); processBo.setProcessComments(bo.getProcessComments()); processBo.setUserPost(bo.getPostNameArias()); processList.add(processBo); list.add(roadSectionInspection); }); } boolean b = roadsectionProcessService.saveBatch(processList); //更新主表状态 updateNetworkManage(list); return b; } // @Async public void updateNetworkManage(Collection boxList) { boxList.stream().forEach(obj->{ //最新一条 QueryWrapper queryWrapper = new QueryWrapper().eq("emr_id", obj.getId()).orderByDesc("create_time"); List listed = roadsectionProcessService.list(queryWrapper); if(!ObjectUtils.isEmpty(listed)) { //队长审核不通过 GRoadsectionProcess gTeamProcess = listed.get(0); String regex = "^xx.*"; if (gTeamProcess.getUserPost().matches(regex)) { if (gTeamProcess.getProcessStatus().equals("1")){ obj.setProcessStatus("2"); updateById(obj); }else if (gTeamProcess.getProcessStatus().equals("0")){ //队长通过 处事没审核 obj.setProcessStatus("0"); updateById(obj); } }else { //处事审核通过 即主表状态通过 if (gTeamProcess.getProcessStatus().equals("0")){ obj.setProcessStatus("1"); updateById(obj); } //处事审核不通过 else if (gTeamProcess.getProcessStatus().equals("1")){ obj.setProcessStatus("2"); updateById(obj); } } } }); } @Autowired private IGRoadsectionProcessService roadsectionProcessService; }