Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
@@ -4,10 +4,7 @@
import com.vci.common.utility.ObjectUtility;
import com.vci.corba.common.PLException;
import com.vci.corba.common.data.UserEntityInfo;
import com.vci.corba.framework.data.DeptInfo;
import com.vci.corba.framework.data.RoleInfo;
import com.vci.corba.framework.data.UserInfo;
import com.vci.corba.framework.data.UserLogonInfo;
import com.vci.corba.framework.data.*;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.corba.omd.etm.EnumItem;
import com.vci.corba.omd.etm.EnumType;
@@ -959,7 +956,7 @@
            tree.setOid(cbo.oid);
            tree.setText(cbo.id + " " + cbo.name);
            Map<String,String> attributeMap = new HashMap<>();
            WebUtil.copyValueToCboFromMap(cbo,attributeMap);
            WebUtil.copyValueToMapFromBos(cbo,attributeMap);
            tree.setAttributes(attributeMap);
            tree.setLeaf(true);
            treeList.add(tree);
@@ -1141,19 +1138,21 @@
      if(StringUtils.isBlank(md5Password) || StringUtils.isBlank(userName)){
         return false;
      }
      String sql = " select plpassword from pluser where plusername = :userName";
      /*String sql = " select plpassword from pluser where plusername = :userName";
      Map<String,String> conditionMap = new HashMap<>();
      conditionMap.put("userName",userName.trim());
      List<BusinessObject> BusinessObjectList = boService.queryBySql(sql, conditionMap);
      if(CollectionUtils.isEmpty(BusinessObjectList)){
      conditionMap.put("userName",userName.trim());*/
      SmUserVO userVO = this.getUserByUserId(userName);
      //List<BusinessObject> BusinessObjectList = boService.queryBySql(sql, conditionMap);
      if(Func.isEmpty(userVO) || Func.isBlank(userVO.getOid())){
         return  false;
      }
      ThreeDES des = new ThreeDES();// 实例化一个对�?
      des.getKey("daliantan0v0");// 生成密匙
      //ThreeDES des = new ThreeDES();// 实例化一个对�?
      //des.getKey("daliantan0v0");// 生成密匙
      //对查询出来的密码解密
      String plpassword = ObjectTool.getNewBOAttributeValue(BusinessObjectList.get(0), "plpassword");
      plpassword = des.getDesString(plpassword);
      //String plpassword = ObjectTool.getNewBOAttributeValue(BusinessObjectList.get(0), "plpassword");
      String plpassword = userVO.getPassword();
      //plpassword = des.getDesString(plpassword);
      if(md5Password.equals(plpassword)){
         return true;
      }
@@ -1456,7 +1455,7 @@
      userInfo.updateUser = user.getLastModifier() == null ? "" : user.getLastModifier();
      userInfo.pwdUpdateTime = user.getPwdUpdateTime().getTime();
      userInfo.grantor = user.getGrantor() == null ? "" : user.getGrantor();
      userInfo.secretGrade = user.getSecretGrade() == null ? 2 : Integer.valueOf(user.getGrantor());
      userInfo.secretGrade = user.getSecretGrade() == null ? 2 : Integer.valueOf(user.getSecretGrade());
      userInfo.isDeptLeader = user.getIsDeptLeader() == null ? "0" : user.getIsDeptLeader();
      return userInfo;
   }
@@ -1671,13 +1670,123 @@
    * @throws VciBaseException
    */
   @Override
   public List<SmUserVO> listUserByUserType() throws PLException {
   public List<SmUserVO> listUserByUserType(Integer type) throws PLException {
      try {
         UserInfo[] userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByType(Short.parseShort(WebUtil.getCurrentUserSessionInfo().getUsertype()));
         UserInfo[] userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByType(type != null ? type.shortValue() :Short.parseShort(WebUtil.getCurrentUserSessionInfo().getUsertype()));
         return userInfoArr2VO(userInfo);
      } catch (PLException e) {
         throw new VciBaseException("登录时,获取用户信息失败:"+e.getMessage());
      }
   }
   /**
    * 导出用户列表三员账号除外
    * @return
    */
   @Override
   public String expUser() throws PLException {
      // 设置表单列名
      List<String> columns = new ArrayList<>(Arrays.asList("姓名, 账号, 状态, 密码策略, 锁定状态, 所属部门, 专业, 角色, 电子邮件, 描述, 部门领导, 密级".split(",")));
      //设置必填列
      ColumnNameisRed.clear();
      ColumnNameisRed.add(0);
      ColumnNameisRed.add(1);
      ColumnNameisRed.add(2);
      //写excel
      String excelPath = LocalFileUtil.getDefaultTempFolder() + File.separator + "userList.xls";
      try {
         new File(excelPath).createNewFile();
      } catch (Throwable e) {
         throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelPath}, e);
      }
      //设置列
      List<WriteExcelData> excelDataList = new ArrayList<>();
      for (int index = 0; index < columns.size(); index++) {
         //判断是否为必填列,给必填列设置颜色
         if(ColumnNameisRed.contains(index)){
            WriteExcelData excelData = new WriteExcelData(0, index, columns.get(index));
            excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
            excelDataList.add(excelData);
         }else{
            excelDataList.add(new WriteExcelData(0,index, columns.get(index)));
         }
      }
      UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoWithOutSanYuan();
      //部门信息集合
      Hashtable<String, String> deptHashTable = new Hashtable<String, String>();
      for(int index = 1; index <= userInfos.length; index++){
         UserInfo userInfo = userInfos[index-1];
         excelDataList.add(new WriteExcelData(index,0, userInfo.trueName));
         excelDataList.add(new WriteExcelData(index,1, userInfo.userName));
         excelDataList.add(new WriteExcelData(index,2, userInfo.status==1 ? "停用":"启用"));
         /**密码策略**/
         PasswordStrategyInfo pwsObj = platformClientUtil.getFrameworkService().fetchPasswordStrategyByUserId(userInfo.id);
         excelDataList.add(new WriteExcelData(index,3, pwsObj.name));
         /**锁定状态**/
         UserLogonInfo lockObj = platformClientUtil.getFrameworkService().fetchUserLogonObj(userInfo.id);
         if (pwsObj != null)
            excelDataList.add(new WriteExcelData(index,4, (pwsObj.retryTime > 0 && lockObj.plWrongNum >= pwsObj.retryTime) ? "锁定" : "未锁定"));
         else
            excelDataList.add(new WriteExcelData(index,4, "未锁定"));
         DeptInfo obj = null;
         RoleInfo[] roles = null;
         String deptName = "";
         obj = platformClientUtil.getFrameworkService().fetchDeptByUserId(userInfo.id);
         if (obj != null){
            if(!deptHashTable.containsKey((obj.id))){
               deptName = getDeptObjectAllByDeptId(obj);
               deptHashTable.put(obj.id, deptName);
            }else{
               deptName = deptHashTable.get(obj.id);
            }
         }
         roles = platformClientUtil.getFrameworkService().fetchRoleInfoByUserId(userInfo.id);
         excelDataList.add(new WriteExcelData(index,5, deptName));
         excelDataList.add(new WriteExcelData(index,6, userInfo.specialties));
         String roleNames = "";
         if (roles.length != 0){
            for(int j = 0 ; j < roles.length ; j ++){
               if (j < roles.length -1){
                  roleNames += roles[j].name + ",";
               }else {
                  roleNames +=  roles[j].name;
               }
            }
         }
         excelDataList.add(new WriteExcelData(index,7, roleNames));
         excelDataList.add(new WriteExcelData(index,8, userInfo.email));
         excelDataList.add(new WriteExcelData(index,9, userInfo.desc));
         excelDataList.add(new WriteExcelData(index,10, userInfo.isDeptLeader.equals("1") ? "是" : "否"));
         String secretGrade = String.valueOf(userInfo.secretGrade);
         try {
            EnumType item = platformClientUtil.getEnumService().getEnumTypeByName(ENUM_USERSECURITYENUM);
            EnumItem[] children = item.items;
            String securityShowName = "";
            for(EnumItem child: children){
               if(child.value.equals(secretGrade)){
                  securityShowName = child.name;
                  break;
               }
            }
            excelDataList.add(new WriteExcelData(index,11, securityShowName));
         } catch (PLException e) {
            e.printStackTrace();
         }
      }
      WriteExcelOption excelOption = new WriteExcelOption(excelDataList);
      ExcelUtil.writeDataToFile(excelPath, excelOption);
      return excelPath;
   }
   //根据子部门查询所属的父类部门,并拼接成字符串形式,返回
   public String getDeptObjectAllByDeptId(DeptInfo obj) throws PLException {
      String fetchDepName = "";
      DeptInfo[] depObjectAll = platformClientUtil.getFrameworkService().fetchDepartmentInfosBySonId(obj.id);
      for(int i=depObjectAll.length-1;i>=0; i--){
         fetchDepName += depObjectAll[i].name+"/";
      }
      if(fetchDepName.length() != 0){
         fetchDepName = fetchDepName.substring(0, fetchDepName.length() - 1);
      }
      return fetchDepName;
   }
}