ZiYuanShenHeRule.java 4.4 KB
package com.sitech.ismp.coll.busi.e2e.rule;

import java.util.Date;
import java.util.HashMap;
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.DES3;
import com.sitech.util.Formater;
import com.sitech.util.JSONUtil;

/**
 * 资源审核分析规则
 * @author huangqj
 * @date 2012-6-28
 */
public class ZiYuanShenHeRule extends AnalysisRule{
	private TbE2eIbpOrderExceptDao exceptDao;
	
	public ZiYuanShenHeRule(Map<String, String> params) {
		super(params);
		exceptDao = new TbE2eIbpOrderExceptDao(params);
	}
	
	@Override
	protected void excute() {
		logger.info("Begin execute ZziOrderSource2sendRule...");
		List<TbE2eFile2dbFinishTag> zziOrderFileList = getTbE2eFile2dbFinishTag(
				E2EConstant.FILE_TYPE_IBP_ORDER,
				E2EConstant.RULE_TYPE_RES_CHECK);
		
		if(zziOrderFileList == null || zziOrderFileList.size() == 0){
			return;
		}
		
		for (TbE2eFile2dbFinishTag orderFileTag : zziOrderFileList) {
			process(orderFileTag);
			//入库已处理完毕
			TbE2eProcessFinishTag processTag = new TbE2eProcessFinishTag(orderFileTag, E2EConstant.RULE_TYPE_RES_CHECK);
			processTagDao.insertTbE2eProcessFinishTag(processTag);
		}
	}
	
	private void process(TbE2eFile2dbFinishTag orderFileTag) {
		Date fileTime = orderFileTag.getFILE_TIME();
		TbE2eIbpOrderDao orderDao = new TbE2eIbpOrderDao(params);
		List<TbE2eIbpOrder> ZziOrderList = orderDao.selectTbE2eIbpOrder(params,productType, fileTime);
		if (ZziOrderList != null && ZziOrderList.size() != 0) {
			for (TbE2eIbpOrder ZziOrder : ZziOrderList) {
				processKpi(ZziOrder);
			}
		}	
	}
	
	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();
			String orderStatus = ibpOrder.getORDER_STATUS();
			if (null != outTime && "资源审核".equals(orderStatus)) {
				// 已经发送综资
				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);
		}
	}
	
	public static void main(String[] args) throws Exception {
		HashMap<String, String> params = new HashMap<String, String>();

		params.put("JDBC.Driver", "oracle.jdbc.driver.OracleDriver");
		params.put("JDBC.ConnectionURL", "jdbc:oracle:thin:@172.21.0.77:1527:bnms");
		params.put("JDBC.Username", "bnms15");		
		params.put("JDBC.Password", DES3.encrypt("bnms15"));
		
		
		params.put("KBP_CLASS", "12-12-11");		
		params.put("TAG_TYPE", "OpNet48New");
		
		params.put("SYSTEM_NAME", "97/综资");

		params.put("SERVICE_RULE_CLASS", "com.sitech.ismp.coll.busi.e2e.rule.ZiYuanShenHeRule");
		
		ZiYuanShenHeRule rule = new ZiYuanShenHeRule(params);
		
		TbE2eIbpOrderDao orderDao = new TbE2eIbpOrderDao(params);
		
		
		Date fileTime = Formater.stringToDateTime("2012-11-05 06:00:00");
		List<TbE2eIbpOrder> ZziOrderList = orderDao.selectTbE2eIbpOrder(params,"OpNet48New", fileTime);
		if (ZziOrderList != null && ZziOrderList.size() != 0) {
			for (TbE2eIbpOrder ZziOrder : ZziOrderList) {
				rule.processKpi(ZziOrder);
			}
		}	
	}
}