李宇
2021-01-21 9c9503de4fb1e1b0127f83c8b2b0f645c6ab9e9c
src/main/java/com/nanometer/smartlab/controller/UserMngController.java
@@ -7,8 +7,10 @@
import com.nanometer.smartlab.entity.enumtype.ApproverFlag;
import com.nanometer.smartlab.entity.enumtype.SeeFlag;
import com.nanometer.smartlab.entity.enumtype.ValidFlag;
import com.nanometer.smartlab.entity.enumtype.Waster;
import com.nanometer.smartlab.service.BaseMetaService;
import com.nanometer.smartlab.service.BaseRoleService;
import com.nanometer.smartlab.service.SysProjectService;
import com.nanometer.smartlab.service.SysUserService;
import com.nanometer.smartlab.util.Constants;
import com.nanometer.smartlab.util.FacesUtils;
@@ -50,6 +52,8 @@
    private BaseMetaService baseMetaService;
    @Resource
    private BaseRoleService baseRoleService;
    @Resource
    private SysProjectService sysProjectService;
    private LazyDataModel<SysUser> dataModel;
    private SysUser sysUser;
@@ -66,6 +70,7 @@
    private String editPasswor;
    private List<BaseMeta> codeList;
    private List<BaseRole> roleList;
    private List<Waster> wasterSelectList;
    public List<BaseRole> getRoleList() {
        return roleList;
@@ -99,8 +104,7 @@
    }
    public void updatePassword() {
           this.username = getUser().getName();
           this.sysUser = getUser();
        this.username = getUser().getName();
    }
@@ -127,6 +131,8 @@
            int totalRows = sheet.getPhysicalNumberOfRows();
            List<SysUser> userList=new ArrayList<>();
            System.out.println("totalRows=========="+totalRows);
            String errorMsg = null;
            for (int i = 1; i < totalRows; i++) {
                row=sheet.getRow(i);
                totalCells= row.getLastCellNum();
@@ -187,10 +193,32 @@
                sysUser.setArp((int)Double.parseDouble(valuesList.get(2))+"");//arp号
                sysUser.setName(valuesList.get(3));//姓名
                sysUser.setAccount(valuesList.get(4));//账号
                sysUser.setPassword(MD5Utils.encode((int)Double.parseDouble(valuesList.get(5))+""));//密码
                String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
                if (!valuesList.get(5).matches(PW_PATTERN)){
                    errorMsg += "第"+i+"行,密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上";
                }
                sysUser.setPassword(MD5Utils.encode(valuesList.get(5))+"");//密码
                //valuesList.get(8) id卡号检查
                if (valuesList.get(8) != null && valuesList.get(8).length()>0){
                    //大写转换
                    String idCardUpper = valuesList.get(8).trim().toUpperCase();
                    //8位和20位下8位才做补齐20位,否则提示输入id卡号8位或者20位
                    if (idCardUpper.length() == 8 ||idCardUpper.length() == 20) {
                        if (idCardUpper.length() == 8){
                            //8位补齐20位,否则不做操作
                            String idCard = "E0E01E000A" + idCardUpper + "01";
                            sysUser.setIdCard(idCard);//id卡号
                        }
                    }else{
                        FacesUtils.warn("第"+i+"行,id卡号需要8位或者20位");
                        return;
                    }
                }
                sysUser.setPhone(valuesList.get(6));//电话
                sysUser.setEmail(valuesList.get(7));//邮箱
                sysUser.setIdCard(valuesList.get(8));//id卡号
                sysUser.setPoint((int)Double.parseDouble(valuesList.get(9)));//分数
                sysUser.setRoleId(valuesList.get(10));//角色
                if(valuesList.get(11).equals("是")){
@@ -210,15 +238,29 @@
                if(valuesList.get(12).equals(SeeFlag.LEADING.getText())){
                    sysUser.setSeeFlag(SeeFlag.LEADING);
                }
                if(valuesList.size()==14){
                    sysUser.setMemo(valuesList.get(13));
                }else {
                    sysUser.setMemo("");
                if (valuesList.size() > 13 && !valuesList.get(13).replace(" ","").isEmpty()){
                    String[] projects = valuesList.get(13).split(",");
                    for (String project : projects) {
                        //不存再就直接推出
                        if (!sysProjectService.isExistProject(project)) {
                            throw new Exception("课题组不存在,(" + i  + "行)");
                        }
                    }
                    //都存在就设置
                    sysUser.setProject(valuesList.get(13).replace(" ",""));
                }else{
                    sysUser.setProject(null);
                }
                sysUser.setValidFlag(ValidFlag.VALID);
                userList.add(sysUser);
            }
            if (errorMsg != null){
                FacesUtils.warn(errorMsg);
            }
            this.sysUserService.insertSysUserList(userList);
            System.out.println("=========导入结束=====");
            FacesUtils.info("导入成功。");
@@ -254,25 +296,34 @@
    public String updatePasswordAction() throws NoSuchAlgorithmException, CharacterCodingException
    {
        this.sysUser = getUser();
      if(!this.sysUser.getPassword().equals(MD5Utils.encode(this.oriPassword)))
      {
         FacesUtils.warn("原密码错误,请重新输入!");
            return null;
      }
          if(!this.newPassword.equals(this.newPasswordSecond))
          {
             FacesUtils.warn("新密码不一致,请重新输入。");
            return null;
          }
      if(!this.newPassword.equals(this.newPasswordSecond))
      {
          FacesUtils.warn("新密码不一致,请重新输入。");
          return null;
      }
          this.sysUser.setName(username);
          this.sysUser.setPassword(MD5Utils.encode(this.newPassword));
      String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
        if (!this.newPassword.matches(PW_PATTERN)){
            FacesUtils.warn("密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上");
            return null;
        }
//        this.sysUser.setName(username);
        this.sysUser.setPassword(MD5Utils.encode(this.newPassword));
        this.sysUserService.updateSysUser(sysUser);
        this.newPassword = null;
        this.oriPassword = null;
        this.newPasswordSecond = null;
        FacesUtils.info("修改成功,请重新登录!");
        RequestContext.getCurrentInstance().execute("PF('dialogPassword').hide()");
        RequestContext.getCurrentInstance().execute("PF('changePassword').hide()");
        this.getSubject().logout();
        return Constants.PAGE_LOGIN + Constants.REDIRECT;
    }
@@ -315,13 +366,38 @@
                }
                // 检查idCard
                if (this.sysUser.getIdCard() != null && this.sysUser.getIdCard().length()>0){
                    String idCardUpper = sysUser.getIdCard().trim().toUpperCase();
                    //8位和20位下8位才做补齐20位,否则提示输入id卡号8位或者20位
                    if (idCardUpper.length() == 8 ||idCardUpper.length() == 20) {
                        if (idCardUpper.length() == 8){
                            //8位补齐20位,否则不做操作
                            this.sysUser.setIdCard("E0E01E000A" + idCardUpper + "01");
                        }else{
                            //20位
                            this.sysUser.setIdCard(idCardUpper);
                        }
                    }else{
                        FacesUtils.warn("id卡号8位或者20位");
                        return;
                    }
                }
                if (!StringUtils.isEmpty(this.sysUser.getIdCard()) && this.sysUserService.isSysUserExist(null, null, this.sysUser.getIdCard(), null)) {
                    FacesUtils.warn("ID卡号已存在。");
                    return;
                }
                if(!org.apache.commons.lang.StringUtils.isNotBlank(sysUser.getProjectId())){
                    sysUser.setProjectId(null);
                if(!org.apache.commons.lang.StringUtils.isNotBlank(sysUser.getProject())){
                    sysUser.setProject(null);
                }
                String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
                if (!sysUser.getPassword().matches(PW_PATTERN)){
                    FacesUtils.warn("密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上");
                    return;
                }
                sysUser.setPassword(MD5Utils.encode(sysUser.getPassword()));
                this.sysUserService.insertSysUser(sysUser);
@@ -347,6 +423,23 @@
                }
                // 检查idCard
                if (this.sysUser.getIdCard() != null && this.sysUser.getIdCard().length()>0){
                    String idCardUpper = sysUser.getIdCard().trim().toUpperCase();
                    //8位和20位下8位才做补齐20位,否则提示输入id卡号8位或者20位
                    if (idCardUpper.length() == 8 ||idCardUpper.length() == 20) {
                        if (idCardUpper.length() == 8){
                            //8位补齐20位,否则不做操作
                            this.sysUser.setIdCard("E0E01E000A" + idCardUpper + "01");
                        }else{
                            //20位
                            this.sysUser.setIdCard(idCardUpper);
                        }
                    }else{
                        FacesUtils.warn("id卡号8位或者20位");
                        return;
                    }
                }
                if(this.sysUser.getIdCard()==null || this.sysUser.getIdCard()==""){
                }else {
@@ -461,6 +554,14 @@
       return seeFlagSelectList;
    }
    public List<Waster> getWasterSelectList() {
        if (this.wasterSelectList == null) {
            this.wasterSelectList = Arrays.asList(Waster.values());
        }
        return wasterSelectList;
    }
    public String getArp() {
        return arp;
    }