ZjService.java
7.21 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
153
154
155
156
157
158
159
160
161
package cn.csbr.app.service;
import cn.csbr.app.hardware.BWCabinetTestDll;
import cn.csbr.app.hardware.HFbwcabinet.HFbwcabinetApi;
import cn.csbr.app.util.SystemUtil;
import cn.csbr.springboot.dao.mapper.JoblistMapper;
import cn.csbr.springboot.dao.mapper.JoblistdetailMapper;
import cn.csbr.springboot.dao.model.Joblist;
import cn.csbr.springboot.dao.model.Joblistdetail;
import cn.hutool.core.date.DateTime;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.csbr.util.IdUtils;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Log4j2
@Service
public class ZjService {
//BWCabinetTestDll instance=null;
@Value("${hfrfid.rfid_data}")
private String hfrfidData;
@Value("${app.cabinet.group.code}")
private String quyu;
@Autowired
private JoblistMapper joblistMapper;
@Autowired
private JoblistdetailMapper joblistdetailMapper;
public void ReHcg(){
List<Joblist> joblists= joblistMapper.getWclRgHcg();
if(joblists.size()>0) {
log.info("发现重启耗材柜任务开始受理请求");
for (Joblist item : joblists){
item.setSfcl("Y");
item.setClrq(new Date());
joblistMapper.updateByPrimaryKey(item);
}
log.info("开始重启耗材柜 2秒钟后柜子自动重启");
SystemUtil.ReHcg();
log.info("goodbye!");
}
}
public void Zj()
{
BWCabinetTestDll instance = (BWCabinetTestDll) Native.loadLibrary("BWCabinetTest", BWCabinetTestDll.class);
// BWCabinetTestDll instance =null;
List<Joblist> joblists= joblistMapper.getWclJob(quyu);
if(joblists.size()>0) {
Thread thread= new Thread(()->{
log.info("检查到自检任务开始进行耗材柜自检");
joblistMapper.updateWclJob(quyu);
JSONArray array = JSONArray.parseArray(hfrfidData);
for(Object o:array) {
HFbwcabinetApi hFbwcabinetApi = JSON.parseObject(JSON.toJSONString(o), HFbwcabinetApi.class);
int cabinetindex = hFbwcabinetApi.getCabinetindex();
String kzq="连接正常";
IntByReference bLocked = new IntByReference(-1);
IntByReference bDoorOpened = new IntByReference(-1);
int flag = instance.BWGetCabinetState(cabinetindex, bLocked, bDoorOpened);
if(flag!=0) {
if(flag==1) {
kzq = "连接异常";
}else {
kzq = "连接异常,代码:"+flag;
}
}
String zw="连接正常";
IntByReference nFingerNum = new IntByReference(-1);
flag = instance.BWQueryFingerNum(cabinetindex, nFingerNum);
if(flag!=0&&flag!=6&&flag!=4) {
if(flag==1) {
zw = "连接异常";
}else {
zw = "连接异常,代码:"+flag;
}
}
String ic="连接正常";
Pointer outjson_pointer = new Memory(50);
IntByReference idLength = new IntByReference(-1);
flag = instance.BWGetIDCardNum(cabinetindex, outjson_pointer, idLength);
if(flag!=0&&flag!=6) {
if(flag==1) {
ic = "连接异常";
}else {
ic = "连接异常,代码:"+flag;
}
}
String rfid="连接正常";
Pointer outjson_pointer2 = new Memory(102400);
IntByReference rfidLength = new IntByReference(-1);
flag = instance.BWQueryRfidTab(cabinetindex, outjson_pointer2, rfidLength);
if(flag!=0&&flag!=6) {
if(flag==1) {
rfid = "连接异常";
}else {
rfid = "连接异常,代码:"+flag;
}
}
Joblistdetail joblistdetail=new Joblistdetail();
joblistdetail.setGuid(IdUtils.getUUID());
joblistdetail.setFqsj(new DateTime());
joblistdetail.setMessage("柜子"+hFbwcabinetApi.getCabinetCd()+"控制器:"+kzq);
joblistdetail.setSfcl("Y");
joblistdetail.setSfzc(kzq.equals("连接正常")?"Y":"N");
if(cabinetindex==3){ joblistdetail.setType("控制器上");}
else if(cabinetindex==4){ joblistdetail.setType("控制器下");}else {
joblistdetail.setType("控制器");
}
joblistdetail.setQuyu(quyu);
joblistdetail.setGzid(hFbwcabinetApi.getCabinetCd().split("-")[1]);
joblistdetail.setWcsj(new DateTime());
joblistdetailMapper.insert(joblistdetail);
joblistdetail.setGuid(IdUtils.getUUID());
joblistdetail.setFqsj(new DateTime());
joblistdetail.setMessage("柜子"+hFbwcabinetApi.getCabinetCd()+"指纹:"+zw);
joblistdetail.setSfcl("Y");
joblistdetail.setSfzc(zw.equals("连接正常")?"Y":"N");
joblistdetail.setType("指纹");
joblistdetail.setWcsj(new DateTime());
joblistdetail.setQuyu(quyu);
joblistdetail.setGzid(hFbwcabinetApi.getCabinetCd().split("-")[1]);
joblistdetailMapper.insert(joblistdetail);
joblistdetail.setGuid(IdUtils.getUUID());
joblistdetail.setFqsj(new DateTime());
joblistdetail.setMessage("柜子"+hFbwcabinetApi.getCabinetCd()+"IC卡:"+ic);
joblistdetail.setSfcl("Y");
joblistdetail.setSfzc(ic.equals("连接正常")?"Y":"N");
joblistdetail.setType("IC卡");
joblistdetail.setWcsj(new DateTime());
joblistdetail.setQuyu(quyu);
joblistdetail.setGzid(hFbwcabinetApi.getCabinetCd().split("-")[1]);
joblistdetailMapper.insert(joblistdetail);
joblistdetail.setGuid(IdUtils.getUUID());
joblistdetail.setFqsj(new DateTime());
joblistdetail.setMessage("柜子"+hFbwcabinetApi.getCabinetCd()+"RFID:"+rfid);
joblistdetail.setSfcl("Y");
joblistdetail.setSfzc(rfid.equals("连接正常")?"Y":"N");
joblistdetail.setType("RFID");
joblistdetail.setWcsj(new DateTime());
joblistdetail.setQuyu(quyu);
joblistdetail.setGzid(hFbwcabinetApi.getCabinetCd().split("-")[1]);
joblistdetailMapper.insert(joblistdetail);
}
log.info("自检完成");
joblistMapper.updateWcJob(quyu);});
thread.setDaemon(true);
thread.start();
}
}
}