ludc
2024-07-04 8c4b79d994c5a95dd33d4b0313e2f2d63985e074
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java
@@ -1,22 +1,20 @@
package com.vci.frameworkcore.compatibility.impl;
import com.vci.corba.common.PLException;
import com.vci.corba.common.data.UserEntityInfo;
import com.vci.corba.framework.data.DeptInfo;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
import com.vci.frameworkcore.model.dto.OrgDepartmentDTO;
import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
import com.vci.frameworkcore.model.OrgDeptForPlatform1;
import com.vci.frameworkcore.model.SmRoleForPlatform1;
import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
import com.vci.frameworkcore.pagemodel.SmRoleVO;
import com.vci.omd.utils.ObjectTool;
import com.vci.starter.revision.bo.TreeWrapperOptions;
import com.vci.starter.revision.service.RevisionModelUtil;
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;
import com.vci.starter.web.pagemodel.Tree;
import com.vci.starter.web.pagemodel.TreeQueryObject;
import com.vci.starter.web.pagemodel.*;
import com.vci.starter.web.util.BeanUtil;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
@@ -67,13 +65,38 @@
     * @throws VciBaseException 参数为空或者数据库存在问题的时候会抛出异常
     */
   @Override
   public OrgDepartmentVO getDeptByDeptOid(String deptOid)
         throws VciBaseException {
   public OrgDepartmentVO getDeptByDeptOid(String deptOid) throws VciBaseException {
      if(StringUtils.isBlank(deptOid)){
         return null;
      }
      OrgDeptForPlatform1 deptForPlatform1 = boService.selectByOid(deptOid, OrgDeptForPlatform1.class);
      return deptDO2VO(deptForPlatform1);
   }
   /**
    * 根据父部门主键获取和部门名称部门的信息
    * @param parentDeptOid 父部门主键
    * @param conditionMap 部门名称
    * @return 部门的显示对象,如果部门不存在则返回null,不会抛出异常
    * @throws VciBaseException 参数为空或者数据库存在问题的时候会抛出异常
    */
   @Override
   public OrgDepartmentVO getDeptByDeptPOidAndCondition(String parentDeptOid,Map<String,String> conditionMap) throws VciBaseException {
      if(Func.isEmpty(conditionMap)){
         conditionMap = new HashMap();
      }
      VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(new HashMap<>(),OrgDeptForPlatform1.class);
      //父主键为空查顶层
      if(Func.isBlank(parentDeptOid)){
         queryWrapper.isNull("plparentuid");
      }else{
         queryWrapper.eq("plparentuid",parentDeptOid);
      }
      List<OrgDeptForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, OrgDeptForPlatform1.class);
      if(Func.isEmpty(roleForPlatform1s)){
         return null;
      }
      return deptDO2VO(roleForPlatform1s.get(0));
   }
   /**
@@ -137,7 +160,7 @@
            depts.addAll(roleForPlatform1s);
         }
      });
      return    deptDO2VOs(depts);
      return deptDO2VOs(depts);
   }
   /**
@@ -153,6 +176,7 @@
      if(pageHelper == null){
         pageHelper = new PageHelper(-1);
      }
      //根据部门编号排序
      pageHelper.addDefaultAsc("plnum");
      VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(queryMap,OrgDeptForPlatform1.class,pageHelper);
      List<OrgDeptForPlatform1> deptForPlatform1s = boService.selectByQueryWrapper(queryWrapper, OrgDeptForPlatform1.class);
@@ -432,9 +456,6 @@
   @Override
   @Transactional(rollbackFor = Exception.class)
   public boolean saveUsersDept(String[] userOIds, String deptId) throws PLException {
      if(Func.isEmpty(userOIds) || Func.isBlank(deptId)){
         return false;
      }
      //先进性查重处理
      List<String> repeatUserOidList = new ArrayList<>();
      //循环进行查重,避免in大于1000
@@ -461,6 +482,110 @@
   }
   /**
    * 增加部门信息
    * @param orgDepartmentDTO
    * @return
    */
   @Override
   public boolean addDept(OrgDepartmentDTO orgDepartmentDTO) throws PLException {
      //判空
      VciBaseUtil.alertNotNull(
            orgDepartmentDTO,"添加的部门对象",
            orgDepartmentDTO.getName(),"部门名");
      //部门名判重
      Map<String, String> conditionMap = new HashMap<>();
      conditionMap.put("plname",orgDepartmentDTO.getName());
      conditionMap.put("plnum",QueryOptionConstant.OR + orgDepartmentDTO.getId());
      OrgDepartmentVO departmentVO = getDeptByDeptPOidAndCondition(orgDepartmentDTO.getPkFatherDepartment(), conditionMap);
      if(Func.isNotEmpty(departmentVO)){
         throw new VciBaseException("同一父节点下该部门名称或编号已经存在,请修改!");
      }
      //SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
      String userId = "developer";//loginUser.getUserId();
      //生成存储的corba对象
      orgDepartmentDTO.setCreateTime(new Date());
      orgDepartmentDTO.setCreator(userId);
      orgDepartmentDTO.setLastModifier(userId);
      orgDepartmentDTO.setStatus((short) 0);
      DeptInfo deptInfo = changeOrgDeptDTOToDeptInfo(orgDepartmentDTO);
      UserEntityInfo userEntityInfo = new UserEntityInfo(userId, "");
      String oid = platformClientUtil.getFrameworkService().saveDepartment(deptInfo, userEntityInfo);
      if (Func.isEmpty(oid)) {
         return false;
      }
      return true;
   }
   /**
    * 修改部门信息
    * @param orgDepartmentDTO
    * @return
    */
   @Override
   public boolean updateDept(OrgDepartmentDTO orgDepartmentDTO) throws PLException {
      //判空
      VciBaseUtil.alertNotNull(
            orgDepartmentDTO,"修改的部门对象",
            orgDepartmentDTO.getOid(),"用户主键",
            orgDepartmentDTO.getId(),"用户名"
      );
      //按oid查询数据库中已存在的
      OrgDepartmentVO departmentVO = getDeptByDeptOid(orgDepartmentDTO.getOid());
      //根据主键没查询到
      OrgDepartmentDTO orgDepartmentDTO1 = new OrgDepartmentDTO();
      //默认属性给赋值上
      //BeanUtil.convert(departmentVO,orgDepartmentDTO1);
      Func.copy(departmentVO,orgDepartmentDTO);
      //orgDepartmentDTO1.setName(orgDepartmentDTO.getName());
      //orgDepartmentDTO1.setCode(orgDepartmentDTO.getCode());
      //orgDepartmentDTO1.setDescription(orgDepartmentDTO.getDescription());
      String loginUserId = "developer";//WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
      orgDepartmentDTO1.setLastModifier(loginUserId);
      DeptInfo deptInfo = changeOrgDeptDTOToDeptInfo(orgDepartmentDTO1);
      boolean updateBoolean = platformClientUtil.getFrameworkService().updateDepartment(deptInfo, new UserEntityInfo(loginUserId, null));
      return updateBoolean;
   }
   /**
    * Dto对象转corb对象
    * @param orgDepartmentDTO
    * @return
    */
   public DeptInfo changeOrgDeptDTOToDeptInfo(OrgDepartmentDTO orgDepartmentDTO) {
      DeptInfo departmentInfo = new DeptInfo();
      departmentInfo.id = orgDepartmentDTO.getOid() == null ? "" : orgDepartmentDTO.getOid();
      departmentInfo.name = orgDepartmentDTO.getName() == null ? "" : orgDepartmentDTO.getName();
      departmentInfo.num = orgDepartmentDTO.getId() == null ? "" : orgDepartmentDTO.getId();
      departmentInfo.code = orgDepartmentDTO.getCode() == null ? "" : orgDepartmentDTO.getCode();
      departmentInfo.specialties = orgDepartmentDTO.getSpecialties() == null ? "" : orgDepartmentDTO.getSpecialties();
      departmentInfo.status = orgDepartmentDTO.getStatus() == 0 ? 0 : orgDepartmentDTO.getStatus();
      departmentInfo.description = orgDepartmentDTO.getDescription() == null ? "" : orgDepartmentDTO.getDescription();
      departmentInfo.parentId = orgDepartmentDTO.getPkFatherDepartment() == null ? "" : orgDepartmentDTO.getPkFatherDepartment();
      departmentInfo.createUser = orgDepartmentDTO.getCreator() == null ? "" : orgDepartmentDTO.getCreator();
      departmentInfo.createTime = orgDepartmentDTO.getCreateTime().getTime();
      departmentInfo.updateTime = System.currentTimeMillis();
      departmentInfo.updateUser = orgDepartmentDTO.getLastModifier() == null ? "" : orgDepartmentDTO.getLastModifier();
      //departmentInfo.grantor = orgDepartmentDTO.getGrantor() == null ? "" : orgDepartmentDTO.getGrantor();
      return departmentInfo;
   }
   /**
    * 删除部门
    * @param ids
    * @return
    */
   @Override
   public boolean deleteDept(String[] ids) throws PLException {
      VciBaseUtil.alertNotNull(ids,"要删除的部门主键");
      //具备连带删除的功能,如角色菜单授权表里面的授权信息
      return platformClientUtil.getFrameworkService().deleteDepartment(
            ids,
            new UserEntityInfo("developer"/*WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId()*/, null)
      );
   }
   /**
    * 获取所有部门的信息
    * @return key:部门由名称组成的路径(/间隔),value对应最小层级的部门信息
    */