package com.gkhy.exam.system.service.impl;
|
|
import cn.hutool.core.util.ObjectUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.gkhy.exam.common.api.CommonPage;
|
import com.gkhy.exam.common.api.CommonResult;
|
import com.gkhy.exam.common.domain.entity.SysDept;
|
import com.gkhy.exam.common.utils.PageUtils;
|
import com.gkhy.exam.common.utils.SecurityUtils;
|
import com.gkhy.exam.system.domain.InternalAuditCheck;
|
import com.gkhy.exam.system.domain.InternalAuditCheckPerson;
|
import com.gkhy.exam.system.domain.vo.InternalAuditCheckVo;
|
import com.gkhy.exam.system.mapper.InternalAuditCheckMapper;
|
import com.gkhy.exam.system.mapper.InternalAuditCheckPersonMapper;
|
import com.gkhy.exam.system.mapper.SysDeptMapper;
|
import com.gkhy.exam.system.mapper.SysUserMapper;
|
import com.gkhy.exam.system.service.InternalAuditCheckService;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.time.LocalDateTime;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 内审检查 服务实现类
|
* </p>
|
*
|
* @author hh
|
* @since 2025-07-10 15:11:50
|
*/
|
@Service
|
public class InternalAuditCheckServiceImpl extends ServiceImpl<InternalAuditCheckMapper, InternalAuditCheck> implements InternalAuditCheckService {
|
|
@Autowired
|
private InternalAuditCheckMapper internalAuditCheckMapper;
|
@Autowired
|
private InternalAuditCheckPersonMapper internalAuditCheckPersonMapper;
|
@Autowired
|
private SysUserMapper sysUserMapper;
|
@Autowired
|
private SysDeptMapper sysDeptMapper;
|
@Override
|
public CommonPage selectInternalAuditCheckList(Integer companyId) {
|
PageUtils.startPage();
|
List<InternalAuditCheck> internalAuditChecks = internalAuditCheckMapper.selectInternalAuditCheckList(companyId);
|
return CommonPage.restPage(internalAuditChecks);
|
}
|
|
@Override
|
@Transactional
|
public CommonResult insertInternalAuditCheck(InternalAuditCheckVo internalAuditCheck) {
|
InternalAuditCheck internalAuditCheck1 = new InternalAuditCheck();
|
BeanUtils.copyProperties(internalAuditCheck,internalAuditCheck1);
|
internalAuditCheck1.setCreateTime(LocalDateTime.now());
|
internalAuditCheck1.setCreateBy(SecurityUtils.getUsername());
|
|
int insert = internalAuditCheckMapper.insert(internalAuditCheck1);
|
if (insert > 0) {
|
if (ObjectUtil.isNotEmpty(internalAuditCheck.getInternalAuditCheckPeople())){
|
batchInsert(internalAuditCheck.getInternalAuditCheckPeople(),internalAuditCheck1.getId());
|
}
|
|
}
|
return CommonResult.failed();
|
}
|
|
private void batchInsert(List<InternalAuditCheckPerson> internalAuditCheckPeople,Long auditId) {
|
internalAuditCheckPeople.forEach(e -> {
|
e.setAuditId(auditId);
|
e.setCreateTime(LocalDateTime.now());
|
e.setCreateBy(SecurityUtils.getUsername());
|
});
|
internalAuditCheckPersonMapper.batchInsert(internalAuditCheckPeople);
|
}
|
|
private void batchUpdate(List<InternalAuditCheckPerson> internalAuditCheckPeople) {
|
internalAuditCheckPeople.forEach(e -> {
|
e.setUpdateTime(LocalDateTime.now());
|
e.setUpdateBy(SecurityUtils.getUsername());
|
});
|
internalAuditCheckPersonMapper.batchUpdate(internalAuditCheckPeople);
|
}
|
|
@Override
|
public CommonResult updateInternalAuditCheck(InternalAuditCheckVo internalAuditCheck) {
|
InternalAuditCheck internalAuditCheck1 = new InternalAuditCheck();
|
BeanUtils.copyProperties(internalAuditCheck,internalAuditCheck1);
|
internalAuditCheck1.setUpdateTime(LocalDateTime.now());
|
internalAuditCheck1.setUpdateBy(SecurityUtils.getUsername());
|
|
int update = internalAuditCheckMapper.updateById(internalAuditCheck1);
|
if (update > 0) {
|
List<InternalAuditCheckPerson> internalAuditCheckPeople = internalAuditCheck.getInternalAuditCheckPeople();
|
if (ObjectUtil.isNotEmpty(internalAuditCheckPeople)){
|
List<Long> collect = internalAuditCheckPeople.stream().map(InternalAuditCheckPerson::getAuditUserId)
|
.collect(Collectors.toList());
|
if (collect.size() != internalAuditCheckPeople.size()){
|
throw new RuntimeException("选择的受审人员重复");
|
}
|
LambdaQueryWrapper<InternalAuditCheckPerson> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(InternalAuditCheckPerson::getAuditId, internalAuditCheck.getId());
|
queryWrapper.eq(InternalAuditCheckPerson::getDelFlag, 0);
|
List<InternalAuditCheckPerson> internalAuditCheckPeople1 = internalAuditCheckPersonMapper.selectList(queryWrapper);
|
|
List<Long> idsAll = internalAuditCheckPeople1.stream()
|
.map(InternalAuditCheckPerson::getId)
|
.collect(Collectors.toList());
|
|
|
List<Long> idsUpdate = internalAuditCheckPeople.stream()
|
.map(InternalAuditCheckPerson::getId)
|
.filter(id -> id != null) // 过滤掉 null 值
|
.collect(Collectors.toList());
|
if (!idsUpdate.isEmpty() && !idsAll.isEmpty()){
|
//不存在的删除
|
List<Long> result = idsAll.stream()
|
.filter(id -> !idsUpdate.contains(id))
|
.collect(Collectors.toList());
|
if (!result.isEmpty()){
|
batchDel(internalAuditCheck.getId(),result);
|
}
|
}
|
|
|
|
List<InternalAuditCheckPerson> withId = internalAuditCheckPeople.stream()
|
.filter(e -> e.getId() != null)
|
.collect(Collectors.toList());
|
//修改的
|
if (!withId.isEmpty()){
|
batchUpdate(withId);
|
}
|
|
List<InternalAuditCheckPerson> withoutId = internalAuditCheckPeople.stream()
|
.filter(e -> e.getId() == null)
|
.collect(Collectors.toList());
|
|
//新增的
|
if (!withoutId.isEmpty()){
|
batchInsert(withoutId,internalAuditCheck.getId());
|
}
|
}else {
|
batchDel(internalAuditCheck.getId(),null);
|
}
|
|
|
return CommonResult.success(update);
|
}
|
return CommonResult.failed();
|
}
|
|
private void batchDel(Long id,List<Long> ids){
|
LambdaQueryWrapper<InternalAuditCheckPerson> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(InternalAuditCheckPerson::getAuditId, id);
|
if (ObjectUtil.isNotEmpty(ids)){
|
queryWrapper.in(InternalAuditCheckPerson::getId, ids);
|
}
|
InternalAuditCheckPerson internalAuditCheckPerson = new InternalAuditCheckPerson();
|
internalAuditCheckPerson.setDelFlag(1);
|
internalAuditCheckPerson.setUpdateTime(LocalDateTime.now());
|
internalAuditCheckPerson.setUpdateBy(SecurityUtils.getUsername());
|
internalAuditCheckPersonMapper.update(internalAuditCheckPerson,queryWrapper);
|
}
|
|
@Override
|
@Transactional
|
public CommonResult deletedInternalAuditCheck(Integer id) {
|
int delete = internalAuditCheckMapper.deleteById(id);
|
LambdaQueryWrapper<InternalAuditCheckPerson> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(InternalAuditCheckPerson::getAuditId, id);
|
InternalAuditCheckPerson internalAuditCheckPerson = new InternalAuditCheckPerson();
|
internalAuditCheckPerson.setDelFlag(1);
|
internalAuditCheckPerson.setUpdateTime(LocalDateTime.now());
|
internalAuditCheckPerson.setUpdateBy(SecurityUtils.getUsername());
|
internalAuditCheckPersonMapper.update(internalAuditCheckPerson,queryWrapper);
|
return CommonResult.success();
|
}
|
|
@Override
|
public CommonResult internalAuditCheckInfo(Integer id) {
|
InternalAuditCheck internalAuditCheck = internalAuditCheckMapper.selectById(id);
|
|
InternalAuditCheckVo internalAuditCheckVo = new InternalAuditCheckVo();
|
BeanUtils.copyProperties(internalAuditCheck,internalAuditCheckVo);
|
internalAuditCheckVo.setDeptName(sysDeptMapper.selectDeptById(internalAuditCheck.getDeptId()).getDeptName());
|
internalAuditCheckVo.setAuditName(sysUserMapper.selectById(internalAuditCheck.getAuditId()).getName());
|
LambdaQueryWrapper<InternalAuditCheckPerson> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(InternalAuditCheckPerson::getAuditId, id);
|
queryWrapper.eq(InternalAuditCheckPerson::getDelFlag, 0);
|
List<InternalAuditCheckPerson> internalAuditCheckPeople = internalAuditCheckPersonMapper.selectList(queryWrapper);
|
internalAuditCheckVo.setInternalAuditCheckPeople(internalAuditCheckPeople);
|
|
return CommonResult.success(internalAuditCheck);
|
}
|
}
|