“djh”
4 days ago 55f7e6cdbd00b0ab4a98fb8edde83e16a423baaa
multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java
@@ -1,17 +1,22 @@
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.Collections;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
@Service
@@ -20,22 +25,29 @@
   private SysClauseManagementMapper sysClauseManagementMapper;
    @Override
    public List<SysClauseManagement> getSysClauseManagements() {
    public List<SysClauseManagement> getSysClauseManagements(Long companyId) {
        LambdaQueryWrapper<SysClauseManagement> lambdaQueryWrapper = Wrappers.<SysClauseManagement>lambdaQuery()
                .eq(SysClauseManagement::getDelFlag, "0").orderByAsc(SysClauseManagement::getClauseNum);
        return baseMapper.selectList(lambdaQueryWrapper);
                .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) {
        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
            throw new RuntimeException("没有权限访问!");
        }
        checkPer();
        LambdaQueryWrapper<SysClauseManagement> lambdaQueryWrapper = Wrappers.<SysClauseManagement>lambdaQuery()
                .eq(SysClauseManagement::getDelFlag, "0").eq(SysClauseManagement::getClauseNum, sysClauseManagement.getClauseNum());
                .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 RuntimeException("条款编号已存在!");
                throw new ApiException("条款编号已存在!");
            }
            sysClauseManagement.setCreateBy(SecurityUtils.getUsername());
            sysClauseManagement.setCreateTime(LocalDateTime.now());
@@ -43,7 +55,7 @@
        }else {
            lambdaQueryWrapper.ne(SysClauseManagement::getId, sysClauseManagement.getId());
            if (baseMapper.selectCount(lambdaQueryWrapper) > 0){
                throw new RuntimeException("条款编号已存在!");
                throw new ApiException("条款编号已存在!");
            }
            sysClauseManagement.setUpdateBy(SecurityUtils.getUsername());
            sysClauseManagement.setUpdateTime(LocalDateTime.now());
@@ -53,15 +65,56 @@
    }
    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) {
        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
            throw new RuntimeException("没有权限访问!");
        }
        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);
        });
    }
}