HFHardWaredll.java
4.63 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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package cn.csbr.app.hardware.HFbwcabinet;
import cn.csbr.app.gui.GUIContext;
import cn.csbr.app.hardware.HardWareDll;
import cn.csbr.app.hardware.RfidHardWareApi;
import cn.csbr.app.hardware.callback.RfidHardWareCallback;
import cn.csbr.app.hardware.callback.ValidCardUserCallback;
import cn.csbr.app.service.CabinetService;
import cn.csbr.springboot.dao.mapper.DatUserLogMapper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* 超高频方法封装类,对于所有柜子
*
* @author liwuji
* @since 2018-12-24
*/
@Component
public class HFHardWaredll implements RfidHardWareApi {
@Autowired
private GUIContext guiContext;
@Autowired
private DatUserLogMapper datUserLogMapper;
@Autowired
private CabinetService cabinetService;
private List<HFbwcabinetApi> hFbwcabinetlist;
private List<HFbwcabinetApi> hFMainbwcabinetApi;
/** rfid硬件数据返回回调接口 */
public static RfidHardWareCallback rfidHardWareDataReturnCallback;
private static Logger logger = LoggerFactory.getLogger(HFHardWaredll.class);
public boolean BWInitCabinet() {
int flag = HFbwcabinetApi.BWInitCabinet();
if(flag == 1) {
logger.info("缺少相应的dll文件");
return false;
}
return true;
}
@Override
public boolean initHardWare(String rfidData, String cardData) {
//初始化柜子信息
// logger.info("初始化所有硬件信息");
// if(!BWInitCabinet()){
// logger.info("初始化 BWInitCabinet异常");
// }
JSONArray array = JSONArray.parseArray(rfidData);
hFbwcabinetlist = new ArrayList<>();
for(Object o:array) {
// logger.info("初始化所有硬件信息"+o.toString());
HFbwcabinetApi hFbwcabinetApi = new HFbwcabinetApi();
hFbwcabinetApi = JSON.parseObject(JSON.toJSONString(o), HFbwcabinetApi.class);
//调用超高频柜子类的初始化方法
hFbwcabinetApi.init(hFbwcabinetApi.getStoreguid(),hFbwcabinetApi.getQuyucd(),hFbwcabinetApi.getCabinetindex(),hFbwcabinetApi.getCabinetType(),hFbwcabinetApi.getCabinetCd(),guiContext,datUserLogMapper);
//调用超高频柜子硬件
hFbwcabinetApi.initHardWare();
hFbwcabinetlist.add(hFbwcabinetApi);
}
return true;
}
@Override
public boolean startAllRfid(String userCd, String userName) {
List<String> cabinetcdList=new ArrayList<String>();
for (HFbwcabinetApi hFbwcabinetApi:hFbwcabinetlist) {
if(!cabinetcdList.contains(hFbwcabinetApi.getCabinetCd()))
{ cabinetcdList.add(hFbwcabinetApi.getCabinetCd());
getRfid(hFbwcabinetApi);
}
}
return true;
}
@Override
public boolean closeHardWare() {
hFbwcabinetlist.addAll(hFMainbwcabinetApi);
for (HFbwcabinetApi hFbwcabinetApi:hFbwcabinetlist) {
hFbwcabinetApi.closeHardWare();
}
HFbwcabinetApi.BWExitCabinet();
return true;
}
@Override
public boolean setActionRfidDataBack(RfidHardWareCallback callback) {
this.rfidHardWareDataReturnCallback = callback;
return true;
}
@Override
public boolean setCardMessDo(RfidHardWareCallback callback) {
return true;
}
@Override
public boolean setFunCardUserCheck(ValidCardUserCallback callback) {
return true;
}
//获取硬件传过来的rfid
public void getRfid(HFbwcabinetApi hFbwcabinetApi) {
Thread thread = new Thread(() -> {
hFbwcabinetApi.setRfidflag(true);
hFbwcabinetApi.BWQueryRfidTabFunDo();
}
);
thread.setDaemon(true);
thread.start();
}
//暂停其他柜子的指纹和刷卡
public boolean pauseOtherCabFingerAndId() {
for (HFbwcabinetApi hFbwcabinetApi:hFbwcabinetlist) {
hFbwcabinetApi.setRunflag(false);
}
return true;
}
//启用其他柜子的指纹和刷卡
public boolean startOtherCabFingerAndId() {
for (HFbwcabinetApi hFbwcabinetApi:hFbwcabinetlist) {
hFbwcabinetApi.setRunflag(true);
}
return true;
}
// 启用或停用指纹及刷卡验证
public void stoporstartcheck(int cmd) {
for (HFbwcabinetApi hFbwcabinetApi:hFbwcabinetlist) {
hFbwcabinetApi.setIsFinger(cmd);
}
}
}