部门关联上传接口,接口联调修改,密码策略增加修改删除查看接口上传(待联调)
已修改15个文件
已添加2个文件
1182 ■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java 277 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmPwdStrategyQueryController.java 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/CombinationEnum.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyDO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyForPlatform1.java 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/SmPasswordStrategyDTO.java 282 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmPasswordStrategyVO.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java
@@ -178,6 +178,6 @@
     * @return
     * @throws VciBaseException
     */
    BaseResult importDept(File file) throws VciBaseException;
    BaseResult importDept(File file) throws Exception;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java
@@ -1,9 +1,9 @@
package com.vci.frameworkcore.compatibility;
import com.vci.corba.common.PLException;
import com.vci.frameworkcore.model.dto.SmPasswordStrategyDTO;
import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.starter.web.pagemodel.PageHelper;
@@ -49,6 +49,27 @@
    boolean saveUserPasswordStrateg(String[] userIds, String passwordStrategId) throws PLException;
    /**
     * æ–°å¢žå¯†ç ç­–ç•¥
     * @param spsDto
     * @return
     */
    boolean addPasswordStrateg(SmPasswordStrategyDTO spsDto) throws PLException;
    /**
     * ä¿®æ”¹å¯†ç ç­–ç•¥
     * @param spsDto
     * @return
     */
    boolean updatePasswordStrateg(SmPasswordStrategyDTO spsDto) throws PLException;
    /**
     *  åˆ é™¤å¯†ç ç­–ç•¥
     * @param pwdIds
     * @return
     */
    boolean delPasswordStrateg(String[] pwdIds) throws PLException;
    /**
     * æ ¹æ®ä¸»é”®æŸ¥è¯¢å¯†ç ç­–ç•¥map对象
     * @param oidList
     * @return key为密码策略主键 value为密码策略
@@ -71,7 +92,7 @@
    SmPasswordStrategyVO getPasswordStrategyVOByUserOid(String userOid) throws PLException;
    /**
     * æ ¹æ®å•条用户主键,获取用户的密码安全策略
     * æ ¹æ®å¤šæ¡ç”¨æˆ·ä¸»é”®ï¼ŒèŽ·å–ç”¨æˆ·çš„å¯†ç å®‰å…¨ç­–ç•¥
     * @param userOids
     * @return
     * @throws PLException
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java
@@ -179,7 +179,7 @@
     * @return
     * @throws VciBaseException
     */
    BaseResult importRole(File file) throws VciBaseException;
    BaseResult importRole(File file) throws Exception;
    /**
     * æˆå‘˜ç®¡ç†åˆ†é…è§’色调用,保存用户角色关联关系
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
@@ -255,6 +255,6 @@
     * @return
     * @throws VciBaseException
     */
    BaseResult importUser(File file) throws VciBaseException;
    BaseResult importUser(File file) throws Exception;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java
@@ -645,12 +645,12 @@
                orgDepartmentDTO.getOid(),"用户主键",
                orgDepartmentDTO.getId(),"用户名"
        );
        //按oid查询数据库中已存在的
        //按oid查询数据库中已存在的,确保修改的部门存在
        OrgDepartmentVO dbDepartmentVO = getDeptByDeptOid(orgDepartmentDTO.getOid());
        if(Func.isEmpty(dbDepartmentVO)){
            throw new VciBaseException("修改的部门不存在!");
        }
        //部门名和编号判重
        //部门名和编号判重,避免新家部门重复
        Map<String, String> conditionMap = new HashMap<>();
        conditionMap.put("plname",QueryOptionConstant.OR + orgDepartmentDTO.getName());
        if(Func.isNotBlank(orgDepartmentDTO.getId())){
@@ -712,7 +712,7 @@
    @Override
    public boolean deleteDept(String[] ids) throws PLException {
        VciBaseUtil.alertNotNull(ids,"要删除的部门主键");
        //具备连带删除的功能,如角色菜单授权表里面的授权信息
        //TODO: åº”该是不具备连带删除的功能,策略删除后用户关联的无用部门还在,考虑后期是否需要做,数据量不大可以不做连带删除
        return platformClientUtil.getFrameworkService().deleteDepartment(
                ids,
                new UserEntityInfo("developer"/*WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId()*/, null)
@@ -743,7 +743,7 @@
        List<String> columns = new ArrayList<>(Arrays.asList("ID", "名称", "编号", "代号", "专业", "父ID(部门唯一标识ID)", "描述"));
        //设置必填列
        ColumnNameisRed.clear();
        ColumnNameisRed.add(0);
        //ColumnNameisRed.add(0);
        ColumnNameisRed.add(1);
        //写excel
        String excelPath = LocalFileUtil.getDefaultTempFolder() + File.separator + downloadFileName +  ".xls";
@@ -776,7 +776,7 @@
     * @throws VciBaseException
     */
    @Override
    public BaseResult importDept(File file) throws VciBaseException {
    public BaseResult importDept(File file) throws Exception {
        VciBaseUtil.alertNotNull(file,"excel文件");
        if(!file.exists()){
            throw new VciBaseException("导入的excel文件不存在,{0}",new String[]{file.getPath()});
@@ -813,22 +813,21 @@
            Map<String, String> oidMap = new HashMap<>();
            poList.stream().forEach(po->{
                String parentId = Func.isBlank(po.getParentId()) ? "":po.getParentId();
                //表格内判重
                //部门名称判空
                //部门名称判空,通常通过po中的注解就可实现
                if(Func.isEmpty(po.getName())){
                    throw new VciBaseException("第【"+po.getRowIndex()+"】行,depterror,Reason:Name cannot be empty");
                }else if(repeatNameMap.getOrDefault(po.getName(), "").equals(parentId)/*excel中同一部门下Name相等*/){
                }else if(parentId.equals(repeatNameMap.getOrDefault(po.getName(), null))/*excel中同一部门下Name相等*/){
                    //同一部门下名称判重
                    throw new VciBaseException("第【"+po.getRowIndex()+"】行,deptnameerror,Reason: Names under the same department cannot be duplicated");
                }else if(Func.isNotEmpty(po.getId()) && repeatIdList.equals(po.getId())){
                    throw new VciBaseException("第【"+po.getRowIndex()+"】行,deptiderror,Reason: The primary key cannot be duplicated");
                }else if(Func.isNotEmpty(po.getNum()) && repeatNumMap.getOrDefault(po.getNum(),"").equals(parentId)/*excel中同一部门下编号存在 */){
                }else if(Func.isNotEmpty(po.getNum()) && parentId.equals(repeatNumMap.getOrDefault(po.getNum(),null))/*excel中同一部门下编号存在 */){
                    throw new VciBaseException("第【"+po.getRowIndex()+"】行,deptnumerror,Reason: The number cannot be duplicated");
                }else{
                    //2.2、查询数据库中的数据(查重ID和NUM),比较麻烦需要根据ParentID查询(所有只能单条查询进行判重)
                    //组装查重条件:同一部门下(parentId相等),name或者num相等
                    HashMap<String, String> conditionMap = new HashMap<>();
                    conditionMap.put("plname",po.getName());
                    conditionMap.put("plname",QueryOptionConstant.OR + po.getName());
                    conditionMap.put("plnum",QueryOptionConstant.OR + po.getNum());
                    String pId = Func.isBlank(po.getParentId()) ? null:po.getParentId();
                    List<OrgDepartmentVO> repeatOrgDept = this.getDeptByDeptPOidAndCondition(pId, conditionMap);
@@ -847,6 +846,8 @@
                BeanUtil.convert(po,dto);
                dto.setOid(po.getId());
                dto.setId(po.getNum());
                dto.setDescription(po.getDesc());
                dto.setSpecialties(po.getSpecialties());
                dto.setPkFatherDepartment(po.getParentId());
                dto.setCreateTime(new Date());
                dto.setCreator(loginUserId);
@@ -854,7 +855,7 @@
                dto.setStatus((short) 0);
                //2.2、过程中处理主键转换问题最好是一条一条的处理ID是否存在还有ParentID是否存在的问题
                //先判断是已存在的部门ID,还是不存在的部门ID,已存在系统中的ID就是为Dept:开头的
                String pId = dto.getPkFatherDepartment();
                String pId = Func.isBlank(dto.getPkFatherDepartment()) ? "":dto.getPkFatherDepartment();
                //是已存在系统中的部门id
                if(pId.contains("Dept:")){
                    //解析出真实的oid
@@ -863,33 +864,41 @@
                    if(Func.isBlank(deParentId) || Func.isEmpty(this.getDeptByDeptOid(deParentId))){
                        throw new VciBaseException("第【"+ po.getRowIndex() +"】行,deptparentiderror,Reason:Parent ID resolution error or does not exist in the system");
                    }
                    //替换掉临时使用的部门唯一标识
                    dto.setPkOrganizationName(deParentId);
                    //替换掉临时使用的部门唯一标识,但是为了方便后续判断,还是需要加上Dept:标识
                    dto.setPkFatherDepartment("Dept:"+deParentId);
                }
                //用户手输了部门oid,但是避免oid不规范需要,用规范oid进行替换,如果没输入保存时会自动生成oid
                if(Func.isNotBlank(dto.getOid())){
                    String pkOid = VciBaseUtil.getPk();
                String excelOid = dto.getOid();
                if(Func.isNotBlank(excelOid)){
                    String pkOid = VciBaseUtil.getPk().toUpperCase(Locale.ROOT);
                    dto.setOid(pkOid);
                    //oid映射关系,后续用来更新parentId
                    oidMap.put(dto.getOid(),pkOid);
                    oidMap.put(excelOid,pkOid);
                }
                DeptInfo deptInfo = this.changeOrgDeptDTOToDeptInfo(dto);
                deptInfoList.add(deptInfo);
            });
            //3、处理id和parentId的映射关系:将用户手输的父ID转换成实际存储的ID
            List<DeptInfo> lastDeptInfoList = deptInfoList.stream().map(info -> {
                //parentId不为空并且没有Dept:相关的字符串,说明是用户手输的ParentId(导入的数据就是一个树结构)
                if (Func.isNotBlank(info.parentId) || info.parentId.contains("Dept:")) {
                    //转换ParentId为实际要存储的部门ID
                    info.parentId = oidMap.get(info.parentId);
            //3、处理id和parentId的映射关系:将用户手输的父ID转换成实际存储的ID并保存进库
            deptInfoList.stream().forEach(info -> {
                //3.1、对最终处理好的部门数据保存
                try {
                    //parentId不为空并且没有Dept:相关的字符串,说明是用户手输的ParentId(导入的数据就是一个树结构)
                    if (Func.isNotBlank(info.parentId) && !info.parentId.contains("Dept:")) {
                        //转换ParentId为实际要存储的部门ID
                        info.parentId = oidMap.get(info.parentId);
                    }else if(info.parentId.contains("Dept:")){
                        //系统中已存在的父部门OID,需要移除掉Dept:标识
                        info.parentId = info.parentId.replace("Dept:","");
                    }
                    platformClientUtil.getFrameworkService().saveDepartment(
                            info,
                            userEntityInfo
                    );
                } catch (PLException e) {
                    e.printStackTrace();
                    throw new VciBaseException("保存时出现错误!,原因:"+VciBaseUtil.getExceptionMessage(e));
                }
                return info;
            }).collect(Collectors.toList());
            //4、对最终处理好的部门数据保存,实现最终统一保存,避免了一部分数据进了一部分数据因为校验没过没进库的问题
            platformClientUtil.getFrameworkService().batchSaveDepart(
                    lastDeptInfoList.toArray(new DeptInfo[lastDeptInfoList.size()]),
                    userEntityInfo
            );
            });
        }catch (Exception e){
            if(logger.isErrorEnabled()){
                logger.error("读取excel内容时或保存用户信息时出现了错误,具体原因:",e.getMessage());
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java
@@ -6,15 +6,14 @@
import com.vci.corba.omd.data.BusinessObject;
import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
import com.vci.frameworkcore.constant.FrameWorkBtmTypeConstant;
import com.vci.frameworkcore.enumpck.RoleClassifyEnum;
import com.vci.frameworkcore.enumpck.RoleControlAreaEnum;
import com.vci.frameworkcore.model.OrgDeptForPlatform1;
import com.vci.frameworkcore.model.dto.SmPasswordStrategyDTO;
import com.vci.frameworkcore.enumpck.CombinationEnum;
import com.vci.frameworkcore.model.SmPasswordStrategyDO;
import com.vci.frameworkcore.model.SmPasswordStrategyForPlatform1;
import com.vci.frameworkcore.model.SmRoleForPlatform1;
import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
import com.vci.frameworkcore.pagemodel.SmRoleVO;
import com.vci.omd.utils.ObjectTool;
import com.vci.starter.web.constant.QueryOptionConstant;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.starter.web.pagemodel.PageHelper;
@@ -27,6 +26,8 @@
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.WebUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -62,6 +63,11 @@
    private PlatformClientUtil platformClientUtil;
    /**
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * èŽ·å–é»˜è®¤å¯†ç ç­–ç•¥
     * @return
     */
@@ -92,10 +98,8 @@
            pageHelper = new PageHelper(-1);
        }
        pageHelper.addDefaultAsc("pname");
        VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap, SmPasswordStrategyDO.class,pageHelper);
        //queryWrapper.eq("pltype","2");
        platformClientUtil.getFrameworkService().fetchAllPasswordStrategy();
        //platformClientUtil.getFrameworkService().fetchpassword();
        VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap, SmPasswordStrategyForPlatform1.class,pageHelper);
        //platformClientUtil.getFrameworkService().fetchAllPasswordStrategy();
        List<SmPasswordStrategyForPlatform1> smPasswordStrategyForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmPasswordStrategyForPlatform1.class);
        DataGrid<SmPasswordStrategyVO> dataGrid = new DataGrid<>();
        if(!CollectionUtils.isEmpty(smPasswordStrategyForPlatform1s)){
@@ -134,11 +138,18 @@
     * @param smPasswordStrategyForPlatform1s åŽŸå¹³å°çš„å¯†ç ç­–ç•¥
     * @return
     */
    private List<SmPasswordStrategyVO> pltPwdStrategy2SmPwdStrategyVOs(List<SmPasswordStrategyForPlatform1> smPasswordStrategyForPlatform1s){
    private List<SmPasswordStrategyVO> pltPwdStrategy2SmPwdStrategyVOs(List<SmPasswordStrategyForPlatform1> smPasswordStrategyForPlatform1s) throws PLException{
        List<SmPasswordStrategyVO> smPasswordStrategyVOList = new ArrayList<>();
        if(!CollectionUtils.isEmpty(smPasswordStrategyForPlatform1s)){
            smPasswordStrategyForPlatform1s.stream().forEach(s -> {
                smPasswordStrategyVOList.add(pltPwdStrategy2SmPwdStrategyVO(s));
                try {
                    smPasswordStrategyVOList.add(pltPwdStrategy2SmPwdStrategyVO(s));
                } catch (PLException e) {
                    e.printStackTrace();
                    String exceptionMessage = "Platform1对象转VO对象时出现错误,原因:"+VciBaseUtil.getExceptionMessage(e);
                    logger.error(exceptionMessage);
                    throw new VciBaseException(exceptionMessage);
                }
            });
        }
        return smPasswordStrategyVOList;
@@ -149,27 +160,79 @@
     * @param strategyForPlatform1 åŽŸå¹³å°çš„å¯†ç ç­–ç•¥
     * @return æ–°çš„密码策略对象
     */
    private SmPasswordStrategyVO pltPwdStrategy2SmPwdStrategyVO(SmPasswordStrategyForPlatform1 strategyForPlatform1){
    private SmPasswordStrategyVO pltPwdStrategy2SmPwdStrategyVO(SmPasswordStrategyForPlatform1 strategyForPlatform1) throws PLException {
        SmPasswordStrategyVO strategyVO = new SmPasswordStrategyVO();
        strategyVO.setOid(strategyForPlatform1.getPluid());
        strategyVO.setId("");
        strategyVO.setName(strategyForPlatform1.getPname());
        strategyVO.setMaxLength(strategyForPlatform1.getPlmaxlength());
        strategyVO.setMinLength(strategyForPlatform1.getPlength());
        strategyVO.setValidDay(strategyForPlatform1.getPremindday());
        strategyVO.setValidDay(strategyForPlatform1.getPoverdueday());
        strategyVO.setRemindDay(strategyForPlatform1.getPremindday());
        strategyVO.setRetryTime(strategyForPlatform1.getPretrytime());
        strategyVO.setLockTime(strategyForPlatform1.getPlocktime());
        strategyVO.setDefaultFlag(strategyForPlatform1.getPlisdefault() == 1);
        strategyVO.setDescription(strategyForPlatform1.getPldesc());
        strategyVO.setCreateTime(strategyForPlatform1.getPlcreatetime());
        strategyVO.setCreateTime(new Date(strategyForPlatform1.getPlcreatetime()));
        strategyVO.setCreator(strategyForPlatform1.getPlcreateuser());
        strategyVO.setLastModifyTime(strategyForPlatform1.getPlupdatetime());
        strategyVO.setLastModifyTime(new Date(strategyForPlatform1.getPlupdatetime()));
        strategyVO.setLastModifier(strategyForPlatform1.getPlupdateuser());
        strategyVO.getRequireCharType(strategyForPlatform1.getPcharspecies());
        strategyVO.setLicensors(strategyForPlatform1.getPllicensors());
        strategyVO.setRequireCharCount(strategyForPlatform1.getPlrequiredtype());
        //处理密码策略的组合方式
        Integer plchartypes = strategyForPlatform1.getPlchartypes();
        if(Func.isNotEmpty(plchartypes)){
            String combinations = plchartypes2Combinations(plchartypes);
            strategyVO.setRequireCharType(combinations);
            strategyVO.setRequireCharTypeText(CombinationEnum.getCombinationText(combinations));
        }
        return strategyVO;
    }
    /**
     *  plchartypes转换为Combinations(英文)
     * @param plchartypes
     * @return è¿›åˆ¶æ•°è½¬æ¢ä¸ºç»„合方式的因为枚举多个之间用都好间隔
     */
    private String plchartypes2Combinations(Integer plchartypes){
        StringBuilder sb = new StringBuilder();
        if ((plchartypes & 0x01) == 0x01)
            sb.append("number,");
        if ((plchartypes & 0x02) == 0x02)
            sb.append("lower,");
        if ((plchartypes & 0x04) == 0x04)
            sb.append("upper,");
        if ((plchartypes & 0x08) == 0x08)
            sb.append("symbol,");
        return sb.deleteCharAt(sb.length() - 1).toString();
    }
    /**
     *  plchartypes转换为Combinations(英文)
     * @param combinations
     * @return ç»„合方式转换为实际要存储的整形数
     */
    private short combinations2Plchartypes(String combinations) {
        short plchartypes = 0;
        String[] combinationsArray = combinations.split(",");
        for (String type : combinationsArray) {
            switch (type) {
                case "number":
                    plchartypes |= 0x01;
                    break;
                case "lower":
                    plchartypes |= 0x02;
                    break;
                case "upper":
                    plchartypes |= 0x04;
                    break;
                case "symbol":
                    plchartypes |= 0x08;
                    break;
            }
        }
        return plchartypes;
    }
    /**
@@ -181,7 +244,6 @@
    @Override
    public boolean saveUserPasswordStrateg(String[] userIds, String passwordStrategId) throws PLException {
        VciBaseUtil.alertNotNull(userIds,"用户主键",passwordStrategId,"密码安全策略主键");
        //TODO:这里没有做查重处理,明天记得验证一下这儿是不是会自动做saveOrUpdate的处理
        return platformClientUtil.getFrameworkService().saveUserPasswordStrateg(
                userIds,
                passwordStrategId,
@@ -190,6 +252,187 @@
    }
    /**
     * å¯†ç ç­–略校验:是否合规校验
     * @param strategy
     */
    private void checkPwdStrategy(SmPasswordStrategyDTO strategy){
        if(strategy.getRequireCharCount() > strategy.getCombinations().split(",").length){
            throw new VciBaseException("必填种类不能大于所选择的密码组合方式的个数!");
        }
        if(strategy.getMaxLength() < strategy.getMinLength()){
            throw new VciBaseException("密码最大长度不能小于最小长度!");
        }
        if(Func.isNotEmpty(strategy.getRequireCharCount()) &&
                (strategy.getMinLength() < strategy.getRequireCharCount() ||
                strategy.getMaxLength() < strategy.getRequireCharCount())
        ){
            throw new VciBaseException("密码最小长度不能小于必填种类的值!");
        }
        if(strategy.getValidDay() <= strategy.getRemindDay()){
            throw new VciBaseException("过期时间不能小于提醒时间!");
        }
        //判断前端是否未提交,是否默认字段
        if(Func.isEmpty(strategy.getDefaultFlag())){
            strategy.setDefaultFlag(0);
        }
    }
    /**
     * dto对象转换为info对象
     * @param dto
     * @return
     */
    private PasswordStrategyInfo changePasswordStrategyDTO2Info(SmPasswordStrategyDTO dto){
        PasswordStrategyInfo info = new PasswordStrategyInfo();
        info.id = dto.getOid() == null ? "" : dto.getOid();
        info.name = dto.getName();
        info.passwordLen = dto.getMinLength();
        info.passwordMaxLen = dto.getMaxLength();
        info.charTypes = dto.getRequireCharType();
        info.requiredType = dto.getRequireCharCount();
        //逾期日=有效天数
        info.overdueDay = dto.getValidDay();
        info.remideDay = dto.getRemindDay();
        info.retryTime = dto.getRetryTime();
        info.lockTime = dto.getLockTime();
        if(dto.getDefaultFlag().equals("1") || dto.getDefaultFlag().equals("true")){
            info.isDefault = true;
        }else {
            info.isDefault = false;
        }
        info.desc = dto.getDescription() == null ? "" : dto.getDescription();
        info.createTime = dto.getCreateTime() == null ? System.currentTimeMillis() : dto.getCreateTime().getTime();
        info.createUser = dto.getCreator() == null ? "" : dto.getCreator();
        info.updateTime = System.currentTimeMillis();
        info.updateUser = dto.getLastModifier() == null ? "" : dto.getLastModifier();
        return info;
    }
    /**
     * æ ¹æ®map条件查询密码策略
     * @param conditionMap
     * @return
     */
    private List<SmPasswordStrategyVO> getPwdStrategyByCondition(Map<String,String> conditionMap) throws PLException {
        if(Func.isEmpty(conditionMap)){
            conditionMap = new HashMap();
        }
        VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap, SmPasswordStrategyForPlatform1.class);
        List<SmPasswordStrategyForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmPasswordStrategyForPlatform1.class);
        if(Func.isEmpty(roleForPlatform1s)){
            return null;
        }
        return pltPwdStrategy2SmPwdStrategyVOs(roleForPlatform1s);
    }
    /**
     * æ–°å¢žå¯†ç ç­–ç•¥
     * @param spsDto
     * @return
     */
    @Override
    public boolean addPasswordStrateg(SmPasswordStrategyDTO spsDto) throws PLException {
        VciBaseUtil.alertNotNull(
                spsDto,"新增的密码策略对象",
                spsDto.getName(),"策略名称",
                spsDto.getMinLength(),"密码最小长度",
                spsDto.getMaxLength(),"密码最大长度",
                spsDto.getCombinations(),"组合方式种类",
                spsDto.getRequireCharCount(),"必填种类",
                spsDto.getValidDay(),"过期时间",
                spsDto.getRemindDay(),"提醒时间",
                spsDto.getRetryTime(),"重试次数",
                spsDto.getLockTime(),"锁定时间"
        );
        //密码策略合规校验,不合规会抛出错误
        this.checkPwdStrategy(spsDto);
        //根据策略名称查重
        Map<String, String> conditionMap = new HashMap<>();
        conditionMap.put("pname",spsDto.getName());
        List<SmPasswordStrategyVO> dbVoList = this.getPwdStrategyByCondition(conditionMap);
        if(Func.isNotEmpty(dbVoList)){
            throw new VciBaseException("策略名称已经存在,请进行修改!");
        }
        //获取当前用户账号信息:平台保存方法中会将userEntityInfo中的用户信息用作当前策略的创建人和修改人
        String userId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
        UserEntityInfo userEntityInfo = new UserEntityInfo(userId,null);
        //组合方式转换为存储值
        spsDto.setRequireCharType(combinations2Plchartypes(spsDto.getCombinations()));
        spsDto.setOid(VciBaseUtil.getPk().toUpperCase(Locale.ROOT));
        spsDto.setCreator(userId);
        spsDto.setLastModifier(userId);
        //转换为存储用对象
        PasswordStrategyInfo passwordStrategyInfo = changePasswordStrategyDTO2Info(spsDto);
        //当设置为默认策略时,平台保存方法会自动处理掉已存在的默认策略,以保证只有一条默认策略
        return platformClientUtil.getFrameworkService().savePasswordStrategy(passwordStrategyInfo, userEntityInfo);
    }
    /**
     * ä¿®æ”¹å¯†ç ç­–ç•¥
     * @param spsDto
     * @return
     */
    @Override
    public boolean updatePasswordStrateg(SmPasswordStrategyDTO spsDto) throws PLException {
        VciBaseUtil.alertNotNull(
                spsDto,"新增的密码策略对象",
                spsDto.getOid(),"策略主键",
                spsDto.getName(),"策略名称",
                spsDto.getMinLength(),"密码最小长度",
                spsDto.getMaxLength(),"密码最大长度",
                spsDto.getCombinations(),"组合方式种类",
                spsDto.getRequireCharCount(),"必填种类",
                spsDto.getValidDay(),"过期时间",
                spsDto.getRemindDay(),"提醒时间",
                spsDto.getRetryTime(),"重试次数",
                spsDto.getLockTime(),"锁定时间"
        );
        //密码策略合规校验,不合规会抛出错误
        this.checkPwdStrategy(spsDto);
        //查询修改的策略是否存在
        Map<String, String> conditionMap = new HashMap<>();
        conditionMap.put("pluid",spsDto.getOid());
        List<SmPasswordStrategyVO> dbVoList = this.getPwdStrategyByCondition(conditionMap);
        if(Func.isEmpty(dbVoList)){
            throw new VciBaseException("当前修改的密码策略在系统中不存在,请刷新后重试!");
        }
        //获取当前用户账号信息
        String userId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
        UserEntityInfo userEntityInfo = new UserEntityInfo(userId,null);
        //根据策略名称查重
        conditionMap.clear();
        conditionMap.put("pname",spsDto.getName());
        conditionMap.put("pluid", QueryOptionConstant.NOTEQUAL + spsDto.getOid());
        List<SmPasswordStrategyVO> repeatVoList = this.getPwdStrategyByCondition(conditionMap);
        if(Func.isNotEmpty(repeatVoList)){
            throw new VciBaseException("策略名称已经存在,请进行修改!");
        }
        SmPasswordStrategyVO smPasswordStrategyVO = dbVoList.get(0);
        spsDto.setCreateTime(smPasswordStrategyVO.getCreateTime());
        spsDto.setCreator(smPasswordStrategyVO.getCreator());
        spsDto.setLastModifier(userId);
        //组合方式转换为存储值
        spsDto.setRequireCharType(combinations2Plchartypes(spsDto.getCombinations()));
        PasswordStrategyInfo passwordStrategyInfo = changePasswordStrategyDTO2Info(spsDto);
        return platformClientUtil.getFrameworkService().editPasswordStrategy(passwordStrategyInfo,userEntityInfo);
    }
    /**
     *  åˆ é™¤å¯†ç ç­–ç•¥
     * @param pwdIds
     * @return
     */
    @Override
    public boolean delPasswordStrateg(String[] pwdIds) throws PLException {
        VciBaseUtil.alertNotNull(pwdIds,"要删除的密码策略主键");
        //TODO: åº”该是不具备连带删除的功能,策略删除后用户关联的无用策略信息还在,考虑后期是否需要做,数据量不大可以不做连带删除
        return platformClientUtil.getFrameworkService().deletePasswordStrategy(
                pwdIds,
                new UserEntityInfo("developer"/*WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId()*/, null)
        );
    }
    /**
     * æ ¹æ®ä¸»é”®æŸ¥è¯¢å¯†ç ç­–ç•¥map对象
     * @param oidList
     * @return key为密码策略主键 value为密码策略
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java
@@ -646,16 +646,22 @@
        VciBaseUtil.alertNotNull(
                smRoleDTO,"添加的角色对象",
                smRoleDTO.getName(),"角色名");
        //查询数据库中的,根据角色名查
        //根据角色主键查询,确保修改的角色存在
        Map<String, String> conditionMap = new HashMap<>();
        conditionMap.put("plname",smRoleDTO.getName());
        conditionMap.put("pluid",smRoleDTO.getOid());
        SmRoleVO dbSmRoleVO = getRoleByConditionMap(conditionMap);
        //根据主键没查询到了用户
        if(Func.isEmpty(dbSmRoleVO) || Func.isBlank(dbSmRoleVO.getOid())){
            throw new PLException("500", new String[] { "当前修改的角色不存在!"});
        }
        //角色名相等,但是主键不相等,说明修改为的角色名已存在,不能重复
        if(dbSmRoleVO.getName().equals(smRoleDTO.getName()) && !dbSmRoleVO.getOid().equals(smRoleDTO.getOid())){
        //查询数据库中的,根据角色名查重
        conditionMap.clear();
        conditionMap.put("plname",smRoleDTO.getName());
        //排除掉当前修改的用户
        conditionMap.put("pluid",QueryOptionConstant.NOTEQUAL + smRoleDTO.getName());
        SmRoleVO reapeatSmRoleVO = getRoleByConditionMap(conditionMap);
        //说明修改为的角色名已存在,不能重复
        if(Func.isNotEmpty(reapeatSmRoleVO) && smRoleDTO.getName().equals(reapeatSmRoleVO)){
            throw new PLException("500", new String[] { "该角色名称已经存在,请修改!"});
        }
        SmRoleDTO smRoleDTO1 = new SmRoleDTO();
@@ -692,7 +698,7 @@
     * @throws VciBaseException
     */
    @Override
    public BaseResult importRole(File file) throws VciBaseException {
    public BaseResult importRole(File file) throws Exception {
        VciBaseUtil.alertNotNull(file,"excel文件");
        if(!file.exists()){
            throw new VciBaseException("导入的excel文件不存在,{0}",new String[]{file.getPath()});
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
@@ -1333,7 +1333,7 @@
     * @throws VciBaseException
     */
    @Override
    public BaseResult importUser(File file) throws VciBaseException {
    public BaseResult importUser(File file) throws Exception {
        VciBaseUtil.alertNotNull(file,"excel文件");
        if(!file.exists()){
            throw new VciBaseException("导入的excel文件不存在,{0}",new String[]{file.getPath()});
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java
@@ -18,6 +18,8 @@
import com.vci.web.util.PlatformClientUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -38,7 +40,6 @@
 */
@RestController
@RequestMapping("/departmentQueryController")
@Slf4j
public class OrgDepartmentQueryController {
    /**
@@ -46,6 +47,11 @@
     */
    @Autowired
    private OrgDeptQueryServiceI deptQueryService;
    /**
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * éƒ¨é—¨çš„æ ‘形参照,部门管理也用的这个查询接口
@@ -60,9 +66,9 @@
            return  BaseResult.tree(deptTreeList);
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("部门树查询时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("部门树查询时出现错误,原因:" + e.getMessage());
            String exceptionMessage = "部门树查询时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(e.getMessage());
        }
    }
@@ -93,9 +99,9 @@
            return deptQueryService.saveUsersDept(userOids,deptId) ? BaseResult.success("部门分配成功!"):BaseResult.fail("部门分配失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("关联的部门时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("关联的部门时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "关联的部门时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -110,9 +116,9 @@
            return deptQueryService.addDept(orgDepartmentDTO) ? BaseResult.success("部门添加成功!"):BaseResult.fail("部门添加失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("添加部门时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("添加部门时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "添加部门时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -127,9 +133,9 @@
            return deptQueryService.updateDept(orgDepartmentDTO) ? BaseResult.success("部门修改成功!"):BaseResult.fail("部门修改失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("修改部门时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("修改部门时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "修改部门时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -144,9 +150,9 @@
            return deptQueryService.deleteDept(ids) ? BaseResult.success("删除部门成功!"):BaseResult.fail("删除部门失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("添加部门时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("添加部门时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "添加部门时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -156,7 +162,6 @@
     * @param response
     */
    @RequestMapping(value = "/downloadImportTemplate",method = RequestMethod.GET)
    @VciUnCheckRight
    public void downloadImportTemplate(String downloadFileName, HttpServletResponse response){
        try {
            String excelPath = deptQueryService.downloadImportTemplate(downloadFileName);
@@ -178,7 +183,6 @@
     * @return
     */
    @RequestMapping(value = "/importDept",method = RequestMethod.POST)
    @VciUnCheckRight
    public BaseResult importUser(MultipartFile file){
        String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename());
        File file1 = new File(excelFileName);
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmPwdStrategyQueryController.java
@@ -1,16 +1,17 @@
package com.vci.frameworkcore.controller;
import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
import com.vci.frameworkcore.model.dto.SmPasswordStrategyDTO;
import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
import com.vci.frameworkcore.pagemodel.SmUserVO;
import com.vci.starter.web.annotation.controller.VciUnCheckRight;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.web.util.Func;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@@ -25,7 +26,6 @@
 */
@RestController
@RequestMapping("/passwordStrategyQueryController")
@Slf4j
public class SmPwdStrategyQueryController {
    /**
@@ -33,6 +33,11 @@
     */
    @Resource
    private SmPwdStrategyQueryServiceI pwdStrategyQueryService;
    /**
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * å¯†ç å®‰å…¨ç­–略的列表参照查询
@@ -48,9 +53,9 @@
            return BaseResult.dataGrid(pwdStrategyVODataGrid);
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("密码安全策略列表查询时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("密码安全策略列表查询时出现错误,原因:" + e.getMessage());
            String exceptionMessage = "密码安全策略列表查询时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(e.getMessage());
        }
    }
@@ -68,9 +73,9 @@
            return BaseResult.dataList(pwdStrategyVODataGrid);
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("密码安全策略下拉列表查询时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("密码安全策略下拉列表查询时出现错误,原因:" + e.getMessage());
            String exceptionMessage = "密码安全策略下拉列表查询时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(e.getMessage());
        }
    }
@@ -87,9 +92,64 @@
                    ? BaseResult.success("为用户设置密码安全策略成功!"):BaseResult.fail("为用户设置密码安全策略失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("为用户设置密码安全策略时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("为用户设置密码安全策略时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "为用户设置密码安全策略时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * æ–°å¢žå¯†ç ç­–ç•¥
     * @param smPasswordStrategyDTO
     * @return
     */
    @RequestMapping(value = "/addPasswordStrateg",method = RequestMethod.POST)
    public BaseResult addPasswordStrateg(@RequestBody SmPasswordStrategyDTO smPasswordStrategyDTO){
        try {
            return pwdStrategyQueryService.addPasswordStrateg(smPasswordStrategyDTO)
                    ? BaseResult.success("新增密码安全策略成功!"):BaseResult.fail("新增密码安全策略失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = "新增密码安全策略时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * ä¿®æ”¹å¯†ç ç­–ç•¥
     * @param smPasswordStrategyDTO
     * @return
     */
    @RequestMapping(value = "/updatePasswordStrateg",method = RequestMethod.PUT)
    public BaseResult updatePasswordStrateg(@RequestBody SmPasswordStrategyDTO smPasswordStrategyDTO){
        try {
            return pwdStrategyQueryService.updatePasswordStrateg(smPasswordStrategyDTO)
                    ? BaseResult.success("修改密码安全策略成功!"):BaseResult.fail("修改密码安全策略失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = "修改密码安全策略时出现错误,原因:" +VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * åˆ é™¤å¯†ç ç­–ç•¥
     * @param pwdIds
     * @return
     */
    @RequestMapping(value = "/delPasswordStrateg",method = RequestMethod.DELETE)
    @VciUnCheckRight
    public BaseResult delPasswordStrateg(String[] pwdIds){
        try {
            return pwdStrategyQueryService.delPasswordStrateg(pwdIds)
                    ? BaseResult.success("删除密码安全策略成功!"):BaseResult.fail("删除密码安全策略失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = "删除密码安全策略时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java
@@ -12,6 +12,8 @@
import com.vci.starter.web.util.WebThreadLocalUtil;
import com.vci.web.enumpck.UserTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -27,7 +29,6 @@
 */
@RestController
@RequestMapping("/roleQueryController")
@Slf4j
public class SmRoleQueryController {
    /**
@@ -35,6 +36,11 @@
     */
    @Autowired
    private SmRoleQueryServiceI roleQueryService;
    /**
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * è§’色的列表参照
@@ -52,9 +58,9 @@
            return BaseResult.dataGrid(roleVODataGrid);
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("查询角色列表时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("查询角色列表时出现错误,原因" + exceptionMessage);
            String exceptionMessage = "查询角色列表时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -81,9 +87,9 @@
            return BaseResult.dataGrid(roleVOData);
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("查询角色列表时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("查询角色列表时出现错误,原因:"+exceptionMessage);
            String exceptionMessage = "查询角色列表时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -99,9 +105,9 @@
            return BaseResult.dataList(roleQueryService.listRoleByUserOid(userOid,queryMap));
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("根据用户主键获取,关联的角色时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("根据用户主键获取,关联的角色时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "根据用户主键获取,关联的角色时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -130,9 +136,9 @@
            return roleQueryService.addRole(smRoleDTO) ? BaseResult.success("角色添加成功!"):BaseResult.fail("角色添加失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("添加角色时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("添加角色时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "添加角色时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -147,9 +153,9 @@
            return roleQueryService.updateRole(smRoleDTO) ? BaseResult.success("角色修改成功!"):BaseResult.fail("角色修改失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("修改角色时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("修改角色时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "修改角色时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -164,9 +170,9 @@
            return roleQueryService.deleteRole(ids) ? BaseResult.success("删除用户成功!"):BaseResult.fail("删除用户失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("添加用户时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("添加用户时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "添加用户时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -206,9 +212,9 @@
            return roleQueryService.saveRights(userOids,roleIds) ? BaseResult.success("角色分配成功!"):BaseResult.fail("角色分配失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("分配角色时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("分配角色时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "分配角色时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -224,9 +230,9 @@
            return roleQueryService.saveRight(userOids,roleId) ? BaseResult.success("成员分配成功!"):BaseResult.fail("成员分配失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("分配用户时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("分配用户时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "分配用户时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
@@ -14,6 +14,8 @@
import com.vci.web.util.Func;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -31,7 +33,6 @@
 */
@RestController
@RequestMapping("/userQueryController")
@Slf4j
public class SmUserQueryController {
    /**
@@ -39,6 +40,11 @@
     */
    @Autowired
    private SmUserQueryServiceI userQueryService;
    /**
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * ç”¨æˆ·çš„列表参照,
@@ -80,9 +86,8 @@
     * @throws VciBaseException
     */
    @RequestMapping(value = "/countSmUserByDeptOid",method = RequestMethod.GET)
    @VciUnCheckRight
    public BaseResult<List<SmUserVO>> countSmUserByDeptOid(String pkDepartment,BaseQueryObject queryObject) throws VciBaseException{
        VciBaseUtil.alertNotNull(pkDepartment,"部门主键");
        //VciBaseUtil.alertNotNull(pkDepartment,"部门主键");允许为空因为会出现统计所有部门这个节点的情况
        try {
            if(queryObject == null){
                queryObject = new BaseQueryObject();
@@ -91,9 +96,9 @@
            return BaseResult.dataList(userVODataGrid);
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("通过部门主键获取在该部门下的,用户参照列表时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("通过部门主键获取在该部门下的,用户参照列表时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "通过部门主键获取在该部门下的,用户参照列表时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -105,7 +110,6 @@
     * @throws VciBaseException éƒ¨é—¨ä¸»é”®ä¸ºç©ºã€æŸ¥è¯¢å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常,如果是老的项目里不抛出异常
     */
    @RequestMapping(value = "/listUserByDeptOid",method = RequestMethod.GET)
    @VciUnCheckRight
    public BaseResult<List<SmUserVO>> listUserByDeptOid(String pkDepartment,BaseQueryObject queryObject) throws VciBaseException{
        VciBaseUtil.alertNotNull(pkDepartment,"部门主键");
        try {
@@ -116,9 +120,9 @@
            return BaseResult.dataList(userVODataGrid);
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("通过部门主键获取在该部门下的,用户参照列表时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("通过部门主键获取在该部门下的,用户参照列表时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "通过部门主键获取在该部门下的,用户参照列表时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -130,7 +134,6 @@
     * @throws VciBaseException éƒ¨é—¨ä¸»é”®ä¸ºç©ºã€æŸ¥è¯¢å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常,如果是老的项目里不抛出异常
     */
    @RequestMapping(value = "/listUserUnInDeptOid",method = RequestMethod.GET)
    @VciUnCheckRight
    public BaseResult<List<SmUserVO>> listUserUnInDeptOid(String pkDepartment,BaseQueryObject queryObject) throws VciBaseException{
        VciBaseUtil.alertNotNull(pkDepartment,"部门主键");
        try {
@@ -141,9 +144,9 @@
            return BaseResult.dataList(userVODataGrid);
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("通过部门主键获取不在该部门下的,用户参照列表时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("通过部门主键获取不在该部门下的,用户参照列表时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "通过部门主键获取不在该部门下的,用户参照列表时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -165,9 +168,9 @@
            return  BaseResult.dataList(smUserVOList);
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("通过角色来获取用户的参照列表时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("通过角色来获取用户的参照列表时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "通过角色来获取用户的参照列表时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -189,9 +192,9 @@
            return  BaseResult.dataList(smUserVOList);
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("获取不在当前角色下的,用户参照列表时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("获取不在当前角色下的,用户参照列表时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "获取不在当前角色下的,用户参照列表时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -214,16 +217,15 @@
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常,如果是老的项目里不抛出异常
     */
    @RequestMapping(value = "/getDataGridUsers",method = RequestMethod.GET)
    //@VciUnCheckRight
    public BaseResult<SmUserVO> getDataGridUsers(BaseQueryObject queryObject) throws VciBaseException {
        try {
            DataGrid<SmUserVO> userVODataGrid = userQueryService.getDataGridUsers(queryObject.getConditionMap(),queryObject.getPageHelper());
            return BaseResult.dataGrid(userVODataGrid);
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("用户管理列表查询时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("用户管理列表查询时出现错误,原因:" + e.getMessage());
            String exceptionMessage = "用户管理列表查询时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(e.getMessage());
        }
    }
@@ -233,15 +235,14 @@
     * @return
     */
    @RequestMapping(value = "/addUser",method = RequestMethod.POST)
    @VciUnCheckRight
    public BaseResult addUser(@RequestBody SmUserDTO smUserDTO){
        try {
            return userQueryService.addUser(smUserDTO) ? BaseResult.success("用户添加成功!"):BaseResult.fail("用户添加失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("添加用户时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("添加用户时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "添加用户时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -251,15 +252,14 @@
     * @return
     */
    @RequestMapping(value = "/updateUser",method = RequestMethod.PUT)
    @VciUnCheckRight
    public BaseResult updateUser(@RequestBody SmUserDTO smUserDTO){
        try {
            return BaseResult.success(userQueryService.updateUser(smUserDTO) ? "用户修改成功!":"用户修改失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("修改用户时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("修改用户时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "修改用户时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -269,15 +269,14 @@
     * @return
     */
    @RequestMapping(value = "/deleteUser",method = RequestMethod.DELETE)
    @VciUnCheckRight
    public BaseResult deleteUser(String[] ids){
        try {
            return userQueryService.deleteUser(ids) ? BaseResult.success("删除用户成功!"):BaseResult.fail("删除用户失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("添加用户时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("添加用户时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "添加用户时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -288,16 +287,15 @@
     * @return
     */
    @RequestMapping(value = "/stopUsers",method = RequestMethod.POST)
    @VciUnCheckRight
    public BaseResult stopUsers(String[] ids,boolean flag){
        try {
            userQueryService.stopUsers(ids,flag);
            return BaseResult.success("用户【停用/启用】成功!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            log.error("用户【停用/启用】时出现错误,原因:" + exceptionMessage);
            return BaseResult.fail("用户【停用/启用】时出现错误,原因:" + exceptionMessage);
            String exceptionMessage = "用户【停用/启用】时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
@@ -307,7 +305,6 @@
     * @param response
     */
    @RequestMapping(value = "/downloadImportTemplate",method = RequestMethod.GET)
    @VciUnCheckRight
    public void downloadImportTemplate(String downloadFileName, HttpServletResponse response){
        try {
            String excelPath = userQueryService.downloadImportTemplate(downloadFileName);
@@ -325,6 +322,8 @@
    /**
     * äººå‘˜å¯¼å…¥
     * @param file
     * @return
     */
    @RequestMapping(value = "/importUser",method = RequestMethod.POST)
    public BaseResult importUser(MultipartFile file){
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/CombinationEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,126 @@
package com.vci.frameworkcore.enumpck;
//import com.vci.frameworkcore.constant.FrameWorkEnumConstant;
//import com.vci.starter.web.annotation.VciEnum;
import com.vci.starter.web.annotation.VciEnum;
import com.vci.starter.web.enumpck.BaseEnum;
import com.vci.web.util.Func;
import java.util.List;
import java.util.Objects;
/**
 * å¯†ç ç­–ç•¥-组合方式类型
 * @author ludc
 * @date 2024/07/09
 */
@VciEnum(name = "combination",text = "组合方式类型",description = "组合方式类型")
public enum CombinationEnum implements BaseEnum {
    /**
     * æ•°å­—
     */
    NUMBER("number","数字"),
    /**
     * å°å†™å­—母
     */
    LOWER("lower","小写字母"),
    /**
     * å¤§å†™å­—母
     */
    UPPER("upper","大写字母"),
    /**
     * ç¬¦å·
     */
    SYMBOL("symbol","符号");
    /**
     * æžšä¸¾çš„值
     */
    private String value;
    /**
     * æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     */
    private String text;
    /**
     * èŽ·å–æžšä¸¾å€¼
     * @return æžšä¸¾å€¼
     */
    @Override
    public String getValue() {
        return value;
    }
    /**
     * èŽ·å–æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     * @return  æ˜¾ç¤ºæ–‡æœ¬
     */
    @Override
    public String getText() {
        return text;
    }
    /**
     * æž„造函数
     * @param value å€¼
     * @param text æ˜¾ç¤ºæ–‡æœ¬
     */
    private CombinationEnum(String value, String text){
        this.value = value;
        this.text = text;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text){
        for(CombinationEnum wenum : CombinationEnum.values()){
            if(wenum.getText().equalsIgnoreCase(text)){
                return wenum.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value){
        for(CombinationEnum wenum : CombinationEnum.values()){
            if(wenum.getValue().equalsIgnoreCase(value)){
                return wenum.getText();
            }
        }
        return "";
    }
    /**
     * èŽ·å–ç»„åˆæ–¹å¼ç±»åž‹æžšä¸¾æ˜¾ç¤ºå€¼ï¼Œå¤šä¸ªæžšä¸¾å€¼ä¸€æ¬¡æ€§è½¬
     * @param values
     * @return
     */
    public static String getCombinationText(String values){
        if(Objects.isNull(values)){
            return "";
        }
        List<String> valueList = Func.toStrList(values);
        StringBuilder sb = new StringBuilder();
        valueList.stream().forEach(item->{
            String text = getTextByValue(item);
            sb.append(text);
            sb.append(",");
        });
        return sb.deleteCharAt(sb.length() - 1).toString();
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyDO.java
@@ -86,7 +86,7 @@
    /**
     * å¯†ç å­—符所需类型
     */
    @Transient
    @Column(name = "PLCHARTYPES")
    private String requireCharType;
    /**
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyForPlatform1.java
@@ -1,8 +1,11 @@
package com.vci.frameworkcore.model;
import com.vci.frameworkcore.constant.FrameWorkBtmTypeConstant;
import com.vci.starter.web.annotation.Column;
import com.vci.starter.web.annotation.VciBtmType;
import com.vci.starter.web.annotation.VciFieldType;
import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
import com.vci.starter.web.enumpck.VciFieldTypeEnum;
import java.util.Date;
@@ -11,90 +14,122 @@
 */
@VciBtmType(name = FrameWorkBtmTypeConstant.SM_PASSWORD_STRATEGY,tableName = "plpasswordstrategy",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
public class SmPasswordStrategyForPlatform1 {
    /**
     * ä¸»é”®
     */
    @Column(name = "pluid")
    private String pluid;
    /**
     * åç§°
     */
    @Column(name = "pname")
    private String pname;
    /**
     * é•¿åº¦
     */
    @Column(range = ">0",name = "plength")
    private Integer plength;
    /**
     * æœ€å¤§é•¿åº¦
     */
    @Column(range = ">0",name = "PLMAXLENGTH")
    private Integer plmaxlength;
    /**
     * æœ‰æ•ˆå¤©æ•°
     */
    @Column(range = ">0",name = "POVERDUEDAY")
    private Integer poverdueday;
    /**
     * æé†’天数
     */
    @Column(range = ">0",name = "PREMINDDAY")
    private Integer premindday;
    /**
     * å¯†ç é‡è¯•次数
     */
    @Column(range = ">0",name = "PRETRYTIME")
    private Integer pretrytime;
    /**
     * é”å®šæ—¶é—´
     */
    @Column(range = ">0",name = "PLOCKTIME")
    private Integer plocktime;
    /**
     * æ˜¯å¦é»˜è®¤
     */
    @Column(name = "PLISDEFAULT")
    private Integer plisdefault;
    /**
     * æè¿°
     */
    @Column(name = "PLDESC")
    private String pldesc;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date plcreatetime;
    @Column(
            nullable = false,
            name = "plcreatetime"
    )
    @VciFieldType(VciFieldTypeEnum.VTDateTime)
    private Long plcreatetime;
    /**
     * åˆ›å»ºäºº
     */
    @Column(
            length = 50,
            nullable = false,
            name = "plcreateuser"
    )
    private String plcreateuser;
    /**
     * æœ€åŽä¿®æ”¹æ—¶é—´
     */
    private Date plupdatetime;
    @Column(
            name = "plupdatetime"
    )
    @VciFieldType(VciFieldTypeEnum.VTDateTime)
    private Long plupdatetime;
    /**
     * æœ€åŽä¿®æ”¹äºº
     */
    @Column(
            length = 50,
            nullable = false,
            name = "plupdateuser"
    )
    private String plupdateuser;
    /**
     * å¯†ç æ‰€éœ€å­—符类型
     */
    private Integer pcharspecies;
    @Column(name = "PLCHARTYPES")
    private Integer plchartypes;
    /**
     * éœ€è¦çš„类型(必填种类字段)
     */
    @Column(name = "PLREQUIREDTYPE")
    private Integer plrequiredtype;
    /**
     * æŽˆæƒè€…
     */
    private String pllicensors;
    /**
     * æœ€å¤§é•¿åº¦
     */
    private Integer plmaxlength;
    /**
     * éœ€è¦çš„类型(必填种类字段)
     */
    private Integer plrequiredtype;
    public String getPluid() {
        return pluid;
@@ -168,11 +203,11 @@
        this.pldesc = pldesc == null ? null : pldesc.trim();
    }
    public Date getPlcreatetime() {
    public Long getPlcreatetime() {
        return plcreatetime;
    }
    public void setPlcreatetime(Date plcreatetime) {
    public void setPlcreatetime(Long plcreatetime) {
        this.plcreatetime = plcreatetime;
    }
@@ -184,11 +219,11 @@
        this.plcreateuser = plcreateuser == null ? null : plcreateuser.trim();
    }
    public Date getPlupdatetime() {
    public Long getPlupdatetime() {
        return plupdatetime;
    }
    public void setPlupdatetime(Date plupdatetime) {
    public void setPlupdatetime(Long plupdatetime) {
        this.plupdatetime = plupdatetime;
    }
@@ -200,12 +235,12 @@
        this.plupdateuser = plupdateuser == null ? null : plupdateuser.trim();
    }
    public Integer getPcharspecies() {
        return pcharspecies;
    public Integer getPlchartypes() {
        return plchartypes;
    }
    public void setPcharspecies(Integer pcharspecies) {
        this.pcharspecies = pcharspecies;
    public void setPlchartypes(Integer pcharspecies) {
        this.plchartypes = pcharspecies;
    }
    public String getPllicensors() {
@@ -248,7 +283,7 @@
                ", plcreateuser='" + plcreateuser + '\'' +
                ", plupdatetime=" + plupdatetime +
                ", plupdateuser='" + plupdateuser + '\'' +
                ", pcharspecies=" + pcharspecies +
                ", plchartypes=" + plchartypes +
                ", pllicensors='" + pllicensors + '\'' +
                ", plmaxlength=" + plmaxlength +
                ", plrequiredtype=" + plrequiredtype +
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/SmPasswordStrategyDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,282 @@
package com.vci.frameworkcore.model.dto;
import com.vci.starter.web.pagemodel.BaseModelVO;
/**
 * å¯†ç å®‰å…¨ç­–略数据传输对象
 * @author ludc
 * @date 2024/7/10 13:01
 */
public class SmPasswordStrategyDTO extends BaseModelVO {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 4615707120594571129L;
    /**
     * æœ€å°é•¿åº¦
     */
    private short minLength;
    /**
     * æœ‰æ•ˆå¤©æ•°
     */
    private short validDay;
    /**
     * æé†’天数
     */
    private short remindDay;
    /**
     * å¯ä»¥é‡è¯•的次数
     */
    private short retryTime;
    /**
     * é”å®šæ—¶é—´
     */
    private short lockTime;
    /**
     * æ˜¯å¦ä¸ºé»˜è®¤
     */
    private Integer defaultFlag;
    /**
     * å¯†ç çš„æœ€å¤§é•¿åº¦
     */
    private short maxLength;
    /**
     * å¯†ç å­—符所需类型
     */
    private short requireCharType;
    /**
     * å¯†ç å­—符所需类型:组合方式显示值
     */
    private String combinations;
    /**
     * å¯†ç æ‰€éœ€å­—符种类个数
     */
    private short requireCharCount;
    /**
     * ç¼–号
     */
    private String id;
    /**
     * åç§°
     */
    private String name;
    /**
     * æè¿°
     */
    private String description;
    public String getCombinations() {
        return combinations;
    }
    public void setCombinations(String combinations) {
        this.combinations = combinations;
    }
    /**
     * èŽ·å– æœ€å°é•¿åº¦
     */
    public short getMinLength (){
        return minLength;
    }
    /**
     * è®¾ç½® æœ€å°é•¿åº¦
     */
    public void setMinLength (short minLength){
        this.minLength = minLength;
    }
    /**
     * èŽ·å– æœ‰æ•ˆå¤©æ•°
     */
    public short getValidDay (){
        return validDay;
    }
    /**
     * è®¾ç½® æœ‰æ•ˆå¤©æ•°
     */
    public void setValidDay (short validDay){
        this.validDay = validDay;
    }
    /**
     * èŽ·å– æé†’天数
     */
    public short getRemindDay (){
        return remindDay;
    }
    /**
     * è®¾ç½® æé†’天数
     */
    public void setRemindDay (short remindDay){
        this.remindDay = remindDay;
    }
    /**
     * èŽ·å– å¯ä»¥é‡è¯•的次数
     */
    public short getRetryTime (){
        return retryTime;
    }
    /**
     * è®¾ç½® å¯ä»¥é‡è¯•的次数
     */
    public void setRetryTime (short retryTime){
        this.retryTime = retryTime;
    }
    /**
     * èŽ·å– é”å®šæ—¶é—´
     */
    public short getLockTime (){
        return lockTime;
    }
    /**
     * è®¾ç½® é”å®šæ—¶é—´
     */
    public void setLockTime (short lockTime){
        this.lockTime = lockTime;
    }
    /**
     * èŽ·å– æ˜¯å¦ä¸ºé»˜è®¤
     */
    public Integer getDefaultFlag (){
        return defaultFlag;
    }
    /**
     * è®¾ç½® æ˜¯å¦ä¸ºé»˜è®¤
     */
    public void setDefaultFlag (Integer defaultFlag){
        this.defaultFlag = defaultFlag;
    }
    /**
     * èŽ·å– å¯†ç çš„æœ€å¤§é•¿åº¦
     */
    public short getMaxLength (){
        return maxLength;
    }
    /**
     * è®¾ç½® å¯†ç çš„æœ€å¤§é•¿åº¦
     */
    public void setMaxLength (short maxLength){
        this.maxLength = maxLength;
    }
    /**
     * èŽ·å– å¯†ç å­—符所需类型
     */
    public short getRequireCharType (){
        return requireCharType;
    }
    /**
     * è®¾ç½® å¯†ç å­—符所需类型
     */
    public void setRequireCharType (short requireCharType){
        this.requireCharType = requireCharType;
    }
    /**
     * èŽ·å– å¯†ç æ‰€éœ€å­—符种类个数
     */
    public short getRequireCharCount (){
        return requireCharCount;
    }
    /**
     * è®¾ç½® å¯†ç æ‰€éœ€å­—符种类个数
     */
    public void setRequireCharCount (short requireCharCount){
        this.requireCharCount = requireCharCount;
    }
    /**
     * èŽ·å– ç¼–号
     */
    @Override
    public String getId (){
        return id;
    }
    /**
     * è®¾ç½® ç¼–号
     */
    @Override
    public void setId (String id){
        this.id = id;
    }
    /**
     * èŽ·å– åç§°
     */
    @Override
    public String getName (){
        return name;
    }
    /**
     * è®¾ç½® åç§°
     */
    @Override
    public void setName (String name){
        this.name = name;
    }
    /**
     * èŽ·å– æè¿°
     */
    @Override
    public String getDescription (){
        return description;
    }
    /**
     * è®¾ç½® æè¿°
     */
    @Override
    public void setDescription (String description){
        this.description = description;
    }
    @Override
    public String toString() {
        return "SmPasswordStrategyDTO{" +
                "minLength='" + minLength +"',"+
                "validDay='" + validDay +"',"+
                "remindDay='" + remindDay +"',"+
                "retryTime='" + retryTime +"',"+
                "lockTime='" + lockTime +"',"+
                "defaultFlag='" + defaultFlag +"',"+
                "maxLength='" + maxLength +"',"+
                "requireCharType='" + requireCharType +"',"+
                "requireCharCount='" + requireCharCount +"',"+
                "id='" + id +"',"+
                "name='" + name +"',"+
                "description='" + description +"',"+
                "}" + super.toString();
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmPasswordStrategyVO.java
@@ -15,47 +15,52 @@
    private static final long serialVersionUID = -389835469056130052L;
    /**
     * æœ€å°é•¿åº¦
     * æœ€å°é•¿åº¦ ï¼šé•¿åº¦ï¼ˆplength)
     */
    private Integer minLength;
    /**
     * æœ‰æ•ˆå¤©æ•°
     * æœ‰æ•ˆå¤©æ•° ï¼šè¿‡æœŸæ—¶é—´ï¼ˆpoverdueday)
     */
    private Integer validDay;
    /**
     * æé†’天数
     * æé†’天数 ï¼ˆpremindday)
     */
    private Integer remindDay;
    /**
     * å¯ä»¥é‡è¯•的次数
     * å¯ä»¥é‡è¯•的次数 ï¼šå¯†ç é‡è¯•次数(pretrytime)
     */
    private Integer retryTime;
    /**
     * é”å®šæ—¶é—´
     * é”å®šæ—¶é—´ ï¼šï¼ˆplocktime)
     */
    private Integer lockTime;
    /**
     * æ˜¯å¦ä¸ºé»˜è®¤
     * æ˜¯å¦ä¸ºé»˜è®¤ ï¼šï¼ˆplisdefault)
     */
    private boolean defaultFlag;
    /**
     * å¯†ç çš„æœ€å¤§é•¿åº¦
     * å¯†ç çš„æœ€å¤§é•¿åº¦ ï¼š æœ€å¤§é•¿åº¦ï¼ˆplmaxlength)
     */
    private Integer maxLength;
    /**
     * å¯†ç å­—符所需类型
     * å¯†ç å­—符所需类型 ï¼šï¼ˆpcharspecies) å­—符类型组合,0x01-数字,0x02-小写字母,0x04-大写字母,0x08-符号
     */
    private String requireCharType;
    /**
     * å¯†ç æ‰€éœ€å­—符种类个数
     * å¯†ç å­—符所需类型:组合方式显示值
     */
    private String requireCharTypeText;
    /**
     * å¯†ç æ‰€éœ€å­—符种类个数 ï¼šï¼ˆplrequiredtype)
     */
    private Integer requireCharCount;
@@ -70,10 +75,6 @@
    public String getLicensors() {
        return licensors;
    }
    public String getRequireCharType() {
        return requireCharType;
    }
    public Integer getRequireCharCount() {
@@ -140,7 +141,7 @@
        this.maxLength = maxLength;
    }
    public String getRequireCharType(Integer plrequiredtype) {
    public String getRequireCharType() {
        return requireCharType;
    }
@@ -148,6 +149,14 @@
        this.requireCharType = requireCharType;
    }
    public String getRequireCharTypeText() {
        return requireCharTypeText;
    }
    public void setRequireCharTypeText(String requireCharTypeText) {
        this.requireCharTypeText = requireCharTypeText;
    }
    @Override
    public String toString() {
        return "SmPasswordStrategyVO{" +