龚焕茏
2024-04-09 23003e5ece97193921dacc7a7dc98926449b64d6
ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
@@ -1,34 +1,35 @@
package com.ycl.platform.service.impl;
import com.ycl.platform.domain.entity.Region;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.entity.Report;
import com.ycl.platform.domain.entity.YwPeople;
import com.ycl.platform.domain.entity.YwPoint;
import com.ycl.platform.domain.entity.YwUnit;
import com.ycl.platform.mapper.RegionMapper;
import com.ycl.platform.domain.form.ReportForm;
import com.ycl.platform.domain.query.ReportQuery;
import com.ycl.platform.domain.vo.ReportVO;
import com.ycl.platform.mapper.ReportMapper;
import com.ycl.platform.mapper.YwPeopleMapper;
import com.ycl.platform.mapper.YwPointMapper;
import com.ycl.platform.mapper.YwUnitMapper;
import com.ycl.platform.service.ReportService;
import com.ycl.system.Result;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.form.ReportForm;
import com.ycl.platform.domain.vo.ReportVO;
import com.ycl.platform.domain.query.ReportQuery;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ycl.system.page.PageUtil;
import org.springframework.stereotype.Service;
import org.springframework.security.core.context.SecurityContextHolder;
import com.ycl.utils.SecurityUtils;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import lombok.RequiredArgsConstructor;
/**
 * 报备 服务实现类
@@ -40,10 +41,9 @@
@RequiredArgsConstructor
public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> implements ReportService {
    private final ReportMapper reportMapper;
    private final YwUnitMapper unitMapper;
    private final YwPointMapper ywpointMapper;
    private final YwPeopleMapper peopleMapper;
    private final RegionMapper regionMapper;
    /**
     * 添加
@@ -52,9 +52,12 @@
     */
    @Override
    public Result add(ReportForm form) {
        form.setPeopleId(1);
        form.setUnitId(2);
        Long userId = SecurityUtils.getUserId();
        YwPeople people = new LambdaQueryChainWrapper<>(peopleMapper).eq(YwPeople::getUserId, userId).one();
        form.setPeopleId(people.getId());
        form.setUnitId(people.getBelongUnit());
        Report entity = ReportForm.getEntityByForm(form, null);
        entity.setStatus(0);
        if(baseMapper.insert(entity) > 0) {
            return Result.ok("添加成功");
        }
@@ -114,10 +117,29 @@
    @Override
    public Result page(ReportQuery query) {
        if (StringUtils.isNotBlank(query.getPointId())) {
            LambdaQueryWrapper<YwPoint> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.like(YwPoint::getPointName, query.getPointId());
            query.setPointIdList(ywpointMapper.selectList(queryWrapper).stream().map(YwPoint::getId).collect(Collectors.toList()));
            if(CollectionUtils.isEmpty(query.getPointIdList())) {
                return Result.ok();
            }
        }
        if (StringUtils.isNotBlank(query.getPeopleId())) {
            LambdaQueryWrapper<YwPeople> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.like(YwPeople::getYwPersonName, query.getPeopleId());
            query.setPeopleIdList(peopleMapper.selectList(queryWrapper).stream().map(YwPeople::getId).collect(Collectors.toList()));
            if(CollectionUtils.isEmpty(query.getPeopleIdList())) {
                return Result.ok();
            }
        }
        IPage<Report> page = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(StringUtils.isNotBlank(query.getReportType()), Report::getReportType, query.getReportType())
                .le(Objects.nonNull(query.getBeginCreateTime()), Report::getBeginCreateTime, query.getBeginCreateTime())
                .ge(Objects.nonNull(query.getEndCreateTime()), Report::getEndCreateTime, query.getEndCreateTime())
                .in(!CollectionUtils.isEmpty(query.getPointIdList()), Report::getPointId, query.getPointIdList())
                .in(!CollectionUtils.isEmpty(query.getPeopleIdList()), Report::getPeopleId, query.getPeopleIdList())
                .orderByDesc(Report::getCreateTime)
                .page(PageUtil.getPage(query, Report.class));
@@ -129,8 +151,8 @@
                            vo.setUnitName(unit.getUnitName());
                            YwPeople ywPeople = peopleMapper.selectById(vo.getPeopleId());
                            vo.setPeopleName(ywPeople.getYwPersonName());
                            Region region = regionMapper.selectById(vo.getPointId());
                            vo.setPointName(region.getFullName());
                            YwPoint ywPoint = ywpointMapper.selectById(vo.getPointId());
                            vo.setPointName(ywPoint.getPointName());
                            return vo;
                        }
                )
@@ -166,4 +188,50 @@
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
    public List<ReportVO> export(ReportQuery query) {
        if (StringUtils.isNotBlank(query.getPointId())) {
            LambdaQueryWrapper<YwPoint> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.like(YwPoint::getPointName, query.getPointId());
            query.setPointIdList(ywpointMapper.selectList(queryWrapper).stream().map(YwPoint::getId).collect(Collectors.toList()));
            if(CollectionUtils.isEmpty(query.getPointIdList())) {
                return new ArrayList<>();
            }
        }
        if (StringUtils.isNotBlank(query.getPeopleId())) {
            LambdaQueryWrapper<YwPeople> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.like(YwPeople::getYwPersonName, query.getPeopleId());
            query.setPeopleIdList(peopleMapper.selectList(queryWrapper).stream().map(YwPeople::getId).collect(Collectors.toList()));
            if(CollectionUtils.isEmpty(query.getPeopleIdList())) {
                return new ArrayList<>();
            }
        }
        IPage<Report> page = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(StringUtils.isNotBlank(query.getReportType()), Report::getReportType, query.getReportType())
                .le(Objects.nonNull(query.getBeginCreateTime()), Report::getBeginCreateTime, query.getBeginCreateTime())
                .ge(Objects.nonNull(query.getEndCreateTime()), Report::getEndCreateTime, query.getEndCreateTime())
                .in(!CollectionUtils.isEmpty(query.getPointIdList()), Report::getPointId, query.getPointIdList())
                .in(!CollectionUtils.isEmpty(query.getPeopleIdList()), Report::getPeopleId, query.getPeopleIdList())
                .orderByDesc(Report::getCreateTime)
                .page(PageUtil.getPage(query, Report.class));
        List<ReportVO> vos = page.getRecords().stream()
                .map(
                        entity -> {
                            ReportVO vo = ReportVO.getVoByEntity(entity, null);
                            YwUnit unit = unitMapper.selectById(vo.getUnitId());
                            vo.setUnitName(unit.getUnitName());
                            YwPeople ywPeople = peopleMapper.selectById(vo.getPeopleId());
                            vo.setPeopleName(ywPeople.getYwPersonName());
                            YwPoint ywPoint = ywpointMapper.selectById(vo.getPointId());
                            vo.setPointName(ywPoint.getPointName());
                            return vo;
                        }
                )
                .collect(Collectors.toList());
        return vos;
    }
}