package com.chinaweal.aiccs.aiccs.market.ai;

import com.chinaweal.aiccs.aiccs.abnormal.entity.EBaseinfo;
import com.chinaweal.aiccs.aiccs.market.entity.AreaSlice;
import com.chinaweal.aiccs.aiccs.market.entity.dto.AssignEntity;
import com.chinaweal.aiccs.aiccs.market.entity.BizOwnerAssign;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException;
import com.vividsolutions.jts.geom.Point;
import org.apache.cxf.Bus;

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

/**
 * 片区认领AI
 * @author <a href="https://blog.lroyia.top">lroyia</a>
 * @since 2021/11/27 19:28
 **/
public interface AreaSliceClaimAI {

    /**
     * 操作人标识
     */
    String OPERATOR = "AreaSliceClaimAI";

    /**
     * 范围内主体认领
     * @param entity    主体信息
     * @param operator  操作人id，没有的话，使用AreaSliceClaimAI
     * @return 认领结果
     * @throws BusinessException 业务异常
     * @author lroyia
     * @since  2021年11月27日 19:31:30
     */
    BizOwnerAssign claimInScope(AssignEntity entity, String operator) throws BusinessException;

    BizOwnerAssign claimByAddress(EBaseinfo each, AreaSlice slice, String orgNumber, String operator) throws BusinessException;

    Map<String, Object> claimByFile(List<Map<String,String>> handleList, AICUser user) throws  BusinessException;

    /**
     * 范围外认领，调整地址坐标
     * @param address  主体地址
     * @param pripid    主体pripid
     * @param sliceId   片区id
     * @param operator  操作人id，没有的话，使用AreaSliceClaimAI
     * @return 认领结果
     * @throws BusinessException 业务异常
     * @author lroyia
     * @since  2021年11月27日 19:36:44
     */
    BizOwnerAssign claimToAreaSlice(String address, String pripid, String sliceId, String operator) throws BusinessException;

    /**
     * 根据地址获取地理位置坐标点
     *
     * @param address 地址
     * @return 地理位置坐标点
     * @throws BusinessException 业务异常
     * @author lroyia
     * @since 2021年11月28日 12:03:34
     */
    Point getPointByAddress(String address) throws BusinessException;
}
