KxOrderResourceBuildRule.java 3.04 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.TbE2eKxOrderDao;
import com.sitech.ismp.coll.busi.e2e.dao.TbE2eKxOrderExceptDao;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eFile2dbFinishTag;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eOneStopKxOrder;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eOneStopKxOrderExcept;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eProcessFinishTag;
import com.sitech.util.Formater;
import com.sitech.util.JSONUtil;

/**
 * 资源建设
 * @author huangqj
 * @date 2012-10-30
 */
public class KxOrderResourceBuildRule extends AnalysisRule {
	private TbE2eKxOrderExceptDao exceptDao;
	private TbE2eKxOrderDao orderDao;
	
	public KxOrderResourceBuildRule(Map<String, String> params) {
		super(params);
		exceptDao = new TbE2eKxOrderExceptDao(params);
		orderDao = new TbE2eKxOrderDao(params);
	}

	protected void excute() {
		//已经入库,但未分析的客响数据文件
		List<TbE2eFile2dbFinishTag> kxOrderFileList = getTbE2eFile2dbFinishTag(
				E2EConstant.FILE_TYPE_KX_ORDER, E2EConstant.RULE_TYPE_KX_ORDER_RESOURCE_BUILD);
		
		if(kxOrderFileList == null || kxOrderFileList.size() == 0){
			return;
		}
		for (TbE2eFile2dbFinishTag orderFileTag : kxOrderFileList) {
			processKxOrderFile(orderFileTag);
			TbE2eProcessFinishTag processTag = new TbE2eProcessFinishTag(orderFileTag, E2EConstant.RULE_TYPE_KX_ORDER_RESOURCE_BUILD);
			processTagDao.insertTbE2eProcessFinishTag(processTag);
		}
	}
	
	private void processKxOrderFile(TbE2eFile2dbFinishTag orderFileTag) {
		Date fileTime = orderFileTag.getFILE_TIME();
		List<TbE2eOneStopKxOrder> kxOrderList = orderDao.selectTbE2eOneStopKxOrder2(fileTime);
		if (kxOrderList != null && kxOrderList.size() != 0) {
			for (TbE2eOneStopKxOrder kxOrder : kxOrderList) {
				processKpi(kxOrder);
			}
		}
	}
	
	private void processKpi(TbE2eOneStopKxOrder kxOrder) {
		try {
			String uCrmOrderId = Formater.neatenunitid(kxOrder.getCRM_ORDER_ID());
			String uP6OrderId = Formater.neatenunitid(kxOrder.getP6_ID());
			String unitId = kbpClass + ":" + productType + "-" + uCrmOrderId + "-"  + uP6OrderId;
			String kpiId = "PM-02-00-000-01";
			
			double startTime = kxOrder.getORDER_RECEIVE_DT().getTime();
			double endTime;
			if (kxOrder.getORDER_FINISH_DT() == null) {
				endTime = new Date().getTime();
			} else {
				endTime = kxOrder.getORDER_FINISH_DT().getTime();
			}
			String kpiValue = Double.toString((endTime - startTime) / (60 * 60 * 1000));
			kpiValue = Formater.formatDecimalKpivalue(kpiValue);	
			TbE2eOneStopKxOrderExcept exceptionOrder = new TbE2eOneStopKxOrderExcept(kxOrder, unitId, kpiId, kpiValue);
			String extEventInfo = JSONUtil.toJSON(exceptionOrder);
			logger.info(unitId + "\t" + kpiId + "\t" +  kpiValue);	
			if(kpiToEvent(unitId, kpiId, kpiValue,1, extEventInfo)){
				exceptDao.insertTbE2eOneStopKxOrderExcept(exceptionOrder);
			}
		} catch (Exception e) {
			logger.error("Exception while processKpi", e);
		}
	}
}