package com.steering.pss.sale.order.bomGeneration.daoImp;

import java.sql.Connection;
import java.sql.SQLException;

import com.steering.pss.sale.order.bomGeneration.model.DesignBomEntity;

/**
 * BOM验证数据类
 * 
 * @author Administrator
 * 
 */
public interface BomCheckDaoImp {
	/**
	 * 验证基础物料-电炉是否存在相同记录
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialA(Connection con, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	/**
	 * 验证基础物料-铸造是否存在相同记录
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialB(Connection con, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	/**
	 * 验证基础物料-锻造是否存在相同记录
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialC(Connection con, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	/**
	 * 验证基础物料-轧管是否存在相同记录
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialD(Connection con, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	/**
	 * 验证基础物料-墩拔扩是否存在相同记录
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialE(Connection con, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	/**
	 * 验证基础物料-热处理是否存在相同记录
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialF(Connection con, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	/**
	 * 验证基础物料-加工产出是否存在相同记录
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialI(Connection con, String inMaterialSet,
			String outMaterialNo) throws SQLException;

	/**
	 * 验证基础物料-加工投入是否存在相同记录
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialIn(Connection con, String inMaterialSet,
			String inMaterialNo) throws SQLException;

	/**
	 * 验证是否存在相同BOM
	 * 
	 * @param con
	 * @param bom
	 * @return
	 * @throws SQLException
	 */
	String checkBomCommon(Connection con, DesignBomEntity bom)
			throws SQLException;

	/**
	 * 验证基础物料编码是否重复
	 * 
	 * @param con
	 *            连接字符串
	 * @param materialNo
	 *            物料编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterial(Connection con, String materialNo)
			throws SQLException;

	/**
	 * 验证基础物料-接箍是否存在相同记录
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialJ(Connection con, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	// -------------------投入与产出-产线验证-------------------
	/**
	 * 验证 基础数据-加工投入产出-产线能力
	 * 
	 * @param con
	 *            连接字符串
	 * @param outMaterialNo
	 *            产出物料编码
	 * @param plineCode
	 *            产线编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialIPl(Connection con, String outMaterialNo,
			String plineCode) throws SQLException;

	/**
	 * 验证 基础数据-接箍投入产出-产线能力
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @param plineCode
	 *            产线编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialJPl(Connection con, String inMaterialNo,
			String outMaterialNo, String plineCode) throws SQLException;

	/**
	 * 验证 基础数据-热处理投入产出-产线能力
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @param plineCode
	 *            产线编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialFPl(Connection con, String inMaterialNo,
			String outMaterialNo, String plineCode) throws SQLException;

	/**
	 * 验证 基础数据-墩拔扩投入产出-产线能力
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @param plineCode
	 *            产线编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialEPl(Connection con, String inMaterialNo,
			String outMaterialNo, String plineCode) throws SQLException;

	/**
	 * 验证 基础数据-轧管投入产出-产线能力
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @param plineCode
	 *            产线编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialDPl(Connection con, String inMaterialNo,
			String outMaterialNo, String plineCode) throws SQLException;

	/**
	 * 验证 基础数据-锻造投入产出-产线能力
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @param plineCode
	 *            产线编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialCPl(Connection con, String inMaterialNo,
			String outMaterialNo, String plineCode) throws SQLException;

	/**
	 * 验证 基础数据-铸造投入产出-产线能力
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @param plineCode
	 *            产线编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialBPl(Connection con, String inMaterialNo,
			String outMaterialNo, String plineCode) throws SQLException;

	/**
	 * 验证 基础数据-电炉投入产出-产线能力
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @param plineCode
	 *            产线编码
	 * @return int
	 * @throws SQLException
	 */
	int checkBaseMaterialAPl(Connection con, String inMaterialNo,
			String outMaterialNo, String plineCode) throws SQLException;

	/**
	 * 验证质量设计-合同行生产BOM
	 * 
	 * @param con
	 * @param designKey
	 * @param bom
	 * @return
	 * @throws SQLException
	 */
	int checkSlmOrdLineBom(Connection con, String designKey, String bom)
			throws SQLException;

	/**
	 * 验证质量设计-合同行生产-接箍BOM
	 * 
	 * @param con
	 * @param designKey
	 * @param bom
	 * @param jgCode
	 * @return
	 * @throws SQLException
	 */
	int checkSlmOrdLineBomJG(Connection con, String designKey, String bom,
			String jgCode) throws SQLException;

	boolean checkBomA(Connection con, String bom, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	boolean checkBomB(Connection con, String bom, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	boolean checkBomC(Connection con, String bom, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	boolean checkBomD(Connection con, String bom, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	boolean checkBomE(Connection con, String bom, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	boolean checkBomF(Connection con, String bom, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	boolean checkBomG(Connection con, String bom, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	boolean checkBomI(Connection con, String bom, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	/**
	 * 验证加工基础物料
	 * 
	 * @param con
	 * @param inMaterialNo
	 * @param outMaterialNo
	 * @return
	 * @throws SQLException
	 */
	int checkBaseMaterialK(Connection con, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	boolean checkBomK(Connection con, String bom, String inMaterialNo,
			String outMaterialNo, String groupNum) throws SQLException;

	/**
	 * 验证 基础数据-加工投入产出-产线能力
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @param plineCode
	 *            产线编码
	 * @return int
	 * @throws SQLException
	 */
	public int checkBaseMaterialKPl(Connection con, String inMaterialNo,
			String outMaterialNo, String plineCode) throws SQLException;

	/**
	 * 验证接箍加工基础物料
	 * 
	 * @param con
	 * @param inMaterialNo
	 * @param outMaterialNo
	 * @return
	 * @throws SQLException
	 */
	public int checkBaseMaterialH(Connection con, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	/**
	 * 验证接箍加工BOM
	 * 
	 * @param con
	 * @param bom
	 * @param inMaterialNo
	 * @param outMaterialNo
	 * @return
	 * @throws SQLException
	 */
	public boolean checkBomH(Connection con, String bom, String inMaterialNo,
			String outMaterialNo) throws SQLException;

	/**
	 * 验证 基础数据-接箍加工-产线能力
	 * 
	 * @param con
	 *            连接字符串
	 * @param inMaterialNo
	 *            投入物料编码
	 * @param outMaterialNo
	 *            产出物料编码
	 * @param plineCode
	 *            产线编码
	 * @return int
	 * @throws SQLException
	 */
	public int checkBaseMaterialHPl(Connection con, String inMaterialNo,
			String outMaterialNo, String plineCode) throws SQLException;

	/**
	 * 验证产线
	 * 
	 * @param con
	 * @param plineCode
	 * @param specCode
	 * @param dimater
	 * @param height
	 * @return
	 * @throws SQLException
	 */
	public int checkPlineSpec(Connection con, String plineCode,
			String specCode, String dimater, String height) throws SQLException;

	/**
	 * 查询外径
	 * 
	 * @param con
	 * @param plineCode
	 * @param specCode
	 * @return
	 * @throws SQLException
	 */
	public String[] getSpecDH(Connection con, String specCode)
			throws SQLException;
}
