G2FeedBackHandel.java
2.8 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
package com.sy.handle;
import com.sy.model.DxpMsg;
import com.sy.model.GatherInfo;
import com.sy.model.X82Feedback;
import com.sy.service.X82Service;
import com.sy.service.router.MessageRouterG2;
import com.sy.utils.Base64Tool;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class G2FeedBackHandel extends Thread {
private String feedBack;
private X82Service x82Service;
private MessageRouterG2 messageRouterG2;
public X82Service getX82Service() {
return x82Service;
}
public void setX82Service(X82Service x82Service) {
this.x82Service = x82Service;
}
public MessageRouterG2 getMessageRouterG2() {
return messageRouterG2;
}
public void setMessageRouterG2(MessageRouterG2 messageRouterG2) {
this.messageRouterG2 = messageRouterG2;
}
public String getFeedBack() {
return feedBack;
}
public void setFeedBack(String feedBack) {
this.feedBack = feedBack;
}
@Override
public void run() {
try {
DxpMsg dxpMsg = x82Service.analysis(feedBack);
String data = dxpMsg.getData();
//解密BASE64 得到X82报文
String x82Str = Base64Tool.decodeUtf8ToUtf8(data);
//解析报文
X82Feedback x82Feedback = x82Service.x82Analysis(x82Str);
String seqno = x82Feedback.getSessionId();
GatherInfo gatherInfo = x82Service.readCacheWithSeqno(seqno);
//todo: X82Feedback 与 X21 实体类转换
if (StringUtils.isNotEmpty(x82Feedback.getChannelNo())){
if (gatherInfo!=null){
//得到sessionid ,申报出去的X81sessionId=seqno ,一去一回sessionId一样
if (x82Service.X82ReleaseCheck(x82Feedback)){
//放行及核销
messageRouterG2.route(gatherInfo,x82Feedback.getOpHint());
}else{
log.info("[G2-CHECK-FAILD]-金二验放失败,不予放行");
messageRouterG2.faild(gatherInfo,x82Feedback.getOpHint());
}
}else {
//没从缓存中取到过卡采集报文,就直接转,然后记录,同时给LED指示内容
GatherInfo gatherInfo1 = x82Service.X82FeedBackToX21GatherInfo(x82Feedback);
messageRouterG2.faild(gatherInfo1,x82Feedback.getOpHint());
}
}else {
log.error("[G2-FEEDBACK-XML-ERR]-金二验放未知错误,源报文:{},解密报文:{}",feedBack,x82Str);
}
}catch (Exception e){
log.error("金二回执处理线程出错",e);
}
}
}