dangsn
2024-12-03 d0ae279ff3b83358d1c07f4481a041c4ad335026
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
ÎļþÃû´Ó Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java ÐÞ¸Ä
@@ -1,30 +1,27 @@
package com.vci.frameworkcore.compatibility.impl;
package com.vci.web.service.impl;
import com.vci.common.util.ThreeDES;
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.omd.data.BusinessObject;
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;
import com.vci.corba.common.data.UserEntityInfo;
import com.vci.corba.framework.data.UserInfo;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
import com.vci.frameworkcore.enumpck.OrgTypeEnum;
import com.vci.enumpck.UI.OrgTypeEnum;
import com.vci.enumpck.UserTypeEnum;
import com.vci.model.SmUserDO;
import com.vci.pagemodel.SmUserVO;
import com.vci.po.SmUserPO;
import com.vci.omd.utils.ObjectTool;
import com.vci.pagemodel.OrgDepartmentVO;
import com.vci.pagemodel.SmPasswordStrategyVO;
import com.vci.pagemodel.SmRoleVO;
import com.vci.frameworkcore.properties.ConfigCorbaReader;
import com.vci.omd.utils.ObjectTool;
import com.vci.pagemodel.SmUserVO;
import com.vci.po.SmUserPO;
import com.vci.properties.OsConfig;
import com.vci.starter.poi.bo.ReadExcelOption;
import com.vci.starter.poi.bo.WriteExcelData;
import com.vci.starter.poi.bo.WriteExcelOption;
@@ -35,10 +32,9 @@
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.*;
import com.vci.starter.web.util.*;
import com.vci.starter.web.util.Lcm.Func;
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
import com.vci.web.enumpck.UserTypeEnum;
import com.vci.web.service.WebBoServiceI;
import com.vci.web.util.Func;
import com.vci.web.service.*;
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.WebUtil;
import org.apache.commons.lang3.StringUtils;
@@ -53,8 +49,6 @@
import java.io.File;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.web.util.WebUtil.arryAndSqlToBusinessObject;
/**
 * ç”¨æˆ·çš„æŸ¥è¯¢ç›¸å…³çš„æœåŠ¡ï¼Œå¯ä»¥å…¼å®¹è€å¹³å°å’Œè€çš„pdm
@@ -94,7 +88,7 @@
    * å¯†ç ç­–略查询服务
    */
   @Autowired
   private SmPwdStrategyQueryServiceI smPwdStrategyQueryService;
   private WebPwdStrategyQueryServiceI smPwdStrategyQueryService;
   /**
    * ä½¿ç”¨è§’色的属性查询用户时
@@ -150,6 +144,11 @@
    * æ—¥å¿—
    */
   private Logger logger = LoggerFactory.getLogger(getClass());
   /**
    * å¹³å°é…ç½®
    */
   private OsConfig osConfig;
   /**
    * æ£€æŸ¥ç”¨æˆ·æ˜¯å¦å­˜åœ¨ï¼Œå¯ä»¥æ ¹æ®ç”¨æˆ·åï¼Œä¹Ÿå¯ä»¥æ ¹æ®ç”¨æˆ·oid
@@ -209,7 +208,7 @@
      try{
         String[][] sqlQueryResult = platformClientUtil.getBOFService().getSqlQueryResult(sql + fromSql, null);
         if(sqlQueryResult.length>0){
            BusinessObject cbo = arryAndSqlToBusinessObject(queryWrapper.getSelectFieldSql(),sqlQueryResult[0]);
            BusinessObject cbo = WebUtil.arryAndSqlToBusinessObject(queryWrapper.getSelectFieldSql(),sqlQueryResult[0]);
            return cbo2VO(cbo);
         }
      }catch (Exception e){
@@ -254,7 +253,7 @@
     * @throws VciBaseException å‚数为空或者数据库存在问题的时候会抛出异常
     */
   @Override
   public List<SmUserVO> listUserByUserIds(Collection<String> userIdCollections)throws VciBaseException {
   public List<SmUserVO> listUserByUserIds(Collection<String> userIdCollections) {
      WebUtil.alertNotNull(userIdCollections,"用户名集合");
      try {
         UserInfo[] userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByNames(VciBaseUtil.collection2StrArr(userIdCollections));
@@ -271,7 +270,7 @@
     * @throws VciBaseException å‚数为空或者数据库存在问题的时候会抛出异常
     */
   @Override
   public SmUserVO getUserByUserOid(String userOid) throws VciBaseException {
   public SmUserVO getUserByUserOid(String userOid) {
      WebUtil.alertNotNull(userOid,"用户主键");
        try {
            UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByoid(userOid);
@@ -288,7 +287,7 @@
     * @throws VciBaseException å‚数为空或者数据库存在问题的时候会抛出异常
     */
   @Override
   public List<SmUserVO> listUserByUserOids(Collection<String> userOidCollections) throws VciBaseException {
   public List<SmUserVO> listUserByUserOids(Collection<String> userOidCollections) {
      WebUtil.alertNotNull(userOidCollections,"用户主键集合");
        try {
            UserInfo[] userInfoArr = platformClientUtil.getFrameworkService().getUserObjectByoids(VciBaseUtil.collection2StrArr(userOidCollections));
@@ -388,7 +387,7 @@
      //专业
      smUserVO.setSpecialties(userInfo.specialties);
      UserLogonInfo lockObj = platformClientUtil.getFrameworkService().fetchUserLogonObj(userInfo.id);
      smUserVO.setLockFlag(lockObj.plWrongNum == 0);
      smUserVO.setLockFlag(lockObj.plWrongNum != 0);
      smUserVO.setCreator(userInfo.createUser);
      smUserVO.setCreateTime(VciDateUtil.long2Date(userInfo.createTime));
      smUserVO.setLastModifier(userInfo.updateUser);
@@ -417,7 +416,7 @@
    */
   private SmUserVO smUserDO2VO(SmUserDO smUserDO){
      SmUserVO smUserVO = new SmUserVO();
      BeanUtil.convert(smUserDO,smUserVO);
      BeanUtilForVCI.convert(smUserDO,smUserVO);
      return smUserVO;
   }
@@ -465,7 +464,7 @@
      }else{
         userDO.setLockFlag(BooleanEnum.TRUE.getValue());
      }
      BeanUtil.convert(userDO,userVO);
      BeanUtilForVCI.convert(userDO,userVO);
      return userVO;
   }
@@ -532,44 +531,49 @@
    * @return
    */
   @Override
   public DataGrid<SmUserVO> getDataGridUsers(Map<String, String> conditionMap, PageHelper pageHelper) throws PLException {
   public DataGrid<SmUserVO> getDataGridUsers(Map<String, String> conditionMap, PageHelper pageHelper) {
      if(pageHelper == null){
         pageHelper = new PageHelper(-1);
      }
      pageHelper.addDefaultAsc("PLTRUENAME");
      String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
      //String loginUserId = "Ludc";
      //分页查询
      UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoByCondition(
            conditionMap.get("name"),
            conditionMap.get("id"),
            conditionMap.get("pkDepartment"),
            conditionMap.get("pkPerson"),
            loginUserId,  //当前登录的用户名
            pageHelper.getPage(),
            pageHelper.getLimit()
      );
      DataGrid<SmUserVO> dataGrid = new DataGrid<>();
      if(Func.isNotEmpty(userInfos)){
         List<String> idList = Arrays.stream(userInfos).map(item -> item.id).collect(Collectors.toList());
         orgDepartmentVOMap = orgDeptQueryService.batchMapDeptNameByUserOids(idList, null);
         smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(idList,null);
         smPwdStrategyVOMap = smPwdStrategyQueryService.batchSmPwdStrategyByUserOids(idList);
         dataGrid.setData(userInfoArr2VO(userInfos));
         //用完了清空
         orgDepartmentVOMap = null;
         smRoleVOMap = null;
         smPwdStrategyVOMap = null;
         //TODO: è¿™ä¸ªç»Ÿè®¡æ€»æ•°æœ‰é—®é¢˜ï¼Œå¸¦è¿‡åŽ»çš„å‚æ•°ä¸èƒ½åƒä¸Šé¢é‚£ä¸ªfetchUserInfoByCondition查询一样统计的却的总数
         dataGrid.setTotal(
               platformClientUtil.getFrameworkService().getUserTotalByCondition(
                  conditionMap.get("name"),
                  conditionMap.get("id"),
                  conditionMap.get("pkDepartment"),
                  conditionMap.get("pkPerson"),
                  loginUserId  //当前登录的用户名
               )
      DataGrid<SmUserVO> dataGrid = null;
      try {
         //String loginUserId = "Ludc";
         //分页查询
         UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoByCondition(
               conditionMap.get("name"),
               conditionMap.get("id"),
               conditionMap.get("pkDepartment"),
               conditionMap.get("pkPerson"),
               loginUserId,  //当前登录的用户名
               pageHelper.getPage(),
               pageHelper.getLimit()
         );
         dataGrid = new DataGrid<>();
         if(Func.isNotEmpty(userInfos)){
            List<String> idList = Arrays.stream(userInfos).map(item -> item.id).collect(Collectors.toList());
            orgDepartmentVOMap = orgDeptQueryService.batchMapDeptNameByUserOids(idList, null);
            smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(idList,null);
            smPwdStrategyVOMap = smPwdStrategyQueryService.batchSmPwdStrategyByUserOids(idList);
            dataGrid.setData(userInfoArr2VO(userInfos));
            //用完了清空
            orgDepartmentVOMap = null;
            smRoleVOMap = null;
            smPwdStrategyVOMap = null;
            //TODO: è¿™ä¸ªç»Ÿè®¡æ€»æ•°æœ‰é—®é¢˜ï¼Œå¸¦è¿‡åŽ»çš„å‚æ•°ä¸èƒ½åƒä¸Šé¢é‚£ä¸ªfetchUserInfoByCondition查询一样统计的却的总数
            dataGrid.setTotal(
                  platformClientUtil.getFrameworkService().getUserTotalByCondition(
                     conditionMap.get("name"),
                     conditionMap.get("id"),
                     conditionMap.get("pkDepartment"),
                     conditionMap.get("pkPerson"),
                     loginUserId  //当前登录的用户名
                  )
            );
         }
      } catch (Exception e) {
         throw new VciBaseException("获取用户列表失败!", new Object[]{}, e);
      }
      return dataGrid;
   }
@@ -625,7 +629,7 @@
    * @throws VciBaseException
    */
   @Override
   public List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException {
   public List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap) {
      //是否查询子部门下关联的用户
      List<OrgDepartmentVO> orgDepartmentVOList = orgDeptQueryService.listAllLevelChildrenDeptByParentOid(deptOid, null);
      List<String> deptOidCollection = orgDepartmentVOList.stream().map(OrgDepartmentVO::getOid).collect(Collectors.toList());
@@ -658,7 +662,7 @@
     * @throws VciBaseException å‚数为空或者查询出错的时候会抛出异常
     */
   @Override
   public List<SmUserVO> listUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException {
   public List<SmUserVO> listUserByDeptOid(String deptOid, Map<String, String> queryMap) {
      //查询当前选中的部门下的用户
      return listUserVOByDeptOid(queryMap,Arrays.asList(deptOid),false );
   }
@@ -671,7 +675,7 @@
    * @throws VciBaseException å‚数为空或者查询出错的时候会抛出异常
    */
   @Override
   public List<SmUserVO> listUserUnInDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException {
   public List<SmUserVO> listUserUnInDeptOid(String deptOid, Map<String, String> queryMap) {
      // TODO:根据当前登录的用户决定能查那些用户
      String userType = "0";//WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUsertype();
      //根据当前登录的用户类型不同,查询不同的用户
@@ -790,7 +794,7 @@
     */
   @Override
   public Map<String, List<SmUserVO>> batchListUserByDeptOids(
         Collection<String> deptOidCollection) throws VciBaseException {
         Collection<String> deptOidCollection) {
      if(CollectionUtils.isEmpty(deptOidCollection)){
         return new HashMap<>();
      }
@@ -810,7 +814,7 @@
     */
   @Override
   public List<SmUserVO> listUserByRoleOid(String roleOid,
         Map<String, String> queryMap) throws VciBaseException {
         Map<String, String> queryMap) {
      return listUserVOByRoleOid(queryMap,roleOid,false);
   }
@@ -823,7 +827,7 @@
     */
   @Override
   public List<SmUserVO> listUserUnInRoleOid(String roleOid,
         Map<String, String> queryMap) throws VciBaseException {
         Map<String, String> queryMap) {
      // TODO:根据当前登录的用户决定能查那些用户
      String usertype = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUsertype();
      //根据当前登录的用户类型不同,查询不同的用户
@@ -882,7 +886,7 @@
     */
   @Override
   public Map<String, List<SmUserVO>> batchListUserByRoleOids(
         Collection<String> roleOidCollection) throws VciBaseException {
         Collection<String> roleOidCollection) {
      if(CollectionUtils.isEmpty(roleOidCollection)){
         return new HashMap<>();
      }
@@ -928,7 +932,7 @@
     */
   @Override
   public DataGrid<SmUserVO> refGridUsers(Map<String, String> queryMap,
         PageHelper pageHelper) throws VciBaseException {
         PageHelper pageHelper) {
      return gridUserByQueryField(null,null,queryMap,pageHelper,false);
   }
@@ -939,8 +943,7 @@
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
   @Override
   public List<Tree> refTreeUsers(TreeQueryObject treeQueryObject)
         throws VciBaseException {
   public List<Tree> refTreeUsers(TreeQueryObject treeQueryObject) {
      VciQueryWrapperForDO queryWrapper = getQueryWrapper(null, null, treeQueryObject.getConditionMap(), null, false);
      queryWrapper.wrapperSql();
      String sql =  queryWrapper.getSelectFieldSql();
@@ -972,7 +975,7 @@
    * @throws VciBaseException
    */
   @Override
   public List<Tree> refPersonOrgTree(TreeQueryObject treeQueryObject) throws VciBaseException {
   public List<Tree> refPersonOrgTree(TreeQueryObject treeQueryObject) {
      List<Tree> rootTreeList=new ArrayList<>();
       Map<String,String> conditionMap=treeQueryObject.getConditionMap();
       if(CollectionUtils.isEmpty(conditionMap)) {
@@ -1254,8 +1257,7 @@
     * @throws VciBaseException å‚数为空或者存储到数据库中出错的时候会抛出异常
     */
   @Override
   public void updateUserPwdWrongCount(String userOid, int wrongCount)
         throws VciBaseException {
   public void updateUserPwdWrongCount(String userOid, int wrongCount){
      WebUtil.alertNotNull(userOid,"用户主键");
      String sql = "update pllogoninfo set plwrongnum = " + wrongCount +" where pluserid ='" + userOid + "'";
      try {
@@ -1271,7 +1273,7 @@
     * @throws VciBaseException å‚数为空的时候会抛出异常
     */
   @Override
   public void updateUserLoginTime(String userOid) throws VciBaseException {
   public void updateUserLoginTime(String userOid) {
      WebUtil.alertNotNull(userOid,"用户主键");
      String sql = "update pllogoninfo set pllogontime = sysdate where pluserid ='" + userOid + "'";
      try {
@@ -1501,8 +1503,7 @@
      // è®¾ç½®è¡¨å•列名
      List<String> columns = new ArrayList<>(Arrays.asList("账号", "密码", "姓名", "电子邮箱", "专业", "描述", "部门(上下级部门之间以反斜杠隔开(/))"));
      //获取是否导出密级配置项
      String flag = ConfigCorbaReader.getConfigValue("exportSecretGrade");
      if (flag != null && flag.equalsIgnoreCase("true")) {
      if (osConfig.isExportSecretGrade()) {
         columns = new ArrayList<>(Arrays.asList("账号", "密码", "姓名", "电子邮箱", "专业", "描述", "部门(上下级部门之间以反斜杠隔开(/))" ,"密级"));
      }
      //设置必填列
@@ -1553,7 +1554,7 @@
         String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
         UserEntityInfo userEntityInfo = new UserEntityInfo(loginUserId,null);
         //是否导入密级配置
         boolean exportSecretGrade = Boolean.parseBoolean(ConfigCorbaReader.getConfigValue("exportSecretGrade"));
         boolean exportSecretGrade = osConfig.isExportSecretGrade();
         List<SmUserPO> poList = ExcelUtil.readDataObjectFromExcel(file, SmUserPO.class,excelOption,(value, po, fieldName)->{
            Integer secretValue = UserSecretEnum.getSecretValueByText(po.getSecretGradeText());
            //是否必须导入密级
@@ -1606,7 +1607,7 @@
         //保存逻辑
         poList.stream().forEach(smUserPO->{
            SmUserDTO smUserDTO = new SmUserDTO();
            BeanUtil.convert(smUserPO,smUserDTO);
            BeanUtilForVCI.convert(smUserPO,smUserDTO);
            //用户信息是否规范检查
            this.check(smUserDTO,true,true);
            //生成存储的DO对象
@@ -1649,7 +1650,7 @@
    * @return
    */
   @Override
   public List<String> queryUserNameByRoleType(String roleType) throws PLException {
   public List<String> queryUserNameByRoleType(String roleType) {
      List<String> userNameList = new ArrayList<>();
      if(Func.isBlank(roleType)){
         return userNameList;
@@ -1664,4 +1665,19 @@
      return userNameList;
   }
   /**
    * ä½¿ç”¨å½“前用户的类型查询用户
    * @return
    * @throws VciBaseException
    */
   @Override
   public List<SmUserVO> listUserByUserType() throws PLException {
      try {
         UserInfo[] userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByType(Short.parseShort(WebUtil.getCurrentUserSessionInfo().getUsertype()));
         return userInfoArr2VO(userInfo);
      } catch (PLException e) {
         throw new VciBaseException("登录时,获取用户信息失败:"+e.getMessage());
      }
   }
}