package cn.net.cpzslibs.prot;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

/**
 * 12.处理冲突
 * 
 * @author zwj
 * 
 *         2014-12-31
 */
public class Prot12SolveConflict extends ProtBase {
	private final short iTaskCode12 = 12;

	/**
	 * 
	 * <p>
	 * 2014-12-31下午1:14:01
	 * </p>
	 * 
	 * @param iRecCount
	 *            处理记录数量
	 * @param ids
	 *            冲突记录idn(需要上传的id号)
	 * @throws IOException
	 */
	public void dealConflict(SocketCreate socketCreate, short iRecCount,
                             long[] ids) throws IOException {

		this.iSendTaskIndex = socketCreate.getiTaskIndex();
		short iStatus = 0x1;
		recProt(socketCreate.getDos(), socketCreate.getDis(), iTaskCode12,
				socketCreate.getiCompanyId(), iStatus, iRecCount, ids);
	}

	/**
	 * 12.处理窜货信息
	 * 
	 * @param dos
	 * @param dis
	 * @param iCompanyId
	 *            企业Id
	 * @param iStatus
	 *            设置状态 0:未处理 1:已处理-----默认为1
	 * @param iRecCount
	 *            处理记录数量
	 * @param ids
	 *            冲突记录idn(需要上传的id号)
	 * @throws IOException
	 */
	private void recProt(DataOutputStream dos, DataInputStream dis,
			short iTaskCode, int iCompanyId, short iStatus, short iRecCount,
			long[] ids) throws IOException {
		sendProt(dos, iTaskCode, iCompanyId, iStatus, iRecCount, ids);
		recHeader(dis);
		recFFFF(dis, iTaskCode);
	}

	/**
	 * 12.处理窜货信息
	 * 
	 * @param dos
	 * @param iRecCount
	 *            处理记录数量
	 * @param iCompanyId
	 *            公司id
	 * @param iStatus
	 *            设置状态 0:未处理 1:处理 默认为：1
	 * @param ids
	 *            序列号
	 * @throws IOException
	 */
	private void sendProt(DataOutputStream dos, short iTaskCode,
			int iCompanyId, short iStatus, short iRecCount, long[] ids)
			throws IOException {

		short bodySize = countBodySize(iCompanyId, iStatus, iRecCount, ids);

		sendHeader(dos, iTaskCode, bodySize);
		sendiCompanyId(dos, iCompanyId);
		dos.writeShort(iStatus);
		dos.writeShort(iRecCount);// 处理记录数量
		for (int i = 0; i < iRecCount; i++) {
			sendiLabel(dos, ids[i]);
		}
		sendCheckCode(dos);
	}
}
