package com.artfess.uc.dao;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.artfess.uc.model.OrgUser;
/**
*
*
* 描述:用户组织关系 DAO接口
* 构建组:x5-bpmx-platform
* 作者:ray
* 邮箱:zhangyg@jee-soft.cn
* 日期:2016-06-30 10:27:31
* 版权:广州宏天软件有限公司
*
*/
public interface OrgUserDao extends BaseMapper{
/**
*删除所有已逻辑删除的实体(物理删除)
* @param entityId 实体对象ID
*/
Integer removePhysical();
/**
*
* @param id
* @param relId
* @return
*/
int updateUserPost(@Param("id") String id,@Param("relId") String relId,@Param("updateTime")LocalDateTime updateTime);
/**
*
* @param orgId
* @param userId
* @return
*/
int removeByOrgIdUserId(@Param("orgId") String orgId,@Param("userId") String userId,@Param("updateTime")LocalDateTime updateTime);
/**
* 获取指定用户的主岗位/主组织
* 按照默认维度主岗位、主组织的优先级排序
* @param userId
* @return
*/
List getMainPostOrOrgByUserId(String userId);
/**
* 获取用户的主岗位组织关系
* @return
*/
List getOrgUserMaster(@Param("userId") String userId,@Param("demId") String demId);
/**
* 设置主部门
* @param id
* @return
*/
boolean setMaster(@Param("id") String id);
/**
* 取消主部门。
* @param userId
* @param demId
* @return
*/
boolean cancelUserMasterOrg(@Param("userId") String userId,@Param("demId") String demId,@Param("updateTime")LocalDateTime updateTime);
/**
* 根据用户ID取消用户主部门。
* @param userId
* @return
*/
boolean cancelUserMasterOrgByUserId(@Param("userId") String userId,@Param("updateTime")LocalDateTime updateTime);
/**
* 根据组织和关系id获取用户列表。
* @param convert2iPage
* @param queryFilter
* @return
*/
@SuppressWarnings("rawtypes")
IPage> getUserByGroup(IPage convert2iPage,@Param(Constants.WRAPPER) Wrapper wrapper);
/**
* 根据组织id查询组织下面的人员数量
* @param params
* @return
*/
List getUserNumByOrgId(Map params) ;
List getUserNumByOrgCode(Map params);
/**
* 根据用户ids删除该用户的组织
* @param ids
*/
void removeByUserId(@Param("userId") String userId,@Param("updateTime")LocalDateTime updateTime);
/**
* 取消orgId部门的主负责人
* @param orgId
*/
void updateCancleMainCharge(@Param("orgId") String orgId,@Param("updateTime")LocalDateTime updateTime);
/**
* 根据组织ID获取组织的负责人组织关系
* @param orgId 组织ID
* @param isMain 是否获取主负责人
* @return
*/
public List getChargesByOrgId(@Param("orgId") String orgId,@Param("isMain") Integer isMain);
/**
* 根据组织id删除组织人员关系
* 将删除本组织及其子组织下的人员关系
* @param orgIds
*/
void delByOrgId(@Param("orgId") String orgId,@Param("updateTime")LocalDateTime updateTime);
/**
* 获取组织人员关系
* map中可以传orgId,userId,relId(岗位id),isMaster,isCharge
* @param map
* @return
*/
List getByParms(Map map);
/**
* 获取组织人员关系
* map中可以传orgId,userId,relId(岗位id),isMaster,isCharge
* @param map
* @return
*/
List queryParms(Map map);
/**
* 根据组织编码、角色编码获取
* @param orgCode
* @param roleCode
* @return
*/
List getByOrgCodeAndroleCode(@Param("orgCode") String orgCode,@Param("roleCode") String roleCode);
/**
* 根据组织编码、岗位编码获取
* @param orgCode
* @param roleCode
* @return
*/
List getByPostCodeAndOrgCode(@Param("orgCode") String orgCode,@Param("postCode") String postCode);
/**
* 设置人员主岗位
* @param id
*/
void updateUserMasterOrg(@Param("id") String id,@Param("updateTime")LocalDateTime updateTime);
/**
* 将部门的主负责人取消, 设置为负责人
* @param orgId
*/
void cancleMainCharge(@Param("orgId") String orgId,@Param("updateTime")LocalDateTime updateTime);
/**
* 通过用户账号获取其所属组织和岗位(包括逻辑删除的数据)
* @param account
* @return
*/
List getByAccount(String account);
/**
* 检查岗位是否在设置的有效期内
* @param updateTime
* @param endDate
*/
void checkIsInActiveTime(@Param("startDate")LocalDateTime startDate,@Param("endDate")LocalDateTime endDate);
/**
* 根据组织获取相关数据列表。
* @param queryFilter
* @return
*/
@SuppressWarnings("rawtypes")
List getOrgUserData(@Param(Constants.WRAPPER)Wrapper wrapper) ;
/**
* 获取组织用户
* @param convert2iPage
* @param queryFilter
* @return
*/
@SuppressWarnings("rawtypes")
IPage getUserOrgPage(IPage convert2iPage,@Param(Constants.WRAPPER) Wrapper wrapper);
/**
* 根据组织id和用户id删除组织下的用户,并岗位id为空
* @param params
*/
void deleteOrgById(Map params);
/**
* 更新岗位下用户的所属组织id
* @param postId
* @param orgId
*/
void updateUserOrgByPostId(@Param("postId") String postId,@Param("orgId")String orgId);
/**
* 获取用户id岗位总数
* @param wrapper
* @return
*/
List getUserByGroupList(@Param(Constants.WRAPPER)Wrapper wrapper);
/**
* 根据用户id删除用户的组织、岗位信息
* @param userId
*/
void delByUserId(@Param("userId") String userId);
/**
* 批量插入
* @param list
* @return
*/
boolean insertBatch(@Param("list")List list);
/**
* 删除多余用户和组织的关系数据(导入时导致的)
*/
void removeMores();
/**
* 根据用户Id 查询出用户的职务和岗位数据
* @param userId 用户Id
* @return
*/
List getListPostAndJob(String userId);
}