DdexamServiceImpl.java 5.91 KB
package com.bsth.service.ddexam.impl;

import com.bsth.entity.Line;
import com.bsth.entity.LineInformation;
import com.bsth.entity.LineInformationSt;
import com.bsth.entity.LineSt;
import com.bsth.entity.sys.BsthCSysUserRoles;
import com.bsth.entity.sys.RealControAuthority;
import com.bsth.entity.sys.SysUser;
import com.bsth.repository.LineInformationRepository;
import com.bsth.repository.LineInformationStRepository;
import com.bsth.repository.LineRepository;
import com.bsth.repository.LineStRepository;
import com.bsth.repository.sys.BsthCSysUserRolesRepository;
import com.bsth.repository.sys.RealControAuthorityRepository;
import com.bsth.repository.sys.SysUserRepository;
import com.bsth.service.ddexam.DdexamService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

@Service
public class DdexamServiceImpl implements DdexamService {

    Logger log = LoggerFactory.getLogger(this.getClass());
    @Autowired
    SysUserRepository sysUserRepository;
    @Autowired
    RealControAuthorityRepository realControAuthorityRepository;
    @Autowired
    BsthCSysUserRolesRepository bsthCSysUserRolesRepository;
    @Autowired
    LineRepository lineRepository;
    @Autowired
    LineStRepository lineStRepository;
    @Autowired
    LineInformationStRepository LineInformationStRepository;
    @Autowired
    LineInformationRepository lineInformationRepository;
    
    //考生人初始化
    @Override
    @Transactional //事务
    public int initializationAll(Integer rs) {
        
        try {
            List<SysUser> userList = sysUserRepository.findBySusUser(); //已有的用户   不考虑用户角色表  正常情况下创建必分配
            if (userList.size() >= rs) {  //满足考试人数 检查是否分配线路
                for (SysUser user : userList) {
                    if (realControAuthorityRepository.findByUserId(user.getId()) == null) {  //检查未分配线路

                    }
                }
            } else {
                if (userList.size() == 0) { //考试人数 全部重新创建

                } else { //已有的人检查分配线路   不够的创建
                    for (SysUser user : userList) {
                        if (realControAuthorityRepository.findByUserId(8) == null) {  //检查未分配线路
                            
                            //未分配的创建线路并分配
                            System.out.println("1");
                        } else { //已分配线路的分配班次
                            System.out.println("分配班次...");
                        }
                    }
                    int st = rs - userList.size(); //未创建考试人数
                    if(usercreateType(st)){
                        log.info("考试初始化创建成功");
                    }else{
                        log.error("-------------1.模板线路大于6条");  //如果情况多了 可以switch
                        return 0;
                    }

                }
            }
        }catch (Exception e){
            log.error("-----考试初始化失败------",e);
            return 1;
        }
        return 0;
        
        
        
    }
    //创建考试人数 并分配线路信息
    public  Boolean  usercreateType(int st){
        int usernum = sysUserRepository.findAll_distinct().size();
        SysUser user = new SysUser();//总人数
        for (int i = 0; i < st; i++) { //创建考试人数
            int username = usernum++;
            user = new SysUser();
            user.setCreateDate(new Date());
            user.setEnabled(true);
            user.setName("ks00"+username);
            user.setPassword(new BCryptPasswordEncoder(4).encode("Aa123456"));
            user.setUserName("ks00"+username);
           // sysUserRepository.save(user);添加  -------**--
            user.setId(2);  //------暂用
            BsthCSysUserRoles userRoles = new BsthCSysUserRoles();
            userRoles.setUsers(user.getId());
            userRoles.setRoles(73); //统一用73考生
           // bsthCSysUserRolesRepository.save(userRoles);添加  -------**--

            //List<LineSt> lineStList = lineStRepository.findStAll();//所有模板线路
            Integer linebumber = lineRepository.findAll().size(); //线路数量 线路code
            String [] mtline = {"A线","B线","C线","D线","E线","F线"}; //对应模板6条线 换成线路name
            List<LineInformationSt> litst = (List<LineInformationSt>) LineInformationStRepository.findAll(); //所有模板线路标准和线路
            if(litst.size() != 6){
                return false;
            }
            for(int j = 0 ; j <= litst.size() ; j++){
                LineSt linest = litst.get(j).getLine();
                LineInformationSt Limst = litst.get(j);
                Line line = new Line();
                BeanUtils.copyProperties(linest,line); //copy
                Integer linecodeId = linebumber++ ;
                line.setId(linecodeId);
                line.setLineCode(linecodeId.toString());
                line.setName(mtline[j]+"+"+user.getName());
                line.setCoLineCode(linest.getLineCode());
                lineRepository.save(line);  //线路添加
                LineInformation lifat = new LineInformation();  //线路标准
                BeanUtils.copyProperties(Limst,lifat);
                lifat.setLine(line);
                lineInformationRepository.save(lifat); //线路标准信息条件
                inforealType(linest.getLineCode());
            }
        }
        return true;
        
    }
 
    
    public void inforealType(String lineCode){
        
    }
    
}