IbpOrderCreateRule.java
4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
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.TbE2eIbpOrderCreateExceptDao;
import com.sitech.ismp.coll.busi.e2e.dao.TbE2eProcessFinishTagDao;
import com.sitech.ismp.coll.busi.e2e.dao.VE2eIbpOrderCreateDao;
import com.sitech.ismp.coll.busi.e2e.domain.IbpOrderCreateFileTag;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eIbpOrderCreateExcept;
import com.sitech.ismp.coll.busi.e2e.domain.TbE2eProcessFinishTag;
import com.sitech.ismp.coll.busi.e2e.domain.VE2eIbpOrderCreate;
import com.sitech.util.Formater;
import com.sitech.util.JSONUtil;
/**
* IBP定单生成环节分析(从CRM订单提交到IBP定单生成)
*
* @author linxc
* @version
* @since Ver 6.1
* @Date 2012 May 15, 2012 9:48:01 AM
*/
public class IbpOrderCreateRule extends AnalysisRule {
/** 产品类型 */
private String tagType;
/** 属性名称 */
private String propName = params.get("CRM_PROP_NAME");
/** 属性值 */
private String propValue = params.get("CRM_PROP_VALUE");
private VE2eIbpOrderCreateDao dao;
TbE2eIbpOrderCreateExceptDao exceptDao;
TbE2eProcessFinishTagDao processTagDao;
public IbpOrderCreateRule(Map<String, String> params) {
super(params);
dao = new VE2eIbpOrderCreateDao(params);
processTagDao = new TbE2eProcessFinishTagDao(params);
exceptDao = new TbE2eIbpOrderCreateExceptDao(params);
}
protected void excute() {
List<IbpOrderCreateFileTag> fileTagList = dao
.selectIbpOrderCreateFileTag(E2EConstant.RULE_TYPE_IBP_ORDER_CREATE);
if (fileTagList == null || fileTagList.size() == 0) {
return;
}
for (IbpOrderCreateFileTag tag : fileTagList) {
TbE2eProcessFinishTag tag1 = new TbE2eProcessFinishTag(tag
.getCRM_ORDER_FILE_ID(), tag.getFILE_TIME(),
E2EConstant.FILE_TYPE_CRM_ORDER,
E2EConstant.RULE_TYPE_IBP_ORDER_CREATE);
TbE2eProcessFinishTag tag2 = new TbE2eProcessFinishTag(tag
.getCRM_PROP_FILE_ID(), tag.getFILE_TIME(),
E2EConstant.FILE_TYPE_CRM_ORDER_PROP,
E2EConstant.RULE_TYPE_IBP_ORDER_CREATE);
TbE2eProcessFinishTag tag3 = new TbE2eProcessFinishTag(tag
.getIBP_REC_FILE_ID(), tag.getFILE_TIME(),
E2EConstant.FILE_TYPE_IBP_ORDER,
E2EConstant.RULE_TYPE_IBP_ORDER_CREATE);
processTagDao.insertTbE2eProcessFinishTag(tag1);
processTagDao.insertTbE2eProcessFinishTag(tag2);
processTagDao.insertTbE2eProcessFinishTag(tag3);
process(tag.getFILE_TIME());
}
}
private void process(Date fileTime) {
List<VE2eIbpOrderCreate> list = dao.selectVE2eIbpOrderCreate(tagType,
propName, propValue, fileTime);
if (list == null || list.size() == 0) {
return;
}
for (VE2eIbpOrderCreate order : list) {
processKpi(order);
}
}
private void processKpi(VE2eIbpOrderCreate order) {
try{
// UNIT_ID = KBP_CLASS:产品-CRM订单号-版本号-行项目编号
String uCrmOrderId = Formater.neatenunitid(order.getCRM_ORDER_ID());
String uCrmOrderVersion = Formater.neatenunitid(order
.getVERSION_NUM());
String uRowNum = Formater.neatenunitid(order.getCRM_ROW_NUM());
String unitId = kbpClass + ":" + productType + "-" + uCrmOrderId + "-"
+ uCrmOrderVersion + "-" + uRowNum;
String kpiId = "PM-02-00-000-01";
double p6CreateTime = order.getORDER_CREATE_TIME().getTime();
double crmSubmitTime = order.getORDER_SUBMIT_TIME().getTime();
String kpiValue = Double.toString((p6CreateTime - crmSubmitTime) / (60 * 60 * 1000));
kpiValue = Formater.formatDecimalKpivalue(kpiValue);
logger.debug(unitId + "\t" + kpiId + "\t" + kpiValue);
TbE2eIbpOrderCreateExcept exceptOrder = new TbE2eIbpOrderCreateExcept(
order, unitId, "PM-02-00-000-01", kpiValue);
String extEventInfo = JSONUtil.toJSON(exceptOrder);
if (kpiToEvent(unitId, kpiId, kpiValue, 1, extEventInfo)) {
saveAbnormalOrder(exceptOrder);
}
}catch (Exception e) {
logger.error("Exception while processKpi", e);
}
}
private void saveAbnormalOrder(TbE2eIbpOrderCreateExcept exceptOrder) {
exceptDao.insertTbE2eIbpOrderCreateExcept(exceptOrder);
}
}