package com.jiuqi.mobile.nigo.comeclose.manager.master;
import java.util.List;
import java.util.Set;
import com.jiuqi.mobile.nigo.comeclose.bean.LoadOnGetList;
import com.jiuqi.mobile.nigo.comeclose.bean.app.coop.CooperativeBean;
import com.jiuqi.mobile.nigo.comeclose.bean.app.coop.CrossWorkTeamBean;
import com.jiuqi.mobile.nigo.comeclose.bean.app.coop.WorkTeamBean;
import com.jiuqi.mobile.nigo.comeclose.bean.base.UserBean;
import com.jiuqi.mobile.nigo.comeclose.bean.master.OperateBean;
import com.jiuqi.mobile.nigo.comeclose.bean.master.OrganizationBean;
import com.jiuqi.mobile.nigo.comeclose.exception.NiGoException;
import com.jiuqi.mobile.nigo.comeclose.manager.ISimpleUserManger;
import com.jiuqi.mobile.nigo.comeclose.manager.ManagerAnnotation;
import com.jiuqi.mobile.nigo.comeclose.portal.PortalAnnotation;
import com.jiuqi.mobile.nigo.comeclose.portal.PortalMethodAnnctation;
/**
* 组织机构(包括,行政管理部门和合作社,作业队)
* <p>
* 20130808 作业队、跨区作业队,不在组织机构内部
*
* @author modi
*
*/
@ManagerAnnotation(implClass = "com.jiuqi.mobile.nigo.biz.master.manager.OrganizationManagerImpl")
@PortalAnnotation(implClass = "com.jiuqi.mobile.nigo.biz.portal.OrganizationMangerPortalImpl")
public interface IOrganizationManager extends
ISimpleUserManger<OrganizationBean> {
/**
* 获得根节点
*
* @return
*/
OrganizationBean getRootNode();
/**
* 根据guid获得当前节点
*
* @param guid
* @return
*/
@PortalMethodAnnctation
OrganizationBean find(String guid);
/**
* 获得指定节点所有子节点
*
* @param code
* @return
*/
List<OrganizationBean> getChildrenNodes(String code);
/**
* 获取父节点信息
* @param code
* @return
*/
UserBean getParent(String code);
/**
* 获得指定节点所有子节点,用于全发短信的简单OrganizationBean
*
* @param code
* @return
*/
List<UserBean> getChildrenNodesSimple(String code);
/**
* 获取所有节点
*
* @return
*/
OrganizationBean[] getAllOrganization();
/**
* 插入或修改节点
*
* @param organization
* @throws NiGoException
*/
void put(OrganizationBean organization) throws NiGoException;
/**
* 根据条件查询组织机构信息,可按组织机构名
*/
@PortalMethodAnnctation
LoadOnGetList<OrganizationBean> search(SelectOrganizationKey key);
/**
* @Title: getClildNodes
* @Description: 根据guid查询机构节点
* @param @param guid
* @param @return 设定文件
* @return OrganizationBean[] 返回类型
* @throws
*/
OrganizationBean[] getClildNodes(String guid);
/**
* 跟据多个行政区划的组合条件查询 短信使用 (谨慎)
* @auth lizh
* @Date 2013-12-4上午11:54:43
* @method findCooperByArea
* @fileName ICooperManager
* @package com.jiuqi.mobile.nigo.comeclose.manager.master
* @project comeclose
* @param area
* @return
* @return Set<String>
*/
Set<String> findOganByArea(List<Long> area);
/**
* 完善资料是修改密码,账户别名
* @return
*/
String updateUser(OrganizationBean bean,String password) throws NiGoException;
/**
* 删除节点(谨慎使用)!!!!!!!!!!!!
*
* @param guid
* @throws NiGoException
*/
boolean delete(String guid) throws NiGoException;
// /**
// * 更新组织机构
// * @param organization
// * @param password
// * @throws NiGoException
// */
// public int update(OrganizationBean organization,String password) throws
// NiGoException ;
// /**
// * 创建组织机构
// * @param organization
// * @param password
// * @throws NiGoException
// */
// public void create(OrganizationBean organization,String password) throws
// NiGoException ;
/**
* 插入或修改合作社
*
* @param coooperative
* @throws NiGoException
*/
void put(CooperativeBean coooperative) throws NiGoException;
/**
* 插入或修改跨区作业队
* <p>
* 20130809移动到ICrossWorkManger
*
* @param crossWorkTeam
* @throws NiGoException
*/
@Deprecated
void put(CrossWorkTeamBean crossWorkTeam) throws NiGoException;
/**
* 插入或修改作业队
* <p>
* 20130809移动到IWorkTeamManger
*
* @param workTeam
* @throws NiGoException
*/
@Deprecated
void put(WorkTeamBean workTeam) throws NiGoException;
/**
* 通过名称检索合作社
* <p>
* 20130816 改为search(SelectCooperativeKey key);
*
* @param cooperativeName
* @param adminAreaCode
* @return
*/
@PortalMethodAnnctation
@Deprecated
CooperativeBean[] search(String cooperativeName, long adminAreaCode);
/**
* 通过合作社名称检索合作社
*
* @param key
* @return
*/
@PortalMethodAnnctation
LoadOnGetList<CooperativeBean> search(SelectCooperativeKey key);
/**
* 查询合作社
*
* @param coooperative
* @throws NiGoException
*/
@PortalMethodAnnctation
CooperativeBean findCooperative(String guid);
/**
* 查询跨区作业队
* <p>
* 20130809移动到ICrossWorkManger
*
* @param crossWorkTeam
* @throws NiGoException
*/
@Deprecated
CrossWorkTeamBean findCrossWorkTeam(String guid);
/**
* 查询作业队
* <p>
* 20130809移动到IWorkTeamManger
*
* @param workTeam
* @throws NiGoException
*/
@Deprecated
WorkTeamBean findWorkTeam(String guid);
/**
* @Title: fuzzySearchCroosWorkTeam
* @Description:模糊查询,暂无实现功能
* @param @param searchStr
* @param @return 设定文件
* @return List<CrossWorkTeamBean> 返回类型
* @throws
*/
public abstract List<CrossWorkTeamBean> fuzzySearchCroosWorkTeam(String searchStr);
/**
* @Title: deleteCrossWorkTeam
* @Description: 删除跨区作业队
* @param @param guid 设定文件
* @return void 返回类型
* @throws
*/
public abstract void deleteCrossWorkTeam(String guid);
/**
* @Title: deleteCooperative
* @Description: 删除合作社
* @param @param guid 设定文件
* @return void 返回类型
* @throws
*/
public abstract void deleteCooperative(String guid);
// ========20130809 ADD==============
/**
* 创建或修改操作员
*
* @param operate
* @throws NiGoException
*/
void put(OperateBean operate) throws NiGoException;
/**
* 获得直属组织结构的指定用户类别的用户列表(直属)(可按用户名称模糊查询)
* <p>
* 20130809 转移至IOrganizationManger
*
* @param username
* 用户名称
* @param orgId
* 组织机构ID
* @return
*/
LoadOnGetList<CooperativeBean> searchCooperativesByOrg(String username,
String orgGuid);
}