package com.palmnest.service.estateserve;


import com.palmnest.application.bean.AppResultDto;
import com.palmnest.application.bean.Page;
import com.palmnest.application.dto.input.EnterUpdateInputDto;
import com.palmnest.application.dto.output.EnterEvaluateDto;
import com.palmnest.application.dto.output.EnterPcOutPutDto;
import com.palmnest.application.dto.output.EnterpriseDto;
import com.palmnest.model.*;
import com.palmnest.model.repair.RepairBill;
import com.palmnest.service.GenericManager;

import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

public interface EnterpriseManager extends GenericManager<EnterpriseInfo, Integer> {

	public Page getEnterpriseListByStatus(int status, int pageSize, int pageNo) throws Exception;

	public Page getEnterListByStatus(String floorId, String roomId, String virName, int pageSize, int pageNo) throws Exception;

	public List<RepairBill> getRepaiBillByCodes(String codes) throws Exception;

	//	public Page getEnterListByUser(String virName,int status,int userId,String floorIds,int pageSize,int pageNo,int state,int isHisList)throws Exception;
	public String isHavePower(String userId, int sysCode) throws Exception;

	public AppResultDto updateEnterInfo(EnterWaterRepailInfo enterWaterRepailInfo) throws Exception;

	public Page getEnterHisListByUser(String virName, int status, int userId, String floorIds, int pageSize, int pageNo, int state) throws Exception;

	public EnterpriseDto getEnterInfo(int id, String userId) throws Exception;

	public String getFloorAndRoom(int floorId, int roomId);

	public Map<String, Object> uploadImage(HttpServletRequest request) throws Exception;

	public AppResultDto updateEnterInfoDto(EnterUpdateInputDto enterUpdateInputDto) throws Exception;

	public List<Map<String, Object>> getPower(String floors, int sysCode) throws Exception;

	public List<Map<String, Object>> getPower(int sysCode) throws Exception;

	public String getPowerFloor(int userId, int sysCode) throws Exception;

	public String getPowerFloors(int userId, int sysCode, String orgId) throws Exception;

	public List<Map<String, Object>> getEnterInfoList(int userId, int type, String port, String orgId) throws Exception;

	public EnterpriseAudit saveEnterAudit(String reason, String userId, String enterId, String resonType, String type, String signingTime, String contExpireTime) throws Exception;

	public AppResultDto saveEnterInfo(EnterpriseInfo entInfo, int userId) throws Exception;

	public List<Map<String, Object>> getRepairNumberList(String repairNumbers) throws Exception;

	public AppResultDto getWateSizeListByRooms(String rooms, EnterpriseInfo info) throws Exception;

	public String sendMessageByCusService(EnterpriseInfo entInfo) throws Exception;

	public String getFloorAndRooms(EnterpriseInfo enterInfo) throws Exception;

	public String sendUpdateEnterMessage(EnterpriseInfo entInfo, String pesonId) throws Exception;

	public String sendWechat(String virName, String floorAndRoom, String reason, int state, int status, String wxUserId) throws Exception;

	public Page getEnterListByType(String type, String userId, String virName, int pageSize, int pageNo, int isHisList) throws Exception;

	public EnterPcOutPutDto getEnterInfoByPC(int enterId);

	public String sendWechatByOk(EnterpriseInfo enterInfo, String wxUserId) throws Exception;

	public String setEvaluate(String enterId, String evaluate) throws Exception;

	public EnterEvaluateDto getEnterEvaluateInfo(String enterId, List<Element> eleList) throws Exception;

	public EnterEvaluateDto getEnterEvaluateInfo(String enterId, String type) throws Exception;

	public Page getEnterList(String virName, String type, int pageSize, int pageNo, int isHisList, String orgId) throws Exception;

	public VirArchModel uploadFile(InputStream stream, String fileExt, String fileName, String type, String orgId);

	public List<Map<String, Object>> getFileList(String type, String orgId, String fileIds);

	public Page getEnterList(Map map, int pageNo, int pageSize) throws Exception;

	public void optionEnterpriseInfo(EnterpriseInfo enterpriseInfo);

	/**
	 * 查询项目 入驻/迁出 对应的待处理数量
	 *
	 * @param state  1-入驻 2-迁出
	 * @param orgIds 项目id
	 * @return
	 */
	public Integer getEnterprisePendingNum(int state, String orgIds);
}
