package com.unis.detectionnum.server.dao;

import com.unis.detectionnum.common.vo.GetXYVO;
import com.unis.detectionnum.common.vo.ScanPointsQueryVO;
import com.unis.detectionnum.server.entity.GetXYDO;
import com.unis.detectionnum.server.entity.ScanPointsDO;
import org.springframework.stereotype.Repository;

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

@Repository
public interface ScanPointsDao {
    int deleteByPrimaryKey(Integer id);

    int insert(ScanPointsDO record);

    int insertSelective(ScanPointsDO record);

    ScanPointsDO selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(ScanPointsDO record);

    int updateByPrimaryKey(ScanPointsDO record);

    //批量插入
    void insertPointsList(List<ScanPointsDO> sScanPointsList);

	List<ScanPointsDO> selectByParams(ScanPointsQueryVO pointsQueryVO);
	
	List<ScanPointsDO> selectByOperateId(Map<String, Object> map);

	List<ScanPointsDO> selectByOperateIdCopy(Map<String, Object> map);

	//插入 x y
    void insertPointsXOrY(List<GetXYVO> scanPointsDOs);
	//插入 x y
    void insertPointsXOrY2(List<GetXYVO> scanPointsDOs);

    //根据 x，y 添加z
    void updateZ(GetXYVO getXYVO);

    void updateZ2(GetXYVO getXYVO);

    //没有z的数据
    List<GetXYDO> getXYListByZ(String operateId);

    String getOperateId(String sbCode);

    List<GetXYDO> getNoZList(String operateId);

    List<GetXYDO> getNoZList2(String operateId);

    String getSbCodeByBh(String cfbh);

    List<GetXYVO> getNotZList();

    //查询operateid为最后一条的z值集合
    double getFinalAvgZ(HashMap<String, Object> map);

    double getFinalAvgZCopy(HashMap<String, Object> map);
    //查询operateid为倒数第二条的z值集合
    double getPenultAvgZ(HashMap<String, Object> map);

    double getPenultAvgZCopy(HashMap<String, Object> map);

    //根据设备sbcode 查找 密度
    double getDensity(String sbCode);

    double getCfExtent(String sbCode);

    double getCfWide(String sbCode);

    double getCfGd(String sbCode);

    GetXYDO getRadian(GetXYVO getXYVO);

    double getPointsMaxZ(String operateId);

    List<Map<String,Object>> getCfdata(String sbCode);

    void insertPointsXOrYone(GetXYVO getXYVO);

    //根据 x，y 添加z删除
    void deleteByXYP(String id);

    void deleteByXYP2(String id);

    void deleteByoperateId(String operateId);

    //查询operateid为最后一条的z值集合
    double getFinalAvgZz(HashMap<String, Object> map);

    double selectByoperateIdMax(String operateId);

    Integer getByOperateIdCOUNT(HashMap<String, Object> map);

    Integer getByOperateIdCOUNTCopy(HashMap<String, Object> map);
}