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;
@@ -1681,5 +1678,115 @@
         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;
   }
}