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.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.common.exception.ApiException; import com.gkhy.exam.common.utils.NaturalOrderComparator; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.SysClauseManagement; import com.gkhy.exam.system.mapper.SysClauseManagementMapper; import com.gkhy.exam.system.service.SysClauseManagementService; 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.ArrayList; import java.util.Comparator; import java.util.List; @Service public class SysClauseManagementServiceImpl extends ServiceImpl implements SysClauseManagementService { @Autowired private SysClauseManagementMapper sysClauseManagementMapper; @Override public List getSysClauseManagements(Long companyId) { LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery() .eq(SysClauseManagement::getDelFlag, "0").eq(SysClauseManagement::getCompanyId, companyId) .orderByAsc(SysClauseManagement::getClauseNum); List sysClauseManagements = baseMapper.selectList(lambdaQueryWrapper); if (ObjectUtil.isNotEmpty(sysClauseManagements)){ sysClauseManagements.sort(Comparator.comparing(SysClauseManagement::getClauseNum, new NaturalOrderComparator())); } return sysClauseManagements; } @Override public int saveSysClauseManagement(SysClauseManagement sysClauseManagement) { checkPer(); LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery() .eq(SysClauseManagement::getDelFlag, "0") .eq(SysClauseManagement::getCompanyId, sysClauseManagement.getCompanyId()) .eq(SysClauseManagement::getClauseNum, sysClauseManagement.getClauseNum()); if (sysClauseManagement.getId() == null){ if (baseMapper.selectCount(lambdaQueryWrapper) > 0){ throw new ApiException("条款编号已存在!"); } sysClauseManagement.setCreateBy(SecurityUtils.getUsername()); sysClauseManagement.setCreateTime(LocalDateTime.now()); return sysClauseManagementMapper.insert(sysClauseManagement); }else { lambdaQueryWrapper.ne(SysClauseManagement::getId, sysClauseManagement.getId()); if (baseMapper.selectCount(lambdaQueryWrapper) > 0){ throw new ApiException("条款编号已存在!"); } sysClauseManagement.setUpdateBy(SecurityUtils.getUsername()); sysClauseManagement.setUpdateTime(LocalDateTime.now()); return sysClauseManagementMapper.updateById(sysClauseManagement); } } private void checkPer(){ boolean admin = SecurityUtils.adminUser(); if (!admin) { Integer userType = SecurityUtils.getLoginUser().getUser().getUserType(); if (userType != 6){ throw new ApiException("无权操作!"); } } } @Override public int delSysClauseManagement(Long id) { checkPer(); //todo 校验已使用的? SysClauseManagement sysClauseManagement = new SysClauseManagement(); sysClauseManagement.setDelFlag("1"); sysClauseManagementMapper.update(sysClauseManagement, Wrappers.lambdaQuery().eq(SysClauseManagement::getId, id)); return 1; } @Override @Transactional(rollbackFor = Exception.class) public void copySysClauseManagements(Long sourceCompanyId, Long targetCompanyId) { boolean admin = SecurityUtils.adminUser(); if (!admin) { throw new ApiException("无权操作!"); } List targetClauseManagements = baseMapper.selectList(Wrappers.lambdaQuery() .eq(SysClauseManagement::getDelFlag, "0") .eq(SysClauseManagement::getCompanyId, targetCompanyId)); if (ObjectUtil.isNotEmpty(targetClauseManagements)){ throw new ApiException("目标公司已存在条款!"); } List sysClauseManagements = baseMapper.selectList(Wrappers.lambdaQuery() .eq(SysClauseManagement::getDelFlag, "0") .eq(SysClauseManagement::getCompanyId, sourceCompanyId)); // List add = new ArrayList<>(); sysClauseManagements.forEach(sysClauseManagement -> { SysClauseManagement newClauseManagement = new SysClauseManagement(); newClauseManagement.setName(sysClauseManagement.getName()); newClauseManagement.setClauseNum(sysClauseManagement.getClauseNum()); newClauseManagement.setPoints(sysClauseManagement.getPoints()); newClauseManagement.setCompanyId(targetCompanyId); newClauseManagement.setCreateBy(SecurityUtils.getUsername()); newClauseManagement.setCreateTime(LocalDateTime.now()); // add.add(newClauseManagement); sysClauseManagementMapper.insert(newClauseManagement); }); } }