青羊经侦大队-数据平台
wl
2022-07-15 2918688dff476da47f17723ad136149f3bde4add
src/main/java/com/example/jz/service/impl/CauseServiceImpl.java
@@ -1,18 +1,150 @@
package com.example.jz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.jz.dao.CauseDao;
import com.example.jz.modle.entity.Cause;
import com.example.jz.dao.*;
import com.example.jz.modle.PageParam;
import com.example.jz.modle.dto.CauseDto;
import com.example.jz.modle.entity.*;
import com.example.jz.modle.vo.AnnouncementVo;
import com.example.jz.modle.vo.CauseReportVo;
import com.example.jz.modle.vo.CauseVo;
import com.example.jz.modle.vo.UserVo;
import com.example.jz.service.CauseService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * (Cause)表服务实现类
 * 案件表(Cause)表服务实现类
 *
 * @author makejava
 * @since 2022-07-11 16:55:41
 * @since 2022-07-13 11:52:58
 */
@Service("causeService")
public class CauseServiceImpl extends ServiceImpl<CauseDao, Cause> implements CauseService {
}
    @Resource
    CauseDao causeDao;
    @Resource
    UserDao userDao;
    @Resource
    ReportDao reportDao;
    @Resource
    CauseService causeService;
    @Resource
    GroupDao groupDao;
    @Resource
    AnnouncementDao announcementDao;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Integer addCause(CauseDto causeDto) {
        //创建案件
        Cause cause = new Cause();
        BeanUtils.copyProperties(causeDto, cause);
        cause.setCtime(new Date());
        causeService.save(cause);
        //创建群组
        Group group = new Group();
        group.setCtime(new Date());
        group.setGroupName(causeDto.getName());
        group.setUserId(causeDto.getUserId());
        group.setCauseId(cause.getId());
        return groupDao.insert(group);
    }
    @Override
    public PageParam<CauseVo> getCauserListByCondition(String cause, Integer status, Integer size, Integer current) {
        QueryWrapper<Cause> causeQueryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(cause)) {
            causeQueryWrapper.and(a -> a.like(StringUtils.isNotBlank(cause), "number", cause)
                    .or(StringUtils.isNotBlank(cause))
                    .like(StringUtils.isNotBlank(cause), "name", cause));
        }
        if (status != null) {
            causeQueryWrapper.eq("status", status);
        }
        causeQueryWrapper.orderByDesc("ctime");
        PageParam<Cause> causePageParam = new PageParam<>();
        if (size != null) {
            causePageParam.setSize(size);
        }
        if (current != null) {
            causePageParam.setCurrent(current);
        }
        PageParam<Cause> causePage = causeDao.selectPage(causePageParam, causeQueryWrapper);
        List<CauseVo> causeVos = causePage.getRecords().stream().map(
                a -> {
                    CauseVo causeVo = new CauseVo();
                    BeanUtils.copyProperties(a, causeVo);
                    causeVo.setUserName(userDao.selectOne(new QueryWrapper<User>().eq("id", a.getUserId())).getRealName());
                    causeVo.setReportNumber(reportDao.selectCount(new QueryWrapper<Report>().eq("cause_id", a.getId())));
                    causeVo.setGroupId(groupDao.selectOne(new QueryWrapper<Group>().eq("cause_id", a.getId())).getId());
                    return causeVo;
                }).collect(Collectors.toList());
        PageParam<CauseVo> causeVoPageParam = new PageParam<>();
        BeanUtils.copyProperties(causePage, causeVoPageParam);
        causeVoPageParam.setRecords(causeVos);
        return causeVoPageParam;
    }
    @Override
    public List<UserVo> getManagerList() {
        return userDao.selectList(new QueryWrapper<User>().eq("role", 1)).stream().map(a -> {
            UserVo userVo = new UserVo();
            userVo.setUserId(a.getId());
            userVo.setUserName(a.getRealName());
            return userVo;
        }).collect(Collectors.toList());
    }
    @Override
    public Integer updateCause(CauseDto causeDto, Integer id) {
        Cause cause = new Cause();
        BeanUtils.copyProperties(causeDto, cause);
        cause.setId(id);
        return causeDao.updateById(cause);
    }
    @Override
    public List<CauseReportVo> getReporterList(Integer causeId) {
        return reportDao.selectList(new QueryWrapper<Report>().eq("cause_id", causeId)).stream()
                .map(
                        a -> {
                            CauseReportVo causeReportVo = new CauseReportVo();
                            User user = userDao.selectOne(new QueryWrapper<User>().eq("id", a.getUserId()));
                            BeanUtils.copyProperties(a, causeReportVo);
                            causeReportVo.setUserIdcard(user.getUserIdcard());
                            causeReportVo.setUserMobile(user.getUserMobile());
                            causeReportVo.setUserIdcard(causeReportVo.getUserIdcard().replaceAll("(?<=[\\d]{3})\\d(?=[\\d]{4})", "*"));
                            causeReportVo.setUserName(user.getRealName());
                            return causeReportVo;
                        }
                ).collect(Collectors.toList());
    }
    @Override
    public List<AnnouncementVo> getGroupAnnouncement(Integer groupId) {
        return announcementDao.selectList(new QueryWrapper<Announcement>().eq("group_id", groupId)).stream()
                .map(
                        a -> {
                            AnnouncementVo announcementVo = new AnnouncementVo();
                            BeanUtils.copyProperties(a, announcementVo);
                            return announcementVo;
                        }
                ).collect(Collectors.toList());
    }
    @Override
    public void deleteCause(Integer id) {
         causeDao.deleteById(id);
    }
}