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<SysClauseManagementMapper, SysClauseManagement> implements SysClauseManagementService {
|
@Autowired
|
private SysClauseManagementMapper sysClauseManagementMapper;
|
|
@Override
|
public List<SysClauseManagement> getSysClauseManagements(Long companyId) {
|
LambdaQueryWrapper<SysClauseManagement> lambdaQueryWrapper = Wrappers.<SysClauseManagement>lambdaQuery()
|
.eq(SysClauseManagement::getDelFlag, "0").eq(SysClauseManagement::getCompanyId, companyId)
|
.orderByAsc(SysClauseManagement::getClauseNum);
|
|
List<SysClauseManagement> 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<SysClauseManagement> lambdaQueryWrapper = Wrappers.<SysClauseManagement>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.<SysClauseManagement>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<SysClauseManagement> targetClauseManagements = baseMapper.selectList(Wrappers.<SysClauseManagement>lambdaQuery()
|
.eq(SysClauseManagement::getDelFlag, "0")
|
.eq(SysClauseManagement::getCompanyId, targetCompanyId));
|
if (ObjectUtil.isNotEmpty(targetClauseManagements)){
|
throw new ApiException("目标公司已存在条款!");
|
}
|
|
List<SysClauseManagement> sysClauseManagements = baseMapper.selectList(Wrappers.<SysClauseManagement>lambdaQuery()
|
.eq(SysClauseManagement::getDelFlag, "0")
|
.eq(SysClauseManagement::getCompanyId, sourceCompanyId));
|
|
// List<SysClauseManagement> 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);
|
});
|
|
}
|
}
|