gdg
2021-03-22 c79e850cf9f4262a7644dfd512f671139a221819
src/main/java/com/nanometer/smartlab/controller/UserMngController.java
@@ -10,6 +10,7 @@
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;
@@ -51,6 +52,8 @@
    private BaseMetaService baseMetaService;
    @Resource
    private BaseRoleService baseRoleService;
    @Resource
    private SysProjectService sysProjectService;
    private LazyDataModel<SysUser> dataModel;
    private SysUser sysUser;
@@ -68,6 +71,9 @@
    private List<BaseMeta> codeList;
    private List<BaseRole> roleList;
    private List<Waster> wasterSelectList;
    private String project;
    private String company;
    private BaseRole role;
    public List<BaseRole> getRoleList() {
        return roleList;
@@ -97,6 +103,14 @@
    public void onNewBtnClick() {
        this.sysUser = new SysUser();
        if (this.selectedList.size() > 1) {
            FacesUtils.warn("不能多选");
            return;
        }
        if (this.selectedList.size() == 1) {
            this.sysUser = this.sysUserService.getSysUser(this.selectedList.get(0).getId());
            this.sysUser.setId(null);
        }
        this.action = Constants.ACTION_ADD;
    }
@@ -235,10 +249,20 @@
                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);
@@ -397,8 +421,14 @@
                    return;
                }
                // 检查ARP号
                if (this.sysUserService.isSysUserExist(this.sysUser.getArp(), null, null, this.sysUser.getId())) {
                // 检查ARP号 //除自己外的arp
//                if (this.sysUserService.isSysUserExist(this.sysUser.getArp(), null, null, this.sysUser.getId())) {
//                    FacesUtils.warn("ARP已存在。");
//                    return;
//                }
                List<SysUser> list = sysUserService.getUserByArp(this.sysUser.getArp());
                assert list.size() < 2;
                if (list.size() > 0 && !list.get(0).getId().equals(this.sysUser.getId())) {
                    FacesUtils.warn("ARP已存在。");
                    return;
                }
@@ -438,6 +468,11 @@
                if(sysUser.getPassword()==null || sysUser.getPassword().equals("")){
                    sysUser.setPassword(this.editPasswor);
                }else {
                    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.updateSysUser(sysUser);
@@ -468,6 +503,16 @@
        }
    }
    public void initPage() {
        sysUser = sysUserService.getSysUser(getUser().getId());
        role = baseRoleService.getRoleByUserId(sysUser.getId());
    }
    public boolean isAccess(String info) {
        String permission = role.getBtnPermission();
        return permission.contains(info);
    }
    public LazyDataModel<SysUser> getDataModel() {
        if (this.dataModel == null) {
            this.dataModel = new LazyDataModel<SysUser>() {
@@ -475,11 +520,29 @@
                public List<SysUser> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
                    List<SysUser> list = null;
                    try {
                        int count = sysUserService.getSysUserTotalCount(arp, name,departmentName);
                        this.setRowCount(count);
                        if (count > 0) {
                            list = sysUserService.getSysUserList(arp, name,departmentName, first, pageSize);
                        //做可见人员过滤
                        String userPermission = role.getUserPermission();
                        if (userPermission.contains("自己")) {
                            list = Collections.singletonList(sysUserService.getSysUser(UserMngController.this.sysUser.getId()));
                            this.setRowCount(1);
                        }else if (userPermission.contains("课题组")){
                            project = sysUser.getProject();
                            int count = sysUserService.getUserCountInProject(arp, name,departmentName,project,company);
                            this.setRowCount(count);
                            if (count > 0) {
                                list = sysUserService.getUserInProject(arp, name,departmentName,project,company, first, pageSize);
                            }
                        }else{
                            int count = sysUserService.getSysUserTotalCount(arp, name,departmentName,project,company);
                            this.setRowCount(count);
                            if (count > 0) {
                                list = sysUserService.getSysUserList(arp, name,departmentName,project,company, first, pageSize);
                            }
                        }
                    } catch (Exception e) {
                        logger.error(e);
                    }
@@ -604,4 +667,20 @@
    public void setDepartmentName(String departmentName) {
        this.departmentName = departmentName;
    }
    public String getProject() {
        return project;
    }
    public void setProject(String project) {
        this.project = project;
    }
    public String getCompany() {
        return company;
    }
    public void setCompany(String company) {
        this.company = company;
    }
}