package cn.net.cpzslibs.prot.handset;

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

import cn.net.cpzslibs.prot.ProtBase;
import cn.net.cpzslibs.prot.SocketCreate;

public class Prot05SetArea extends ProtBase {
	private final short iTaskCode = 5;

	/**
	 * 5.设置销售区域
	 * 
	 * @author zwj<br/>
	 *         2015-5-2 下午10:22:51<br/>
	 * @param create
	 * @param iFirstLabel 设置销售区域的label
	 * @param iAreaCode 销售区域
	 * @throws IOException
	 */
	public void dealSetAreaCode(SocketCreate create, long iFirstLabel,
                                int iAreaCode) throws IOException {
		this.iSendTaskIndex = create.getiTaskIndex();
		long iLastLabel = 0L;
		recProt(create.getDos(), create.getDis(), iTaskCode, iFirstLabel,
				iLastLabel, iAreaCode);
	}

	/**
	 * 5.设置销售区域
	 * 
	 * @param dos
	 * @param dis
	 * @param iFirstLabel
	 *            第一个标签
	 * @param iLastLabel
	 *            第二标忽略掉
	 * @param iAreaCode
	 * @throws IOException
	 */
	private void recProt(DataOutputStream dos, DataInputStream dis,
			short iTaskCode, long iFirstLabel, long iLastLabel, int iAreaCode)
			throws IOException {
		if (iAreaCode <= 0) {
			errLog(iTaskCode, "错误:销售区域码" + iAreaCode);
			return;
		}
		sendProt(dos, iTaskCode, iFirstLabel, iLastLabel, iAreaCode);
		recHeader(dis);
		recFFFF(dis, iTaskCode);
	}

	/**
	 * 5. 基于标签号配置销售区域
	 * 
	 * @param dos
	 * @param iFirstLabel
	 *            开始标签号（包括）
	 * @param iLastLabel
	 *            结束标签号（包括）
	 * @param iAreaCode
	 *            销售区域，取值参考区域定义 这里把大数量的上传，分成2000每个每个上传
	 * @throws IOException
	 */
	private void sendProt(DataOutputStream dos, short iTaskCode,
			long iFirstLabel, long iLastLabel, int iAreaCode)
			throws IOException {
		short bodySize = countBodySize(iFirstLabel, iLastLabel, iAreaCode);
		sendHeader(dos, iTaskCode, bodySize);
		sendiLabel(dos, iFirstLabel);
		sendiLabel(dos, iLastLabel);
		sendiAreaCode(dos, iAreaCode);
		sendCheckCode(dos);
	}
}
