EaiOrderDispatchRule.java 3.91 KB
package com.sitech.ismp.coll.busi.e2e.rule;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;

import com.sitech.ismp.coll.busi.e2e.E2EConstant;
import com.sitech.ismp.coll.busi.e2e.dao.TbE2eCrmOrderDao;
import com.sitech.ismp.coll.busi.e2e.dao.TbE2eEaiOrderExceptDao;
import com.sitech.ismp.coll.busi.e2e.domain.EaiAuditFileTag;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eCrmOrder;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eEaiOrderExcept;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eProcessFinishTag;
import com.sitech.util.Formater;
import com.sitech.util.JSONUtil;

/**
 * EAI数据稽核
 *
 * @author   linxc
 * @version  
 * @since    Ver 1.1
 * @Date	 2012	May 15, 2012		11:14:03 AM
 */
public class EaiOrderDispatchRule extends AnalysisRule {
	TbE2eEaiOrderExceptDao exceptOrderDao;
	TbE2eCrmOrderDao crmOrderDao;
	
	SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	String strDate = sf.format(new Date()); 
	String url;
	EAIServiceStub serivceStub = new EAIServiceStub();

	public EaiOrderDispatchRule(Map<String, String> params) {
		super(params);
		exceptOrderDao = new TbE2eEaiOrderExceptDao(params);
		crmOrderDao = new TbE2eCrmOrderDao(params);
		
		ResourceBundle agentConfig = ResourceBundle.getBundle("e2eMontorConfig");
		url = agentConfig.getString("EAI_URL");
	}

	protected void excute() {
		if(url == null || url.equals("")){
			return;
		}
		
		List<EaiAuditFileTag> eaiAuditFileTag = fileFinishTagdao.selectEaiAuditFileTag(E2EConstant.RULE_TYPE_EAI_AUDIT);

		if (eaiAuditFileTag == null || eaiAuditFileTag.size() == 0) {
			return;
		}
		for (EaiAuditFileTag fileTag : eaiAuditFileTag) {
			TbE2eProcessFinishTag crmProcessTag = new TbE2eProcessFinishTag(
					fileTag.getCRM_ORDER_FILE_ID(), fileTag.getFILE_TIME(),
					E2EConstant.FILE_TYPE_CRM_ORDER,
					E2EConstant.RULE_TYPE_EAI_AUDIT);
			TbE2eProcessFinishTag ibpProcessTag = new TbE2eProcessFinishTag(
					fileTag.getIBP_REC_FILE_ID(), fileTag.getFILE_TIME(),
					E2EConstant.FILE_TYPE_IBP_RECEIVE_ORDER,
					E2EConstant.RULE_TYPE_EAI_AUDIT);

			processTagDao.insertTbE2eProcessFinishTag(crmProcessTag);
			processTagDao.insertTbE2eProcessFinishTag(ibpProcessTag);			
		}		
		
		for (EaiAuditFileTag fileTag : eaiAuditFileTag) {
			List<TbE2eCrmOrder> diffCrmOrder = crmOrderDao
					.selectDiffCrmOrder(fileTag.getFILE_TIME());
			if (diffCrmOrder == null || diffCrmOrder.size() == 0) {
				continue;
			}

			int size = diffCrmOrder.size();
			for (int i = 0; i < size / 10 + 1; i++) {
				List<TbE2eCrmOrder> requestParamList = new ArrayList<TbE2eCrmOrder>();
				for (int j = i * 10; (j < (i + 1) * 10) && (j < size); j++) {
					TbE2eCrmOrder order = diffCrmOrder.get(j);
					requestParamList.add(order);
				}

				List<TbE2eEaiOrderExcept> responseResultList = null;
				try {
					responseResultList = serivceStub.invokeEai(url, strDate,
							requestParamList);
				} catch (Exception e) {
					error.error("Exception while invokeEai", e);
				}

				if (responseResultList == null
						|| responseResultList.size() == 0) {
					continue;
				}

				processKpi(responseResultList);
			}
		}
	}

	private void processKpi(List<TbE2eEaiOrderExcept> result) {
		for (TbE2eEaiOrderExcept eaiOrderExcept : result) {
			String uCrmOrderId = Formater.neatenunitid(eaiOrderExcept
					.getCRM_ORDER_ID());
			String uCrmOrderVersion = Formater.neatenunitid(eaiOrderExcept
					.getVERSION_NUM());

			String unitId = kbpClass + ":" + productType + "-" + uCrmOrderId
					+ "-" + uCrmOrderVersion;
			String kpiId = "PM-02-00-000-03";
			String kpiValue = eaiOrderExcept.getAUDIT_STATUS();

			eaiOrderExcept.setUNIT_ID(unitId);
			eaiOrderExcept.setKPI_ID(kpiId);

			String extEventInfo = JSONUtil.toJSON(eaiOrderExcept);

			if (kpiToEvent(unitId, kpiId, kpiValue, 1, extEventInfo)) {
				exceptOrderDao.insertTbE2eEaiOrderExcept(eaiOrderExcept);
			}
		}
	}
}