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.*;
|
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.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.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 案件表(Cause)表服务实现类
|
*
|
* @author makejava
|
* @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
|
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());
|
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 PageParam<CauseReportVo> getReporterList(Integer causeId) {
|
PageParam<Report> PageParam = new PageParam<>();
|
PageParam<Report> reportPageParam = reportDao.selectPage(PageParam, new QueryWrapper<Report>().eq("cause_id", causeId));
|
reportPageParam.getRecords().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());
|
PageParam<CauseReportVo> causeReportVoPageParam = new PageParam<>();
|
BeanUtils.copyProperties(reportPageParam, causeReportVoPageParam);
|
return causeReportVoPageParam;
|
}
|
|
@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);
|
groupDao.delete(new QueryWrapper<Group>().eq("cause_id", 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) {
|
if (StringUtils.isNotBlank(data.getName()) && StringUtils.isNotBlank(data.getUserName())) {
|
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("负责人不存在");
|
}
|
Integer id = userDao.selectOne(new QueryWrapper<User>().eq("real_name", a.getUserName())).getId();
|
cause.setUserId(id);
|
causeService.save(cause);
|
Group group = new Group();
|
group.setCtime(new Date());
|
group.setUserId(id);
|
group.setGroupName(a.getName());
|
group.setCauseId(cause.getId());
|
groupDao.insert(group);
|
});
|
}
|
|
@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;
|
}
|
|
@Override
|
public List<Map<String, String>> getCauseIdAndName() {
|
ArrayList<Map<String, String>> maps = new ArrayList<>();
|
causeDao.selectList(null).stream().forEach(a -> {
|
Map<String, String> map = new HashMap<>();
|
map.put("id", a.getId().toString());
|
map.put("name", a.getName());
|
maps.add(map);
|
});
|
return maps;
|
}
|
}
|