ludc
2024-10-30 37d730454255d0680c2bc4f1e15dc5cd1a55e6a9
部门分配成员接口和界面传参修改,枚举修改报错修复提交
已修改9个文件
115 ■■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/system/departMent/api.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/department/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
@@ -198,12 +198,12 @@
    /**
     * 修改密码
     * @param userOid 用户主键
     * @param userName 用户主键
     * @param oldPassword 旧的密码
     * @param password 新的密码
     * @param confirmPassword 确认密码
     */
    boolean changePassword(String userOid,String oldPassword, String password, String confirmPassword) throws Exception;
    boolean changePassword(String userName,String oldPassword, String password, String confirmPassword) throws Exception;
    /**
     * 更新用户的密码错误次数
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java
@@ -596,30 +596,11 @@
    @Override
    public boolean saveUsersDept(String[] userOIds, String deptId) throws PLException {
        VciBaseUtil.alertNotNull(deptId,"部门主键");
        //先查重处理
        List<String> repeatUserOidList = new ArrayList<>();
        //循环进行查重,避免in大于1000
        WebUtil.switchCollectionForOracleIn(Arrays.asList(userOIds)).stream().forEach(userOId->{
            String sql = "select pluseruid,pldeptuid from pluserdept where pldeptuid = '" + deptId
                    + "' and " + "pluseruid in ("+WebUtil.toInSql(userOId.toArray(new String[0]))+")";
            List<BusinessObject> cbos = boService.queryBySql(sql, null);
            if(!CollectionUtils.isEmpty(cbos)){
                cbos.stream().forEach(cbo->{
                    repeatUserOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"pluseruid"));
                });
            }
        });
        //从即将要执行保存的用户oid中移除当前用户已经存在关联关系的oid
        //移除重复的
        List<String> tempList = new ArrayList<>(Arrays.asList(userOIds));
        tempList.removeAll(repeatUserOidList);
        userOIds = tempList.toArray(new String[tempList.size()]);
        if(Func.isNotEmpty(userOIds)){
            platformClientUtil.getFrameworkService().saveUserDept(userOIds, deptId,new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(),null));
        }
        return true;
        //为空的话说明是清空当前这个部门下分配的成员
        SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
        UserEntityInfo userEntityInfo = new UserEntityInfo(sessionInfo.getUserId(), null);
        boolean resBoolean = platformClientUtil.getFrameworkService().saveRighForDept(deptId, userOIds, userEntityInfo);
        return resBoolean;
    }
    /**
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
@@ -1,7 +1,10 @@
package com.vci.frameworkcore.compatibility.impl;
import com.vci.client.common.providers.ClientServiceProvider;
import com.vci.corba.framework.data.DeptInfo;
import com.vci.corba.framework.data.RoleInfo;
import com.vci.corba.omd.etm.EnumItem;
import com.vci.corba.omd.etm.EnumType;
import com.vci.dto.SmUserDTO;
import com.vci.common.util.ThreeDES;
import com.vci.corba.common.PLException;
@@ -117,6 +120,11 @@
     * 使用角色查询的时候的查询字段
     */
    public static final String QUERY_FIELD_ROLE = "roleUser.plroleuid";
    /**
     * 密级的枚举key
     */
    private static final String ENUM_USERSECURITYENUM = "usersecurityenum";
    /**
     * 必填列
@@ -317,7 +325,16 @@
        smUserVO.setId(userInfo.userName);
        smUserVO.setName(userInfo.trueName);
        smUserVO.setSecretGrade(userInfo.secretGrade);
        smUserVO.setSecretGradeText(UserSecretEnum.getSecretText(userInfo.secretGrade));
        //密级处理
        String secretGrade = "" + userInfo.secretGrade;
        EnumType item = platformClientUtil.getEnumService().getEnumTypeByName(ENUM_USERSECURITYENUM);
        EnumItem[] children = item.items;
        for(EnumItem child: children){
            if(child.value.equals(secretGrade)){
                smUserVO.setSecretGradeText(child.name);
                break;
            }
        }
        smUserVO.setUserType(String.valueOf(userInfo.userType));
        smUserVO.setUserTypeText(UserTypeEnum.getTextByValue(String.valueOf(userInfo.userType)));
        smUserVO.setDescription(userInfo.desc);
@@ -1115,18 +1132,18 @@
    /**
     * 校验密码是否相同,在新平台中存储的密码是两次md5
     * @param userOid 用户主键
     * @param userName 用户名
     * @param md5Password 已经md5加密一次的密码--老的平台里不能加密
     * @return true 表示相等,false表示不相等
     */
    @Override
    public boolean checkPasswordEqual(String md5Password, String userOid) {
        if(StringUtils.isBlank(md5Password) || StringUtils.isBlank(userOid)){
    public boolean checkPasswordEqual(String md5Password, String userName) {
        if(StringUtils.isBlank(md5Password) || StringUtils.isBlank(userName)){
            return false;
        }
        String sql = " select plpassword from pluser where pluid = :userOid";
        String sql = " select plpassword from pluser where plusername = :userName";
        Map<String,String> conditionMap = new HashMap<>();
        conditionMap.put("userOid",userOid.trim());
        conditionMap.put("userName",userName.trim());
        List<BusinessObject> BusinessObjectList = boService.queryBySql(sql, conditionMap);
        if(CollectionUtils.isEmpty(BusinessObjectList)){
            return  false;
@@ -1193,16 +1210,16 @@
     /**
     * 修改密码
     * @param userOid 用户主键
     * @param userName 用户主键
     * @param oldPassword 旧的密码
     * @param password 新的密码
     * @param confirmPassword 确认密码
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean changePassword(String userOid,String oldPassword, String password,
    public boolean changePassword(String userName,String oldPassword, String password,
            String confirmPassword) throws Exception {
        WebUtil.alertNotNull(userOid,"用户主键",oldPassword,"登录密码",password,"密码",confirmPassword,"确认密码");
        VciBaseUtil.alertNotNull(userName,"用户名",oldPassword,"登录密码",password,"密码",confirmPassword,"确认密码");
        if(!password.equals(confirmPassword)){
            throw new VciBaseException("密码和确认密码不相等");
        }
@@ -1210,39 +1227,25 @@
        oldPassword = Func.decryptAes(oldPassword,"daliantan0v0vcip");
        password = Func.decryptAes(password,"daliantan0v0vcip");
        //对比旧密码
        boolean b = this.checkPasswordEqual(oldPassword, userOid);
        boolean b = this.checkPasswordEqual(oldPassword, userName);
        if(!b){
            throw new PLException("500", new String[] { "您输入的密码与登录密码不一致,请重新输入!"});
        }
        SmUserVO smUserVO = getUserByUserOid(userOid);
        if(Func.isEmpty(smUserVO)){
        UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByUserName(userName);
        if(Func.isEmpty(userInfo) || Func.isBlank(userInfo.id)){
            throw new VciBaseException("当前修改的用户不存在!");
        }
        //TODO:校验密码是否符合策略
        String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(smUserVO.getId(), password,null);
        String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userInfo.id, password,null);
        if (!StringUtils.isBlank(error)) {
            throw new VciBaseException("当前设置的密码,密码策略校验未通过!");
        }
        //TODO:考虑是否需要将修改方式改成直接调用平台的接口,因为现在的修改方式没能正确的更新缓存
        /*UserInfo userInfo = new UserInfo();
        userInfo.id = userOid.trim();
        userInfo.pwd = password;
        userInfo.pwdUpdateTime = System.currentTimeMillis();
        boolean updateBoolean = platformClientUtil.getFrameworkService().updateUser(userInfo, new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(), null));
        return updateBoolean;*/
        ThreeDES des = new ThreeDES();// 实例化一个对�?
        des.getKey("daliantan0v0");// 生成密匙
        String encPassword = des.getEncString(password);
        //修改密码的同时需要将密码修改时间也更新
        String sql = "update pluser set plpassword = '" + encPassword + "', plpwdupdatetime = TO_DATE('"
                + Func.format(new Date(),"yyyy-MM-dd HH:mm:ss") +"','yyyy-MM-dd hh24:mi:ss') where pluid = '" + userOid.trim() + "'";
        try {
            return platformClientUtil.getBOFactoryService().executeUpdateSql(sql);
        } catch (PLException vciError) {
            throw WebUtil.getVciBaseException(vciError);
        }
        return updateBoolean;
    }
    /**
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java
@@ -88,13 +88,13 @@
    public BaseResult saveUsersDepts(String[] userOIds, String deptId){
        //不能同时为空
        if(Func.isEmpty(userOIds) && Func.isBlank(deptId)){
            return BaseResult.fail("角色主键和部门主键,参数不能同时为空!");
            return BaseResult.fail("参数【用户主键】和【部门主键】,不能同时为空!");
        }
        try {
            return deptQueryService.saveUsersDept(userOIds,deptId) ? BaseResult.success("部门分配成功!"):BaseResult.fail("部门分配失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = "关联的部门时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            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
@@ -200,15 +200,15 @@
    /**
     * 修改密码
     * @param userOid 用户主键
     * @param userName 用户名
     * @param password 新密码
     * @param confirmPassword 确认密码
     */
    @RequestMapping(value = "/changePassword",method = RequestMethod.POST)
    @VciUnCheckRight
    public BaseResult changePassword(String userOid,String oldPassword, String password, String confirmPassword) throws PLException {
    public BaseResult changePassword(String userName,String oldPassword, String password, String confirmPassword) throws PLException {
        try {
            return userQueryService.changePassword(userOid, oldPassword, password, confirmPassword) ? BaseResult.success(true,"用户修改成功!"):BaseResult.fail("用户修改失败!");
            return userQueryService.changePassword(userName, oldPassword, password, confirmPassword) ? BaseResult.success(true,"用户修改成功!"):BaseResult.fail("用户修改失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = "修改密码时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java
@@ -326,7 +326,7 @@
        //3、判断密码是否正确
        if (checkPassword) {
            boolean passwordIsEqual = userQueryService.checkPasswordEqual(userDTO.getPassword(), user.getOid());
            boolean passwordIsEqual = userQueryService.checkPasswordEqual(userDTO.getPassword(), user.getName());
            if (!passwordIsEqual) {
                if (logger.isDebugEnabled()) {
                    logger.debug("{}密码不正确", user.getId());
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java
@@ -700,9 +700,8 @@
     */
    private EnumType osEnumDTO2EnumType(OsEnumDTO osEnumDTO){
        EnumType enumType = new EnumType();
        //enumType.oid = osEnumDTO.getOid();
        //枚举名统一转成小写,避免后期出现其他问题
        enumType.name = osEnumDTO.getId().toLowerCase(Locale.ROOT);
        enumType.oid = osEnumDTO.getOid();
        enumType.name = osEnumDTO.getId();//osEnumDTO.getId().toLowerCase(Locale.ROOT);
        enumType.label = osEnumDTO.getName();
        enumType.length = osEnumDTO.getLength();
        enumType.creator = osEnumDTO.getCreator();
Source/plt-web/plt-web-ui/src/api/system/departMent/api.js
@@ -63,7 +63,7 @@
  });
}
// 已选人员查询
// 分配成员
export function saveUsersDepts(params) {
  let formData = new FormData;
  for (let key in params){
Source/plt-web/plt-web-ui/src/views/system/department/index.vue
@@ -338,11 +338,11 @@
    // 分配成员穿梭框回填
    departTransferSend(row) {
      let params = {
        userOids: row.join(','),
        userOIds: row.join(','),
        deptId: this.departCurrenRow.oid
      }
      saveUsersDepts(params).then(res => {
        console.log(res);
        //console.log(res);
        this.$message.success(res.data.obj);
        this.getTableList();
      }).catch(err => {