IbpOrderSendOutSysRule.java 3.28 KB
package com.sitech.ismp.coll.busi.e2e.rule;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.sitech.ismp.coll.busi.e2e.E2EConstant;
import com.sitech.ismp.coll.busi.e2e.dao.TbE2eIbpOrderDao;
import com.sitech.ismp.coll.busi.e2e.dao.TbE2eIbpOrderExceptDao;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eFile2dbFinishTag;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eIbpOrder;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eIbpOrderExcept;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eProcessFinishTag;
import com.sitech.util.Formater;
import com.sitech.util.JSONUtil;

/**
 * IBP发送外围系统分析规则
 * @author huangqj
 * @date 2012-6-28
 */
public class IbpOrderSendOutSysRule extends AnalysisRule{
	private TbE2eIbpOrderExceptDao exceptDao;
	
	public IbpOrderSendOutSysRule(Map<String, String> params) {
		super(params);
		exceptDao = new TbE2eIbpOrderExceptDao(params);
	}
	
	@Override
	protected void excute() {
		logger.info("Begin execute IbpOrderSendOutSysRule...");
		List<TbE2eFile2dbFinishTag> ibpOrderFileList = getTbE2eFile2dbFinishTag(
				E2EConstant.FILE_TYPE_IBP_ORDER,
				E2EConstant.getIbpProcessRule(kbpClass));
		
		if(ibpOrderFileList == null || ibpOrderFileList.size() == 0){
			return;
		}
		
		for (TbE2eFile2dbFinishTag orderFileTag : ibpOrderFileList) {
			process(orderFileTag);
			//入库已处理完毕
			TbE2eProcessFinishTag processTag = new TbE2eProcessFinishTag(orderFileTag, E2EConstant.getIbpProcessRule(kbpClass));
			processTagDao.insertTbE2eProcessFinishTag(processTag);
		}
	}
	
	private void process(TbE2eFile2dbFinishTag orderFileTag) {
		Date fileTime = orderFileTag.getFILE_TIME();
		TbE2eIbpOrderDao orderDao = new TbE2eIbpOrderDao(params);
		List<TbE2eIbpOrder> ibpOrderList = orderDao.selectTbE2eIbpOrder(params,productType, fileTime);
		if (ibpOrderList != null && ibpOrderList.size() != 0) {
			for (TbE2eIbpOrder ibpOrder : ibpOrderList) {
				processKpi(ibpOrder);
			}
		}	
	}
	
	private void processKpi(TbE2eIbpOrder ibpOrder) {
		try{
			String kpiId = "PM-02-00-000-01";
			//UNIT_ID = KBP_CLASS:CRM订单号-CRM订单版本号-P6号-任务号
			String uCrmOrderId = Formater.neatenunitid(ibpOrder.getCUST_ORDER_ID());
			String uCrmOrderVersion = Formater.neatenunitid(ibpOrder.getCRM_VERSION());
			String uP6OrderId = Formater.neatenunitid(ibpOrder.getP6_ID());
			String uTaskId = Formater.neatenunitid(ibpOrder.getTASK_ID());
			String unitId = kbpClass + ":" + productType + "-" + uCrmOrderId + "-"
					+ uCrmOrderVersion + "-" + uP6OrderId + "-" + uTaskId;

			double currTime = new Date().getTime();
			double taskStartTime = ibpOrder.getTASK_START_TIME().getTime();
			Date outTime = ibpOrder.getIBP_SEND_OUTSYS_TIME();
			if (null == outTime) {
				//未发送
				String kpiValue = Double.toString((currTime - taskStartTime) / (60 * 60 * 1000));
				kpiValue = Formater.formatDecimalKpivalue(kpiValue);
				logger.info(unitId + "\t" + kpiId + "\t" +  kpiValue);		
				TbE2eIbpOrderExcept exceptOrder = new TbE2eIbpOrderExcept(ibpOrder, unitId, kpiId, kpiValue);
				String extEventInfo = JSONUtil.toJSON(exceptOrder);
				if(kpiToEvent(unitId, kpiId, kpiValue,1, extEventInfo)){
					exceptDao.insertTbE2eIbpOrderExcept(exceptOrder);
				}
			} 
			
		}catch (Exception e) {
			logger.error("Exception while processKpi", e);
		}
	}
}