commitfactory.java

来自「电信的网厅的整站代码」· Java 代码 · 共 480 行

JAVA
480
字号
package com.doone.fj1w.fjmgr.order.newphone;

import java.io.IOException;
import java.text.DateFormat;
import java.util.Hashtable;
//import java.util.Iterator;
//import java.util.Map;

import com.doone.iossp.FormBody;
import com.doone.data.DataTable;
import com.doone.util.FileLogger;
import com.doone.fj1w.fjmgr.order.*;
import com.doone.fj1w.fj1w.order.Tf_ProdOrder;
import com.doone.fj1w.fjmgr.order.Bss_infoEntity.*;

/**
 * <strong> 最后的流程提次 </strong>
 * 
 * @author forest
 * 
 */
public class CommitFactory {
	
	private FileLogger _logger = new FileLogger();
	// 客户档案
	private BssReferCustBean _brC = null;
	// 工作流程引晴
	private FlowsEngie _flowEngie = null;
	// 工单构造器
	private Hashtable  _ht        = null;
	// 返回工单结果
	private String[]    _result   = null;
	// 服务性质码
	private String SO_BUSINESSiPROD_ID = "";
	
	public CommitFactory(BssReferCustBean _brC,FlowsEngie _flowEngie){
		this._brC = _brC;
		this._flowEngie = _flowEngie;
		initFlows();
	}
	
	/**
	 * <code>
	 *   主要工作流程
	 * </code>
	 * 
	 */
	private void initFlows(){
		try{
			// 获取申请流水号
			String[] _orderNbr = null;
			try{
				_orderNbr = this._flowEngie.getRecordIDS(ExtraBssParameter.NP_ORDERNBR_PT).split("#-#");
			}catch(RuntimeException rtx){
				throw rtx;
			}
			this._brC.setSOISO_ID(_orderNbr[0]);
			this._brC.setSOiSO_NBR(_orderNbr[1]);
			// 提取格式
			this._ht = getNewPhoneMF();
			// 生成工单
			constractOrder();
			
			// 提交工单
			FormBody _fb = BssInter7.callWebReferSo(_ht,_brC.getCITYCODE());
			_result = new String[4];
			
			_result[0] = _fb.getString("SOiSO_ID");// 申请流水号
			_result[1] = _fb.getString("SOiSO_SEQ");// 申请序列号
			_result[2] = _fb.getString("SOiSO_NBR");// 申请单号
			_result[3] = _fb.getString("SOiAPPL_DATE");// 申请日期
			
		}catch(IOException iox){
			_logger.warn(iox.getMessage(),iox);
			throw new RuntimeException(iox.getMessage());
		}
		
		catch(RuntimeException rux){
			_logger.warn(rux.getMessage(),rux);
			throw new RuntimeException(rux.getMessage());
		}
	}
	
	/**
	 * <code>
	 *   返回工单处理结果 
	 * </code>
	 * 
	 * @return
	 */
	public String[] getResult(){
		return this._result;
	}
	
	/**
	 * <code>构造一张工单</code>
	 * 
	 * @param _po
	 * @param _ht
	 * @throws RuntimeException
	 * 
	 * @see DateFormat#format(java.util.Date)
	 * @see Tf_ProdOrder#
	 * @see Hashtable#put(java.lang.Object, java.lang.Object)
	 * @see PublicMessBean
	 * @see PaymentMeasureBean
	 * @see ServicePropertyBean
	 * @see RemoteControlBean
	 * @see BssAddressBean
	 */
	private void constractOrder() throws RuntimeException {
		
		DateFormat formatter = DateFormat.getDateTimeInstance();
		Tf_ProdOrder _po = _flowEngie.getTf_prodOrder();
		
		// 提交申请信息流水号
		_ht.put("SOiSO_ID",this._brC.getSOISO_ID());
		_ht.put("SOiSO_NBR",this._brC.getSOiSO_NBR());
		// 客户档案信息
		getCustMess(_po, formatter);
		// 预占的号码
		getSelectNbr();
		// 取共公信息中的处理级别等
		getPublicMess();
		// 付费信息
		getChargeMess();
		// 选择service类型信息
		getServiceMess();
		// 程控信息
		getRemoteMess();
		// 地址接入信息
		getAddressMess();
		// 接入终端设备信息
		getTermiProdMess();
		// 提交申请产品(可多条)–服务性质–程控信息-终端设备也要往此处填 A X R
		getProdiMess();
		
//		Iterator _iterator = _ht.entrySet().iterator();
//		while(_iterator.hasNext()){
//			Map.Entry _entry = (Map.Entry)_iterator.next();
//			System.out.println(_entry.getKey()+" = "+_entry.getValue());
//		}
//		
//		System.out.println("----------------------------");
	}
	
	/**
	 * <code>
	 *  提交申请产品(可多条)–服务性质–程控信息-终端设备也要往此处填 A X R
	 * </code>
	 * 
	 * @throws RuntimeException
	 */
	private void getProdiMess()throws RuntimeException{
		
		/** 默认为服务性质编码 */
		String SO_PRODiPROD_ID = this.getSO_BUSINESSiPROD_ID();
		String SO_PRODiPROD_NUM = "1";// 固话默认为1
		String SO_PRODiACTION_TYPE = "1";// 固话默认为1
		
		if(_ht.get("SO_NWKiPROD_ID") != null ){
		/** 程控信息 */
			SO_PRODiPROD_ID  += "【★】" + ((String)_ht.get("SO_NWKiPROD_ID")).trim();
			SO_PRODiPROD_NUM += "【★】" + ((String)_ht.get("SO_NWKiPROD_NUM")).trim();
			SO_PRODiACTION_TYPE += "【★】"+((String)_ht.get("SO_NWKiACTION_TYPE")).trim();
		}
		_ht.put("SO_PRODiPROD_ID",SO_PRODiPROD_ID);
		_ht.put("SO_PRODiPROD_NUM",SO_PRODiPROD_NUM);
		_ht.put("SO_PRODiACTION_TYPE",SO_PRODiACTION_TYPE);
	}
	
	/**
	 * <code>客户base信息</code>
	 * 
	 * @param _po
	 * @param formatter
	 */
	private void getCustMess(Tf_ProdOrder _po, DateFormat formatter) {
		// 客户base信息
		_ht.put("SOiAREA_ID",this._brC.getCUSTiAREA_ID());
		_ht.put("SOiSERV_AREA_ID",this._brC.getCUSTiAREA_ID());
		_ht.put("SOiCUST_ID",this._brC.getCUSTiCUST_ID());
		_ht.put("SOiSUBS_CODE","");// this._brC.getCUSTiCUST_CODE()
		_ht.put("SOiACCEPT_DATE",formatter.format(_po.getAccepttime()));
		_ht.put("CORR_INFOiCONTACT_TYPE",_brC.getCORP_CONTACTiCONTACT_TYPE());
		_ht.put("CORR_INFOiCONTACT_NAME",_brC.getCORP_CONTACTiNAME());
		_ht.put("CORR_INFOiCONTACT_TEL",_brC.getCORP_CONTACTiCONTACT_TEL());
		_ht.put("CORR_INFOiCERT_TYPE",_brC.getCUSTiCERT_TYPE());
		_ht.put("CORR_INFOiCERT_NBR",_brC.getCUSTiCERT_NBR());
	}
	
	/**
	 * <code>
	 *  预占的号码
	 * <code>
	 * @throws RuntimeException
	 */
	private void getSelectNbr()throws RuntimeException{
		
		if(_flowEngie.getRecordFrom(ExtraBssParameter.NP_ABOUTTELE_TBL) != null){
			SelectNbrBean _selctNbr = new SelectNbrBean(); 
			_selctNbr.parseDataTable(_flowEngie.getRecordFrom(ExtraBssParameter.NP_ABOUTTELE_TBL));
			_ht.put("SO_ACC_NBRiACC_NBR",_selctNbr.getSERV_NBRiSERV_NBR_NAME());//
		}
		
	}
	
	/**
	 * <code>
	 *  接入终端设备信息
	 * </code>
	 */
	private void getTermiProdMess() {
		
		if(false && _flowEngie.getRecordFrom(BssParameter.SELECT_DEVICE_TABLE)!= null){
			
			LinkTerminalBean _linkTermi = new LinkTerminalBean();
			_linkTermi.parseDataTable(_flowEngie.getRecordFrom(ExtraBssParameter.SELECT_DEVICE_TABLE));
			_ht.put("SO_ACC_TERMiPROD_ID",_linkTermi.getSERV_ACC_TERMiPROD_ID());
			_ht.put("SO_ACC_TERMiTERM_TYPE","");
			_ht.put("SO_ACC_TERMiPROPERTY",_linkTermi.getSERV_ACC_TERMiPROPERTY());
			_ht.put("SO_ACC_TERMiMTN_GRADE",_linkTermi.getSERV_ACC_TERMiMTN_GRADE());
			_ht.put("SO_ACC_TERMiPROD_COUNT",_linkTermi.getSERV_ACC_TERMiPROD_COUNT());
			_ht.put("SO_ACC_TERMiAPPL_DATE","");
			_ht.put("SO_ACC_TERMiMATURE_DATE","");
			_ht.put("SO_ACC_TERMiPROTOCOL_ID",_linkTermi.getSERV_ACC_TERMiPROTOCOL_ID());
			_ht.put("SO_ACC_TERMiSERIAL_NBR","");
			_ht.put("SO_ACC_TERMiMODEL_NO","");
			_ht.put("SO_ACC_TERMiINSTALL",_linkTermi.getSERV_ACC_TERMiINSTALL());
			_ht.put("SO_ACC_TERMiIS_CERTIF_CHECK","");
			_ht.put("SO_ACC_TERMiCERTIFICATION","");
			_ht.put("SO_ACC_TERMiMAX_SPEED","");
			_ht.put("SO_ACC_TERMiEQPT_IP","");
			_ht.put("SO_ACC_TERMiACTION_TYPE","A");
			
		}
		
	}
	

/**
 * <code>
 *  地址接入信息
 * </code>
 * 
 * @throws RuntimeException
 */
private void getAddressMess() throws RuntimeException {
	if(this._flowEngie.getRecordFrom(ExtraBssParameter.NP_AddRESS_TBL) != null){
		BssAddressBean _bab = new BssAddressBean();   
		_bab.parseDataTable(_flowEngie.getRecordFrom(ExtraBssParameter.NP_AddRESS_TBL));
		
		_ht.put("SO_ACCESSiACCESS_ID",_bab.getSO_ACCESSiACCESS_ID());
		_ht.put("SO_ACCESSiACC_NODE_ID",_bab.getSO_ACCESSiACC_NODE_ID());
		_ht.put("SO_ACCESSiEXCH_ID",_bab.getSO_ACCESSiEXCH_ID());
		_ht.put("SO_ACCESSiADDR_ID",_bab.getSO_ACCESSiADDR_ID());
		_ht.put("SO_ACCESSiREF_TEL_NBR",_bab.getSO_ACCESSiREF_TEL_NBR());
		_ht.put("SO_ACCESSiREF_ADDR_ID","");// _bab.getSO_ACCESSiREF_ADDR_ID()
		_ht.put("SO_ACCESSiACTION_TYPE",_bab.getSO_ACCESSiACTION_TYPE());
		_ht.put("SO_ACC_NBRiEXCH_ID",_bab.getSO_ACCESSiEXCH_ID());
		
		// 局向必传编码
		_ht.put("SO_ACC_NBRiEXCH_ID",_bab.getSO_ACCESSiEXCH_ID());
	}
}

/**
 * <code>
 *   程控信息
 * </code>
 * 
 * @throws RuntimeException
 */
private void getRemoteMess()throws RuntimeException {
	
	if(this._flowEngie.getRecordIDS(ExtraBssParameter.NP_REMOTE_LENGTH_PT) != null){
		int length = 0;
		try{
			length = Integer.parseInt((String)
					_flowEngie.getRecordIDS(ExtraBssParameter.NP_REMOTE_LENGTH_PT));
		}catch(Exception ex){
			length = 0;
		}
		
		String ACC_NBR = "";
		String PROD_NUM = "";
		String PROD_ID = "";
		String PROD_PWD = "";
		String ACTION_TYPE = "";
		
		for(int i= 0; i < length ; i++ ){
			// 获取一条列表数据
			if(_flowEngie.getRecordFrom(ExtraBssParameter.NP_REMOTE_TBL+i)!= null){
				RemoteControlBean _rcBean = new RemoteControlBean();
				try{
					_rcBean.parseDataTable(_flowEngie.getRecordFrom(ExtraBssParameter.NP_REMOTE_TBL+i));
				}catch(Exception ex){
					continue;
				}
				
				ACC_NBR     += _rcBean.getSO_NWKiACC_NBR() + "【★】";
				PROD_NUM    += _rcBean.getSO_NWKiPROD_NUM() + "【★】";
				PROD_ID     += _rcBean.getSO_NWKiPROD_ID() + "【★】";
				PROD_PWD    += _rcBean.getSO_NWKiPROD_PWD() + "【★】";
				ACTION_TYPE += _rcBean.getSO_NWKiACTION_TYPE() + "【★】";
				
			}
		}
		
		_ht.put("SO_NWKiACC_NBR",ACC_NBR);
		_ht.put("SO_NWKiPROD_NUM",PROD_NUM);
		_ht.put("SO_NWKiPROD_ID",PROD_ID);
		_ht.put("SO_NWKiPROD_PWD",PROD_PWD);
		_ht.put("SO_NWKiACTION_TYPE",ACTION_TYPE);
		
	}
}

/**
 * <code>
 *  选择service类型信息
 * </code>
 * 
 * @throws RuntimeException
 */
private void getServiceMess() throws RuntimeException {
	if(this._flowEngie.getRecordFrom(ExtraBssParameter.NP_SERVICE_TBL) != null){
		ServicePropertyBean _serviPB = new ServicePropertyBean();
		_serviPB.parseDataTable(_flowEngie.getRecordFrom(ExtraBssParameter.NP_SERVICE_TBL));
		
		this.setSO_BUSINESSiPROD_ID(_serviPB.getSO_BUSINESSiPROD_ID());
		
		_ht.put("SO_BUSINESSiSECRE_GRADE_ID",_serviPB.getSO_BUSINESSiSECRE_GRADE_ID());
		_ht.put("SO_BUSINESSiLIMIT_DATE",_serviPB.getSO_BUSINESSiLIMIT_DATE());
		_ht.put("SO_BUSINESSiBESP_DATE",_serviPB.getSO_BUSINESSiBESP_DATE());
		_ht.put("SO_BUSINESSiPROD_ID",this.getSO_BUSINESSiPROD_ID());
		_ht.put("CORP_CUSTiCUST_ID",_serviPB.getCORP_CUSTiCUST_ID());
		_ht.put("SO_BUSINESSiACTION_TYPE",_serviPB.getSO_BUSINESSiACTION_TYPE());
		
		// 主产品(服务性质编码)
		_ht.put("PROD_RELAiPROD_ID",this.getSO_BUSINESSiPROD_ID());
		_ht.put("PROD_RELAiPROD_ID2",this.getSO_BUSINESSiPROD_ID());
	}
}

/**
 * <code>
 *   付费信息
 * </code>
 * 
 * @throws RuntimeException
 */
private void getChargeMess() throws RuntimeException {
	if(this._flowEngie.getRecordFrom(ExtraBssParameter.NP_SOLVE_TBL) != null){
		PaymentMeasureBean _payMentM = new PaymentMeasureBean();
		_payMentM.parseDataTable(_flowEngie.getRecordFrom(ExtraBssParameter.NP_SOLVE_TBL));
		
		_ht.put("SO_SERV_ACCTiACCT_ITEM_TYPE_ID",_payMentM.getSO_SERV_ACCTiACCT_ITEM_TYPE_ID());
		_ht.put("SO_SERV_ACCTiACCT_ID",_payMentM.getSO_SERV_ACCTiACCT_ID());
		_ht.put("SO_SERV_ACCTiBILLING_TYPE_ID",_payMentM.getSO_SERV_ACCTiBILLING_TYPE_ID());
		_ht.put("SERV_ACCTiPAY_RATING",_payMentM.getSERV_ACCTiPAY_RATING());
		_ht.put("SO_SERV_ACCTiACTION_TYPE",_payMentM.getSO_SERV_ACCTiACTION_TYPE());
		_ht.put("SERV_NBRiAREA_ID",(String)_ht.get("SOiSERV_AREA_ID"));
	}
}

/**
 * <code>
 *   取共公信息中的处理级别等
 * </code>
 * 
 * @throws RuntimeException
 */
private void getPublicMess() throws RuntimeException {
	if(this._flowEngie.getRecordFrom(ExtraBssParameter.NP_PUBLIER_TBL) != null){
		PublicMessBean _pmb = new PublicMessBean();
		_pmb.parseDataTable(_flowEngie.getRecordFrom(ExtraBssParameter.NP_PUBLIER_TBL));
		
		_ht.put("SOiPRIORITY",_pmb.getPRIORITY());// 处理级别
		_ht.put("SO_ACC_NBRiMAINTAIN_LEVEL",_pmb.getMAINTAIN_LEVEL());// 维护级别
		_ht.put("SO_ACC_NBRiINSTALL_LEVEL",_pmb.getINSTALL_LEVEL());// 安装级别
	}
}

/**
 * <code> 取申请流水号</code>
 * 
 * @throws RuntimeException
 */
public static String[] getOrderNbr(String area_id,String citycode)throws RuntimeException{
	try{
		DataTable _dt = BssInter6.callWebGetSoIDNbr(area_id,citycode);
		if(_dt == null) throw new NullPointerException("取申请流水号失败。");
		
		String SOISO_ID = _dt.getRow(0).getString("SOISO_ID");
		String SOiSO_NBR = _dt.getRow(0).getString("SOiSO_NBR");
		
		return new String[]{SOISO_ID,SOiSO_NBR};
	}catch(IOException iox){
		throw new RuntimeException(iox.getMessage());
	}
}

/**
 * <code>
 *  取一个固话新装默认的格式
 * </code>
 * 
 * @return
 */
private static Hashtable getNewPhoneMF(){
	
	Hashtable _ht = new Hashtable();
	
	// --新装
	_ht.put("SOiSO_TYPE_ID","1");
	_ht.put("SOiSERV_TYPE_ID","1");
	// --优惠类型 装机免材料费优惠[也含普通]
	_ht.put("SOiDISCT_TYPE_ID","QE000450");
	// --发展员工ID
	_ht.put("SOiSTAFF_ID","");
	// --处理级别—普通 加急 特急
	_ht.put("SOiPRIORITY","");
	// --受理来源--
	_ht.put("SOiACCEPT_TYPE","");
	_ht.put("SOiACCEPT_DATE","");
	_ht.put("SOiSTATE","N");
	_ht.put("SOiSERV_SO_NBR","");
	_ht.put("SOiSERV_SO_SEQ","");
	_ht.put("SOiSERV_SO_ID","");
	// --用户唯一识别码,新装宽带和程控变更时需要填写
	_ht.put("SOiSERV_ID","");
	_ht.put("SOiANN_ACT_TYPE","C");
	_ht.put("FLAG1","");
	_ht.put("STAFF_ID","QZ02900");
	_ht.put("SOiPRI_SERV_ID","");
	
	// --查询空闲号 预占先查询业务号段(前台选号)?
	_ht.put("SO_ACC_NBRiNBR_SEQ","1");
	_ht.put("SO_ACC_NBRiSEQ","1");
	_ht.put("SO_ACC_NBRiACC_NBR","");
	
	// --前台选号
	_ht.put("SO_ACC_NBRiIS_CHOSEN","Y");
	_ht.put("SO_ACC_NBRiACC_NBR_AB","");
	
	// --114是否保密
	_ht.put("SO_ACC_NBRiIS_SECRET","Y");
	_ht.put("SERV_ACCESSiACCESS_ID","");
	_ht.put("SO_ACC_NBRiACTION_TYPE","A");
	_ht.put("TEMP_STS_WORDS2","");
	_ht.put("SERV_NBRiSERV_NBR_ID","");
	
// //--提交协议信息
// _ht.put("SO_PROTOCOL_INFOiPROTOCOL_ID","");
// _ht.put("SO_PROTOCOL_INFOiFLAG","");
// _ht.put("SO_PROTOCOL_INFOiLASTED","");
// _ht.put("SO_PROTOCOL_INFOiBEGIN_DATE","");
// _ht.put("SO_PROTOCOL_INFOiEND_DATE","");
// _ht.put("SO_PROTOCOL_INFOiSEQ","");
// _ht.put("SO_PROTOCOL_INFOiACTION_TYPE","");
	
// //--提交优惠协议
// _ht.put("SO_DISCT_PROTOCOLiSEQ","");
// _ht.put("SO_DISCT_PROTOCOLiPRO_MODEL_NODE","");
// _ht.put("SO_DISCT_PROTOCOLiACTION_TYPE","");
	
	
	return _ht;
}

public String getSO_BUSINESSiPROD_ID() {
	return SO_BUSINESSiPROD_ID;
}

private void setSO_BUSINESSiPROD_ID(String siPROD_ID) {
	SO_BUSINESSiPROD_ID = siPROD_ID;
}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?