青羊经侦大队-数据平台
wl
2022-07-19 043736a7acef00a03fb15744406bfef555ad31eb
src/main/java/com/example/jz/service/impl/CauseServiceImpl.java
@@ -1,23 +1,29 @@
package com.example.jz.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.dao.GroupDao;
import com.example.jz.dao.ReportDao;
import com.example.jz.dao.UserDao;
import com.example.jz.dao.*;
import com.example.jz.enums.CauseEnums;
import com.example.jz.exception.BusinessException;
import com.example.jz.modle.PageParam;
import com.example.jz.modle.dto.AddReportDto;
import com.example.jz.modle.dto.CauseDto;
import com.example.jz.modle.entity.Cause;
import com.example.jz.modle.entity.Group;
import com.example.jz.modle.entity.Report;
import com.example.jz.modle.entity.User;
import com.example.jz.modle.dto.CauseLoadDto;
import com.example.jz.modle.entity.*;
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 lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.ArrayList;
@@ -44,10 +50,16 @@
    CauseService causeService;
    @Resource
    GroupDao groupDao;
    @Resource
    GroupUserDao groupUserDao;
    @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());
@@ -87,6 +99,7 @@
                    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<>();
@@ -106,11 +119,114 @@
    }
    @Override
    public Integer updateCause(CauseDto causeDto,Integer id) {
    public Integer updateCause(CauseDto causeDto, Integer id) {
        Cause cause = new Cause();
        BeanUtils.copyProperties(causeDto,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<Announcement> getGroupAnnouncement(Integer groupId) {
        return announcementDao.selectList(new QueryWrapper<Announcement>().eq("group_id", groupId));
    }
    @Override
    public void deleteCause(Integer id) {
        causeDao.deleteById(id);
    }
    @Override
    @SneakyThrows
    @Transactional(rollbackFor = BusinessException.class)
    public void loadFile(MultipartFile multipartFile) {
        ArrayList<CauseLoadDto> causeLoadDtos = new ArrayList<>();
        EasyExcel.read(multipartFile.getInputStream(),CauseLoadDto.class, new AnalysisEventListener<CauseLoadDto>() {
                    @Override
                    public void invoke(CauseLoadDto data, AnalysisContext context) {
                        causeLoadDtos.add(data);
                    }
                    @Override
                    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
                    }
                })
                .autoCloseStream(true)
                .doReadAll();
        causeLoadDtos.forEach(
                a -> {
                    Cause cause = new Cause();
                    BeanUtils.copyProperties(a, cause);
                    if (StringUtils.isBlank(a.getStatus())){
                        throw new BusinessException("状态不能为空");
                    }
                    if (a.getStatus().equals(CauseEnums.UNCHECKED.getMsg())) {
                        cause.setStatus(CauseEnums.UNCHECKED.value());
                    }
                    if (a.getStatus().equals(CauseEnums.NOTTOPUTONRECORD.getMsg())) {
                        cause.setStatus(CauseEnums.NOTTOPUTONRECORD.value());
                    }
                    if (a.getStatus().equals(CauseEnums.UNDERCONSIDERATION.getMsg())) {
                        cause.setStatus(CauseEnums.UNDERCONSIDERATION.value());
                    }
                    if (a.getStatus().equals(CauseEnums.CASECLOSED.getMsg())) {
                        cause.setStatus(CauseEnums.CASECLOSED.value());
                    }
                    if (a.getStatus().equals(CauseEnums.HASBEENDROPPED.getMsg())) {
                        cause.setStatus(CauseEnums.HASBEENDROPPED.value());
                    }
                    cause.setCtime(new Date());
                    if (StringUtils.isBlank(a.getUserName())){
                        throw new BusinessException("负责人不允许为空");
                    }
                    if (userDao.selectOne(new QueryWrapper<User>().eq("real_name", a.getUserName()))==null){
                        throw new BusinessException("负责人不存在");
                    }
                    cause.setUserId(userDao.selectOne(new QueryWrapper<User>().eq("real_name", a.getUserName())).getId());
                    causeDao.insert(cause);
                });
    }
    @Override
    @Transactional
    public Boolean addReportPeople(AddReportDto addReportDto) {
        User user = userDao.selectOne(new LambdaQueryWrapper<User>(User.class).eq(User::getUserIdcard, addReportDto.getIdcard()));
        if (user == null) {
            // 如果用户不存在 则添加用户
            user = new User().setUserIdcard(addReportDto.getIdcard()).setUserMobile(addReportDto.getMobile()).setRealName(addReportDto.getReporterName())
                    .setModifyTime(new Date()).setUserRegtime(new Date()).setPic(addReportDto.getPic());
            userDao.insert(user);
        }
        // 添加人员进群组
        groupUserDao.insert(new GroupUser().setGroupId(addReportDto.getGroupId()).setUserId(user.getId()).setCtime(new Date()).setBanSpeech(0));
        // 添加报案信息
        Report report = new Report();
        BeanUtils.copyProperties(addReportDto, report);
        report
                .setUserId(user.getId())
                .setCtime(new Date())
                .setStatus(0)
                .setReportMethod("现场录入")
                .setIsCommission("0").setReportTime(new Date())
                .setCauseId(groupDao.selectOne(new QueryWrapper<Group>().eq("id", addReportDto.getGroupId())).getCauseId());
        return reportDao.insert(report) > 0;
    }
}