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.Set; import java.util.stream.Collectors; /** *

* 内审检查 服务实现类 *

* * @author hh * @since 2025-07-10 15:11:50 */ @Service public class InternalAuditCheckServiceImpl extends ServiceImpl 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 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.success(); } return CommonResult.failed(); } private void batchInsert(List internalAuditCheckPeople,Long auditId) { internalAuditCheckPeople.forEach(e -> { e.setAuditId(auditId); e.setCreateTime(LocalDateTime.now()); e.setCreateBy(SecurityUtils.getUsername()); }); internalAuditCheckPersonMapper.batchInsert(internalAuditCheckPeople); } private void batchUpdate(List 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 internalAuditCheckPeople = internalAuditCheck.getInternalAuditCheckPeople(); if (ObjectUtil.isNotEmpty(internalAuditCheckPeople)){ Set collect = internalAuditCheckPeople.stream().map(InternalAuditCheckPerson::getAuditUserId) .collect(Collectors.toSet()); if (collect.size() != internalAuditCheckPeople.size()){ throw new RuntimeException("受审人员重复"); } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(InternalAuditCheckPerson::getAuditId, internalAuditCheck.getId()); queryWrapper.eq(InternalAuditCheckPerson::getDelFlag, 0); List internalAuditCheckPeople1 = internalAuditCheckPersonMapper.selectList(queryWrapper); List idsAll = internalAuditCheckPeople1.stream() .map(InternalAuditCheckPerson::getId) .collect(Collectors.toList()); List idsUpdate = internalAuditCheckPeople.stream() .map(InternalAuditCheckPerson::getId) .filter(id -> id != null) // 过滤掉 null 值 .collect(Collectors.toList()); if (!idsUpdate.isEmpty() && !idsAll.isEmpty()){ //不存在的删除 List result = idsAll.stream() .filter(id -> !idsUpdate.contains(id)) .collect(Collectors.toList()); if (!result.isEmpty()){ batchDel(internalAuditCheck.getId(),result); } } List withId = internalAuditCheckPeople.stream() .filter(e -> e.getId() != null) .collect(Collectors.toList()); //修改的 if (!withId.isEmpty()){ batchUpdate(withId); } List 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 ids){ LambdaQueryWrapper 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 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 queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(InternalAuditCheckPerson::getAuditId, id); queryWrapper.eq(InternalAuditCheckPerson::getDelFlag, 0); List internalAuditCheckPeople = internalAuditCheckPersonMapper.selectList(queryWrapper); internalAuditCheckVo.setInternalAuditCheckPeople(internalAuditCheckPeople); return CommonResult.success(internalAuditCheckVo); } }