package cn.superdesk.uniorder.dubbo.facade.organisation;

import cn.superdesk.uniorder.common.rest.response.R;
import cn.superdesk.uniorder.common.security.dto.LoginSysUser;
import cn.superdesk.uniorder.dao.entity.organisation.SysEnterprise;
import cn.superdesk.uniorder.dto.param.operationCenter.base.OperationCenterParam;
import cn.superdesk.uniorder.dto.param.organisation.SysEnterpriseParam;
import cn.superdesk.uniorder.dto.param.organisation.SysEnterpriseQueryCriteria;
import cn.superdesk.uniorder.dto.param.organisation.SysVirtQueryParam;
import cn.superdesk.uniorder.dto.vo._function.select.SelectOptionVirt;
import cn.superdesk.uniorder.dto.vo.sys.SysOrganizationXEnterpriseVo;
import cn.superdesk.uniorder.dto.vo.sys.SysSelectVo;
import cn.superdesk.uniorder.dto.vo.sys.SysVirtVo;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;


/**
 * @Description: 有什么不一样呢?
 * DubboSysEnterpriseService
 * DubboEnterpriseService
 * @Author: linjinyu
 * @CreateDate: 7/17/20 3:46 PM
 * @UpdateUser: linjinyu
 * @UpdateDate: 7/17/20 3:46 PM
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public interface DubboSysEnterpriseService {

	/****************************************** extends BaseService 部分 start ******************************************/

	@Deprecated
	void addObj(SysEnterpriseParam param);

	@Deprecated
	void updateObj(SysEnterpriseParam param);

	@Deprecated
	void deleteObj(Long id);
//	void delObj(Long id);

	@Deprecated
	SysEnterprise findById(Long id);

	@Deprecated
	PageInfo<SysEnterprise> findByPaging(Map<String, Object> conditions, Integer pageNun, Integer pageSize);


	List<SysOrganizationXEnterpriseVo> findSysOrganizationXEnterprise(Map<String, Object> queryMap);

	/****************************************** extends BaseService 部分   end ******************************************/


	void addSysEnterprise(SysEnterpriseParam param);

	void updateSysEnterprise(SysEnterpriseParam param);

	void deleteSysEnterprise(Long id);

	SysEnterprise findSysEnterpriseById(Long id);

	@Deprecated
	R<List<SysEnterprise>> pageQuery(Map<String, Object> conditions, int pageNun, int pageSize);

	R<List<SysOrganizationXEnterpriseVo>> pageQuery(SysEnterpriseQueryCriteria queryCriteria, LoginSysUser loginSysUser);


	/****************************************** 之前的 要合并 start ******************************************/


	void add(SysEnterprise t);
//	void addObj(SysEnterprise t);

	void update(SysEnterprise t);
//	void updateObj(SysEnterprise t);


	List<SysEnterprise> findByName(Long orgId, String enterpriseName);

	R<List<SelectOptionVirt>> getVirtSelect(Map<String, Object> params, int pageNum, int pageSize);

	R<List<SelectOptionVirt>> getVirtSelectByOutOrgId(Long outOrgId, int pageNum, int pageSize);

	SysEnterprise findByVirtId(Long id);

	List<SysEnterprise> findByOutVirtIds(List<Long> outVirtIds);

	Map<Long, SysEnterprise> findByOutVirtIdsConvertKV(List<Long> outVirtIds);

	List<String> convertOutVirtIds2VirtNames(List<Long> outVirtIds);

//	SysEnterprise findByVirId(Long virId);

	void addSpecDaiDeLiangHang(Long id);

	void deleteDaiDeLiangHang(Long id);


	void mergeReceiveVirtualarchitecture4SuperdeskMall(String message);

	void deleteReceiveVirtualarchitecture4SuperdeskMall(String message);

	/****************************************** 服务之窗-企业 start ******************************************/

	void mergeReceiveVirtualarchitecture4SuperdeskTransfer(String message);

	void deleteReceiveVirtualarchitecture4SuperdeskTransfer(String message);


	/****************************************** 服务之窗-企业 start ******************************************/

	/****************************************** 之前的 要合并   end ******************************************/

//	void mergeReceiveVirtualarchitecture4SuperdeskTransfer(String message);

//	void deleteReceiveVirtualarchitecture4SuperdeskTransfer(String message);

	/**
	 * 同步集采企业数据
	 * @param message
	 */
	void mergeReceiveVirtualarchitecture4Qchjc(String message);

	R<List<SysVirtVo>> getVirtList(SysVirtQueryParam param);

	List<SysSelectVo> selectList(OperationCenterParam params);


}
