Commit e914df27f3b207f095111fd4b9f22b3074656fa3
Exists in
master
Merge remote-tracking branch 'origin/master'
Showing
43 changed files
with
1206 additions
and
230 deletions
Show diff stats
cloud/dahua/src/main/java/com/example/dahua/DahuaApplication.java
... | ... | @@ -17,6 +17,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; |
17 | 17 | import org.springframework.context.annotation.Bean; |
18 | 18 | import org.springframework.context.annotation.Configuration; |
19 | 19 | import org.springframework.scheduling.annotation.EnableAsync; |
20 | +import org.springframework.scheduling.annotation.EnableScheduling; | |
20 | 21 | import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; |
21 | 22 | import springfox.documentation.builders.PathSelectors; |
22 | 23 | import springfox.documentation.builders.RequestHandlerSelectors; |
... | ... | @@ -37,6 +38,7 @@ import java.util.concurrent.TimeUnit; |
37 | 38 | @SpringBootApplication |
38 | 39 | @MapperScan("com.example.dahua.dao") |
39 | 40 | @EnableDiscoveryClient |
41 | +@EnableScheduling | |
40 | 42 | public class DahuaApplication { |
41 | 43 | |
42 | 44 | public static void main(String[] args) { | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/Gate/CardManegerDialog.java
... | ... | @@ -245,7 +245,7 @@ public class CardManegerDialog extends JDialog{ |
245 | 245 | String userId = v.get(4).toString(); // 用户ID |
246 | 246 | |
247 | 247 | // 删除人脸和卡信息 |
248 | - if(!GateModule.deleteFaceInfo(userId) || | |
248 | + if( | |
249 | 249 | !GateModule.deleteCard(Integer.parseInt(recordNo))) { |
250 | 250 | JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); |
251 | 251 | } else { |
... | ... | @@ -262,8 +262,7 @@ public class CardManegerDialog extends JDialog{ |
262 | 262 | int result = JOptionPane.showConfirmDialog(null, Res.string().getWantClearAllInfo(), Res.string().getPromptMessage(), JOptionPane.YES_NO_OPTION); |
263 | 263 | if(result == 0) { // 0-是, 1-否 |
264 | 264 | // 清空人脸和卡信息 |
265 | - if(!GateModule.clearFaceInfo() || | |
266 | - !GateModule.clearCard()) { | |
265 | + if(true) { | |
267 | 266 | JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); |
268 | 267 | } else { |
269 | 268 | JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE); | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/MyTask.java
... | ... | @@ -71,9 +71,9 @@ public class MyTask implements ApplicationRunner { |
71 | 71 | public void run(ApplicationArguments args) throws Exception { |
72 | 72 | // 121.40.109.21 |
73 | 73 | |
74 | -// LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 | |
74 | + LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 | |
75 | 75 | |
76 | -// autoRegister();//自注册 | |
76 | + autoRegister();//自注册 | |
77 | 77 | |
78 | 78 | // System.out.println(" sendRecordDao:"+sendRecordDao.getSenSuccess()); |
79 | 79 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/Test.java
1 | 1 | package com.example.dahua; |
2 | 2 | |
3 | 3 | |
4 | +import org.springframework.http.ResponseEntity; | |
5 | +import org.springframework.scheduling.annotation.Async; | |
6 | +import org.springframework.web.client.RestTemplate; | |
7 | + | |
8 | +import java.text.SimpleDateFormat; | |
9 | +import java.util.Date; | |
10 | +import java.util.Random; | |
11 | +import java.util.UUID; | |
12 | + | |
4 | 13 | public class Test { |
5 | 14 | |
6 | 15 | public static void main(String[] args) { |
7 | 16 | |
8 | 17 | |
18 | + Test test = new Test(); | |
19 | + | |
20 | + | |
9 | 21 | } |
10 | 22 | |
11 | 23 | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java
... | ... | @@ -30,12 +30,9 @@ import org.springframework.web.client.RestTemplate; |
30 | 30 | import java.io.*; |
31 | 31 | import java.text.ParseException; |
32 | 32 | import java.text.SimpleDateFormat; |
33 | -import java.util.ArrayList; | |
34 | -import java.util.Date; | |
35 | -import java.util.List; | |
33 | +import java.util.*; | |
36 | 34 | |
37 | 35 | @Component |
38 | -@EnableScheduling | |
39 | 36 | public class MyScheduledTask { |
40 | 37 | |
41 | 38 | |
... | ... | @@ -66,8 +63,9 @@ public class MyScheduledTask { |
66 | 63 | |
67 | 64 | private String imgFilPath = "C:\\EhomePicServer";//抓拍图片路径 |
68 | 65 | |
69 | - @Scheduled(fixedRate = 5000) | |
66 | +// @Scheduled(fixedRate = 5000) | |
70 | 67 | private void sendErrorInfo() throws InterruptedException { |
68 | + System.out.println("---------------------------sendErrorInfo:"); | |
71 | 69 | // System.out.println("定时任务执行中...."); |
72 | 70 | deleteFaceImg(); |
73 | 71 | |
... | ... | @@ -78,26 +76,6 @@ public class MyScheduledTask { |
78 | 76 | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH"); |
79 | 77 | int hour = Integer.parseInt(simpleDateFormat.format(new Date())); |
80 | 78 | |
81 | - /*if (hour == 7 && !isCloseYT) { | |
82 | - isCloseYT = true; | |
83 | - close(31, 97); | |
84 | - } | |
85 | - | |
86 | - if (hour == 17 && isCloseYT) { | |
87 | - isCloseYT = false; | |
88 | - close(30, 97); | |
89 | - }*/ | |
90 | - | |
91 | - /* if (hour == 6 && !isClose) { | |
92 | - isClose = true; | |
93 | - close(31, 479);//打开 | |
94 | - } | |
95 | - | |
96 | - if (hour == 22 && isClose) { | |
97 | - isClose = false; | |
98 | - close(30, 479);//关闭 | |
99 | - }*/ | |
100 | - | |
101 | 79 | if (hour >= 9 && hour < 11) { |
102 | 80 | dealData(); |
103 | 81 | } else if (hour >= 13 && hour < 14) { |
... | ... | @@ -106,7 +84,7 @@ public class MyScheduledTask { |
106 | 84 | dealData(); |
107 | 85 | } |
108 | 86 | |
109 | - if (myTasks.isHasNewDevice)myTasks.reloadPic(); | |
87 | + if (myTasks.isHasNewDevice) myTasks.reloadPic(); | |
110 | 88 | |
111 | 89 | } |
112 | 90 | |
... | ... | @@ -122,59 +100,43 @@ public class MyScheduledTask { |
122 | 100 | File file = new File(imgFilPath); |
123 | 101 | File[] files = file.listFiles(); |
124 | 102 | Date currentDate = new Date(); |
125 | - if (null!=files) | |
126 | - for (int i = 0; i < files.length; i++) { | |
127 | - File imgFile = files[i]; | |
128 | - String name = imgFile.getName().split("\\.")[0]; | |
129 | - String time = name.substring(32); | |
130 | - if(time.length()>8&&!time.contains("-"))time = time.substring(0,8); | |
131 | - | |
132 | - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); | |
133 | - SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd"); | |
134 | - try { | |
135 | - Date date1 = null; | |
136 | - if (time.contains("-"))date1 = simpleDateFormat.parse(time); | |
137 | - else date1 = simpleDateFormat1.parse(time); | |
138 | - | |
139 | - long timecj = currentDate.getTime() - date1.getTime(); | |
140 | - if (timecj > (7 * 24 * 60 * 60 * 1000)) {//大于七天的删除 | |
141 | - System.out.println("imgFile:" + imgFile.getAbsolutePath() + imgFile.exists()); | |
103 | + if (null != files) | |
104 | + for (int i = 0; i < files.length; i++) { | |
105 | + File imgFile = files[i]; | |
106 | + String name = imgFile.getName().split("\\.")[0]; | |
107 | + String time = name.substring(32); | |
108 | + if (time.length() > 8 && !time.contains("-")) time = time.substring(0, 8); | |
109 | + | |
110 | + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); | |
111 | + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd"); | |
112 | + try { | |
113 | + Date date1 = null; | |
114 | + if (time.contains("-")) date1 = simpleDateFormat.parse(time); | |
115 | + else date1 = simpleDateFormat1.parse(time); | |
116 | + | |
117 | + long timecj = currentDate.getTime() - date1.getTime(); | |
118 | + if (timecj > (7 * 24 * 60 * 60 * 1000)) {//大于七天的删除 | |
119 | + System.out.println("imgFile:" + imgFile.getAbsolutePath() + imgFile.exists()); | |
120 | + imgFile.delete(); | |
121 | + } | |
122 | + | |
123 | + } catch (ParseException e) { | |
142 | 124 | imgFile.delete(); |
125 | +// e.printStackTrace(); | |
143 | 126 | } |
144 | 127 | |
145 | - } catch (ParseException e) { | |
146 | - imgFile.delete(); | |
147 | -// e.printStackTrace(); | |
148 | 128 | } |
149 | 129 | |
150 | - } | |
151 | - | |
152 | 130 | } |
153 | 131 | |
154 | 132 | } |
155 | 133 | |
156 | - private void close(int cmd, int schoolId) { | |
157 | - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
158 | - String date = simpleDateFormat.format(new Date()); | |
159 | - FileUtils.getInstance().writeLogs(date + " " + cmd, FileUtils.sendOrder); | |
160 | - MqttManager mqttManager = new MqttManager(); | |
134 | + private synchronized void dealData() { | |
161 | 135 | |
162 | - mqttManager.init(); | |
163 | - | |
164 | - List<String> stringList = userDao.getAllDecWithSch(schoolId); | |
165 | -// System.out.println("stringList:" + stringList); | |
166 | - for (int i = 0; i < stringList.size(); i++) { | |
167 | - String devId = stringList.get(i); | |
168 | - mqttManager.sendMq(devId, cmd); | |
169 | - } | |
170 | - } | |
171 | - | |
172 | - private synchronized void dealData(){ | |
173 | - | |
174 | - String ip = new Utils().getHostAddress(); | |
175 | - System.out.println("ip:"+ip); | |
176 | - if (ip.startsWith("192")||ip.contains("172.16.247.64")) | |
177 | - return; | |
136 | + String ip = new Utils().getHostAddress(); | |
137 | + System.out.println("ip:" + ip); | |
138 | + if (ip.startsWith("192") || ip.contains("172.16.247.64")) | |
139 | + return; | |
178 | 140 | |
179 | 141 | /** |
180 | 142 | * 微耕 |
... | ... | @@ -203,5 +165,95 @@ public class MyScheduledTask { |
203 | 165 | |
204 | 166 | } |
205 | 167 | |
168 | + boolean isSendMQ = false; | |
169 | + | |
170 | + boolean isInitMQ = false; | |
171 | + | |
172 | + int readLineNum = -1; | |
173 | + | |
174 | + Map<String, Integer> readLineMap = new HashMap<>(); | |
175 | + | |
176 | + MqttManager mqttManager = new MqttManager(); | |
177 | + | |
178 | + | |
179 | + @Scheduled(fixedRate = 1000) | |
180 | + public void sendMq() { | |
181 | + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH"); | |
182 | + | |
183 | + if (!isInitMQ) initMQ(); | |
184 | + if (!isSendMQ) { | |
185 | + isSendMQ = true; | |
186 | + String fileName = simpleDateFormat.format(new Date()); | |
187 | +// String filePath = "D:\\wg_log\\info\\kaoInfo\\" + fileName + ".log"; | |
188 | + String filePath = "C:\\Users\\Administrator\\Desktop\\2020-04-30 08.log"; | |
189 | + if (!readLineMap.containsKey(fileName)) readLineNum = -1;//更新文件后从头开始 | |
190 | + File file = new File(filePath); | |
191 | + try { | |
192 | + if (!file.exists()){ | |
193 | + System.out.println("文件不存在:" + filePath); | |
194 | + return; | |
195 | + } | |
196 | + FileInputStream fileInputStream = new FileInputStream(file); | |
197 | + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream, "GB2312")); | |
198 | + | |
199 | + String content = null; | |
200 | + | |
201 | + int indexLineNum = 0;//当前文件的行 | |
202 | + while ((content = bufferedReader.readLine()) != null) { | |
203 | + indexLineNum++; | |
204 | + System.out.println("indexLineNum:"+indexLineNum+" ----------readLineNum:"+readLineNum); | |
205 | + if (indexLineNum >= readLineNum) { | |
206 | + readLineNum++; | |
207 | + sendMQMess(content); | |
208 | + } | |
209 | + | |
210 | + } | |
211 | + | |
212 | + readLineMap.put(fileName, readLineNum); | |
213 | + | |
214 | + fileInputStream.close(); | |
215 | + bufferedReader.close(); | |
216 | + | |
217 | + } catch (FileNotFoundException e) { | |
218 | + System.out.println("文件不存在:" + e.toString()); | |
219 | + e.printStackTrace(); | |
220 | + } catch (IOException e) { | |
221 | + System.out.println("IO异常:" + e.toString()); | |
222 | + e.printStackTrace(); | |
223 | + } | |
224 | + } else { | |
225 | + isSendMQ = false; | |
226 | + } | |
227 | + | |
228 | + | |
229 | + } | |
230 | + | |
231 | + private void initMQ() { | |
232 | + | |
233 | + if (null != mqttManager) mqttManager.init(); | |
234 | + isInitMQ = true; | |
235 | + | |
236 | + } | |
237 | + | |
238 | + private void sendMQMess(String content) { | |
239 | + String cardNum = content.substring(content.indexOf("卡号") + 3, content.indexOf("卡号") + 11); | |
240 | + | |
241 | + System.out.println("cardNum:" + cardNum); | |
242 | + | |
243 | + String inOrOut = content.substring(content.indexOf("方向:") + 3, content.indexOf("方向:") + 5).endsWith("进门") ? "0" : "1"; | |
244 | + | |
245 | + System.out.println("inOrOut:" + inOrOut); | |
246 | + | |
247 | + | |
248 | + List<String> clintIds = userDao.getClintIds(); | |
249 | + for (int i = 0; i < clintIds.size(); i++) { | |
250 | + String clintId = clintIds.get(i); | |
251 | + | |
252 | + String data = "{\"cmd\":\"" + 34 + "\",\"clientId\":\"" + clintId + "\",\"data\":{\"cardNum\":\"" + cardNum + "\",\"inOrOut\":\"" + inOrOut + "\"}}"; | |
253 | + | |
254 | + mqttManager.sendMq(clintId, data); | |
255 | + } | |
256 | + } | |
257 | + | |
206 | 258 | |
207 | 259 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java
1 | 1 | package com.example.dahua.async; |
2 | 2 | |
3 | +import com.example.dahua.Gate.Gate; | |
3 | 4 | import com.example.dahua.MyTask; |
4 | 5 | import com.example.dahua.bean.*; |
5 | 6 | import com.example.dahua.common.Res; |
... | ... | @@ -41,7 +42,7 @@ public class SendUserInfoTask { |
41 | 42 | @Autowired |
42 | 43 | SendRecordDao sendRecordDao; |
43 | 44 | |
44 | - @Async("taskExecutor") | |
45 | +// @Async("taskExecutor") | |
45 | 46 | public void doTaskOne(String file, List<AttendanceBean> attendanceBeans, UserInfoBean userInfoBean, String schoolId, int failType, int userType) throws Exception { |
46 | 47 | File studentFile = new File(file); |
47 | 48 | String studentCode = studentFile.getName().split("\\.")[0]; |
... | ... | @@ -69,7 +70,7 @@ public class SendUserInfoTask { |
69 | 70 | sendUserInfoToDev(file, attendanceBeans, userInfoBean, userType + "", sendRecordBean); |
70 | 71 | } |
71 | 72 | |
72 | - @Async("taskExecutor") | |
73 | +// @Async("taskExecutor") | |
73 | 74 | public void doTaskSendUserInfos(String schoolId, String clint_type, int type, int failtype) { |
74 | 75 | try { |
75 | 76 | String filePathStudent = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\Student"; |
... | ... | @@ -156,6 +157,7 @@ public class SendUserInfoTask { |
156 | 157 | HttpUtils.uploadImgs(studentFile, schoolId, studentCode, clint_type, 2); |
157 | 158 | } else if (type == 2) {//教师信息 |
158 | 159 | TeacherBean teacher = userDao.getTeacher(schoolId, studentCode); |
160 | + System.out.println("教师信息:" + teacher.toString()); | |
159 | 161 | if (null != teacher) { |
160 | 162 | userInfoBean = new UserInfoBean(); |
161 | 163 | userInfoBean.setStudent_num(teacher.getTeacher_num()); |
... | ... | @@ -297,6 +299,7 @@ public class SendUserInfoTask { |
297 | 299 | // System.out.println("loginHandleLong:" + loginHandleLong + MyTask.lLongMap.toString() + " 设备ID:" + attendanceBean.getClint_id()); |
298 | 300 | // System.out.println("loginHandleLong:" +loginHandleLong); |
299 | 301 | if (loginHandleLong == null) { |
302 | + | |
300 | 303 | FileUtils.getInstance().writeLogs("设备不在线:" + attendanceBean.getClint_id(), FileUtils.devices); |
301 | 304 | String deviceId = sendRecordDao.getFailIsExit(attendanceBean.getClint_id(), attendanceBean.getSchool_id()); |
302 | 305 | sendRecordBean.setFailType(2); |
... | ... | @@ -311,27 +314,18 @@ public class SendUserInfoTask { |
311 | 314 | |
312 | 315 | String cardNum = cardNo(student_num); |
313 | 316 | if (bCardFlags != -1) {//修改卡信息 |
314 | -// GateModule.deleteCard(bCardFlags, loginHandleLong); | |
315 | 317 | GateModule.modifyCard(bCardFlags,cardNum,user_id,name,"123456",Res.string().getCardStatusInt(1),Res.string().getCardTypeInt(1), |
316 | 318 | 0,0,1,startTime,endTime,loginHandleLong); |
317 | 319 | userDao.updateRecordNo(user_id,bCardFlags,attendanceBean.getClint_id()); |
318 | -// userDao.deleteRecordNo(user_id, bCardFlags); | |
319 | - | |
320 | -// bCardFlags = GateModule.insertCard(cardNum, user_id, name, "123456" | |
321 | -// , Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), 0, 0 | |
322 | -// , 1, startTime, endTime, loginHandleLong); | |
323 | - | |
324 | -// if (bCardFlags != -1) { | |
325 | -// int index = userDao.saveRecordNo(user_id, bCardFlags, name, attendanceBean.getClint_id());//存储记录集编号 | |
326 | -// } | |
327 | 320 | bFaceFalgs = GateModule.modifyFaceInfo(user_id, memory, loginHandleLong); |
328 | 321 | //卡号添加成功,但是人脸不成功的话,就需要新增人脸 |
329 | 322 | if (!bFaceFalgs) |
330 | 323 | bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong); |
331 | 324 | |
332 | 325 | } else {//新增卡信息 |
326 | + | |
333 | 327 | bCardFlags = GateModule.insertCard(cardNum, user_id, name, "123456" |
334 | - , Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), 0, 0 | |
328 | + , Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), 0, 1 | |
335 | 329 | , 1, startTime, endTime, loginHandleLong); |
336 | 330 | |
337 | 331 | if (bCardFlags != -1) { |
... | ... | @@ -372,7 +366,7 @@ public class SendUserInfoTask { |
372 | 366 | |
373 | 367 | // 添加卡信息和人脸失败 |
374 | 368 | if (bCardFlags == -1 && !bFaceFalgs) { |
375 | - FileUtils.getInstance().writeLogs("下发人脸和卡号失败:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserErrTxt); | |
369 | + FileUtils.getInstance().writeLogs("下发人脸和卡号失败:" + cardNum + " user_id: " + user_id+" loginHandleLong: "+loginHandleLong, FileUtils.sendUserErrTxt); | |
376 | 370 | // System.out.println("添加卡信息和人脸失败"); |
377 | 371 | System.out.println("下发人脸和卡号失败" + "sendRecordBean:" + sendRecordBean.getDeviceID()+" ,"+sendRecordBean.getNum()+","+loginHandleLong+",bCardFlags:"+bCardFlags+"\r\n"); |
378 | 372 | sendRecordBean.setFailContent("下发人脸和卡号失败"); |
... | ... | @@ -664,4 +658,39 @@ public class SendUserInfoTask { |
664 | 658 | e.printStackTrace(); |
665 | 659 | } |
666 | 660 | } |
661 | + | |
662 | + | |
663 | +// @Async("taskExecutor") | |
664 | + public void testSMS(){ | |
665 | + RestTemplate restTemplate = new RestTemplate(); | |
666 | + | |
667 | + String LoginName = "13095656162"; | |
668 | + String MessageContent ="你好,五一快乐"; | |
669 | + String MessageType = "2"; | |
670 | + String Password = "yxt_123456"; | |
671 | + String ScheduleTime = ""; | |
672 | + String SerialNumber = ""; | |
673 | + String SpCode ="13095656162"; | |
674 | + String UserNumber=""; | |
675 | + String f= "1"; | |
676 | + long now = System.currentTimeMillis(); | |
677 | + String time = new SimpleDateFormat("yyyy").format(new Date()); | |
678 | + int ran = new Random().nextInt(999)+1; | |
679 | + SerialNumber = now+time+ran; | |
680 | + if (SerialNumber.length()<20)SerialNumber=SerialNumber+"0"; | |
681 | + System.out.println("SerialNumber:"+SerialNumber); | |
682 | + UserNumber = "130"+(new Random().nextInt(100000000)+1); | |
683 | + if (UserNumber.length()<11)UserNumber = UserNumber+"0"; | |
684 | +// SpCode = "130"+(new Random().nextInt(100000000)+1); | |
685 | + ScheduleTime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); | |
686 | + | |
687 | + | |
688 | + | |
689 | + String url = String.format("http://121.40.109.21:8083/haikang/sms/sendMsg?LoginName=%s&MessageContent=%s" + | |
690 | + "&MessageType=%s&Password=%s&ScheduleTime=%s&SerialNumber=%s&SpCode=%s&UserNumber=%s&f=%s",LoginName, | |
691 | + MessageContent,MessageType,Password,ScheduleTime,SerialNumber,SpCode,UserNumber,f); | |
692 | + | |
693 | + ResponseEntity<String> responseEntity = restTemplate.getForEntity(url,String.class); | |
694 | + System.out.println("responseEntity:"+responseEntity.getBody()+"---url:"+url); | |
695 | + } | |
667 | 696 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java
1 | 1 | package com.example.dahua.control; |
2 | 2 | |
3 | +import com.example.dahua.MyTask; | |
3 | 4 | import com.example.dahua.async.SendUserInfoTask; |
5 | +import com.example.dahua.attendance.Attendance; | |
6 | +import com.example.dahua.bean.AttendanceBean; | |
7 | +import com.example.dahua.bean.TeacherBean; | |
4 | 8 | import com.example.dahua.bean.UploadImg; |
9 | +import com.example.dahua.dao.UserDao; | |
10 | +import com.example.dahua.lib.ToolKits; | |
11 | +import com.example.dahua.module.GateModule; | |
5 | 12 | import com.example.dahua.service.UserService; |
13 | +import com.sun.jna.Memory; | |
6 | 14 | import io.swagger.annotations.Api; |
7 | 15 | import io.swagger.annotations.ApiOperation; |
8 | 16 | import org.springframework.beans.factory.annotation.Autowired; |
... | ... | @@ -14,10 +22,12 @@ import java.io.File; |
14 | 22 | import java.io.FileNotFoundException; |
15 | 23 | import java.io.FileOutputStream; |
16 | 24 | import java.io.IOException; |
25 | +import java.nio.file.Files; | |
26 | +import java.util.List; | |
17 | 27 | |
18 | 28 | @RestController |
19 | 29 | @Api("文件管理器") |
20 | -@RequestMapping(value = "file/*",produces = MediaType.APPLICATION_JSON_UTF8_VALUE) | |
30 | +@RequestMapping(value = "file/*", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) | |
21 | 31 | public class FileControl { |
22 | 32 | |
23 | 33 | @Autowired |
... | ... | @@ -26,9 +36,12 @@ public class FileControl { |
26 | 36 | @Autowired |
27 | 37 | SendUserInfoTask sendUserInfoTask; |
28 | 38 | |
39 | + @Autowired | |
40 | + UserDao userDao; | |
41 | + | |
29 | 42 | @RequestMapping(method = RequestMethod.POST, value = "uploadImg") |
30 | 43 | public String uploadImg(@RequestParam("file") MultipartFile file, @RequestParam("schoolId") String schoolId, @RequestParam("studentCode") String studentCode, |
31 | - @RequestParam("clint_type") String clint_type,@RequestParam("userType") int userType) { | |
44 | + @RequestParam("clint_type") String clint_type, @RequestParam("userType") int userType) { | |
32 | 45 | System.out.println("schoolId:" + schoolId + " studentCode:" + studentCode); |
33 | 46 | String fileName = file.getOriginalFilename();//文件名 |
34 | 47 | |
... | ... | @@ -40,7 +53,7 @@ public class FileControl { |
40 | 53 | |
41 | 54 | fileOutputStream.write(file.getBytes()); |
42 | 55 | fileOutputStream.close(); |
43 | - userService.uploadImgAndUserInfo(dest.getAbsolutePath(), schoolId, studentCode, clint_type,userType,""); | |
56 | + userService.uploadImgAndUserInfo(dest.getAbsolutePath(), schoolId, studentCode, clint_type, userType, ""); | |
44 | 57 | return "1"; |
45 | 58 | } catch (FileNotFoundException e) { |
46 | 59 | e.printStackTrace(); |
... | ... | @@ -53,7 +66,7 @@ public class FileControl { |
53 | 66 | |
54 | 67 | @RequestMapping(method = RequestMethod.POST, value = "uploadImgToDev") |
55 | 68 | public String uploadImgToDev(@RequestParam("file") MultipartFile file, @RequestParam("schoolId") String schoolId, @RequestParam("studentCode") String studentCode, |
56 | - @RequestParam("clint_type") String clint_type,@RequestParam("userType") int userType,@RequestParam("devid")String devid) { | |
69 | + @RequestParam("clint_type") String clint_type, @RequestParam("userType") int userType, @RequestParam("devid") String devid) { | |
57 | 70 | String fileName = file.getOriginalFilename();//文件名 |
58 | 71 | |
59 | 72 | File outFile = new File("C://imgCom"); |
... | ... | @@ -64,7 +77,7 @@ public class FileControl { |
64 | 77 | |
65 | 78 | fileOutputStream.write(file.getBytes()); |
66 | 79 | fileOutputStream.close(); |
67 | - userService.uploadImgAndUserInfo(dest.getAbsolutePath(), schoolId, studentCode, clint_type,userType,devid); | |
80 | + userService.uploadImgAndUserInfo(dest.getAbsolutePath(), schoolId, studentCode, clint_type, userType, devid); | |
68 | 81 | return "1"; |
69 | 82 | } catch (FileNotFoundException e) { |
70 | 83 | e.printStackTrace(); |
... | ... | @@ -91,6 +104,89 @@ public class FileControl { |
91 | 104 | } |
92 | 105 | |
93 | 106 | |
107 | + @RequestMapping(value = "findCard", method = RequestMethod.GET) | |
108 | + @ApiOperation(value = "查询设备卡信息") | |
109 | + public boolean findCard(@RequestParam("cardNum") String cardNum, @RequestParam("deviceId") String deviceId) { | |
110 | + boolean fincard = GateModule.findCard(cardNum, MyTask.lLongMap.get(deviceId)); | |
111 | + System.out.println("fincard:" + fincard + MyTask.lLongMap.get(deviceId)); | |
112 | + | |
113 | + return true; | |
114 | + } | |
115 | + | |
116 | + | |
117 | + @RequestMapping(value = "addCard", method = RequestMethod.GET) | |
118 | + @ApiOperation(value = "下发卡信息") | |
119 | + public int addCard(@RequestParam("schoolId") String schoolId, @RequestParam("targPath") String targPath) { | |
120 | + | |
121 | + File file = new File(targPath); | |
94 | 122 | |
123 | + File[] files = file.listFiles(); | |
124 | + | |
125 | + for (int i = 0; i < files.length; i++) { | |
126 | + File imgFile = files[i]; | |
127 | + String num = imgFile.getName().split("\\.")[0]; | |
128 | + TeacherBean teacherBean = userDao.getTeacher(schoolId, num); | |
129 | + | |
130 | + List<AttendanceBean> attendanceBeans = userDao.selectDeviceWithschool_id("22", schoolId); | |
131 | + for (int j = 0; j < attendanceBeans.size(); j++) { | |
132 | + AttendanceBean attendanceBean = attendanceBeans.get(j); | |
133 | + int addCard = GateModule.insertCard(cardNo(teacherBean.getTeacher_num()), teacherBean.getUser_id(), teacherBean.getName(), | |
134 | + "123456", 1, 1, 1, 1, 1, | |
135 | + "2020-01-01 00:00:00", "2040-01-01 12:00:00", MyTask.lLongMap.get(attendanceBean.getClint_id())); | |
136 | + Memory memory = ToolKits.readPictureFile(imgFile.getAbsolutePath()); | |
137 | + GateModule.addFaceInfo(teacherBean.getUser_id(), memory, MyTask.lLongMap.get(attendanceBean.getClint_id())); | |
138 | + userDao.saveRecordNo(teacherBean.getUser_id(), addCard, teacherBean.getName(), attendanceBean.getClint_id()); | |
139 | + System.out.println("teacherBean:" + teacherBean.toString() + " clientid:" + attendanceBean.getClint_id()); | |
140 | + } | |
141 | + | |
142 | + | |
143 | + } | |
144 | + | |
145 | + | |
146 | + return 1; | |
147 | + } | |
95 | 148 | |
149 | + | |
150 | + @RequestMapping(value = "deleteCard", method = RequestMethod.GET) | |
151 | + @ApiOperation(value = "删除卡信息") | |
152 | + public boolean deleteCard(@RequestParam("recordNum") int recordNum, @RequestParam("deviceId") String deviceId) { | |
153 | + boolean deleteCard = GateModule.deleteCard(recordNum, MyTask.lLongMap.get(deviceId)); | |
154 | + System.out.println("addCard:" + deleteCard + "----" + MyTask.lLongMap.get(deviceId)); | |
155 | + return deleteCard; | |
156 | + } | |
157 | + | |
158 | + | |
159 | + @RequestMapping(value = "clearCard", method = RequestMethod.GET) | |
160 | + @ApiOperation(value = "清空卡信息") | |
161 | + public boolean clearCard(@RequestParam("deviceId") String deviceId) { | |
162 | + boolean clearCard = GateModule.clearCard(MyTask.lLongMap.get(deviceId)); | |
163 | + System.out.println("addCard:" + clearCard + "----" + MyTask.lLongMap.get(deviceId)); | |
164 | + return clearCard; | |
165 | + } | |
166 | + | |
167 | + @RequestMapping(value = "clearFaceInfo", method = RequestMethod.GET) | |
168 | + @ApiOperation(value = "清空人脸信息") | |
169 | + public boolean clearFaceInfo(@RequestParam("deviceId") String deviceId) { | |
170 | + boolean clearCard = GateModule.clearFaceInfo(MyTask.lLongMap.get(deviceId)); | |
171 | + System.out.println("addCard:" + clearCard + "----" + MyTask.lLongMap.get(deviceId)); | |
172 | + return clearCard; | |
173 | + } | |
174 | + | |
175 | + | |
176 | + public String cardNo(String cardDex) { | |
177 | + | |
178 | + String cardR = ""; | |
179 | + int length = cardDex.length(); | |
180 | + if (length != 8) { | |
181 | + System.out.println("卡号格式不正确:" + cardDex); | |
182 | + return cardDex; | |
183 | + } | |
184 | + while (length > 0) { | |
185 | + length -= 2; | |
186 | + cardR += cardDex.substring(length, length + 2); | |
187 | + } | |
188 | + | |
189 | + return cardR; | |
190 | + | |
191 | + } | |
96 | 192 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/dao/TestDao.java
cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java
... | ... | @@ -20,10 +20,10 @@ public interface UserDao { |
20 | 20 | @Select("select * from SZ_Attendance where school_id = #{school_id} and clint_type = #{clint_type} and clint_id = #{clint_id}") |
21 | 21 | List<AttendanceBean> getAttendanceBeanWithId(@Param("school_id")String school_id,@Param("clint_type")String clint_type,@Param("clint_id")String clint_id); |
22 | 22 | |
23 | - @Select(" select * from SZ_V_School_Student where school_id = #{school_id} and studentcode = #{studentcode}") | |
23 | + @Select(" select Top(1)* from SZ_V_School_Student where school_id = #{school_id} and studentcode = #{studentcode}") | |
24 | 24 | UserInfoBean getUserInfo(@Param("school_id")String school_id,@Param("studentcode")String studentcode); |
25 | 25 | |
26 | - @Select(" select * from SZ_V_School_Teacher where school_id = #{school_id} and num = #{num}") | |
26 | + @Select(" select Top(1)* from SZ_V_School_Teacher where school_id = #{school_id} and num = #{num}") | |
27 | 27 | TeacherBean getTeacher(@Param("school_id")String school_id, @Param("num")String num); |
28 | 28 | |
29 | 29 | @Select(" select Top(1)* from SZ_V_School_Teacher where teacher_id = #{teacher_id}") |
... | ... | @@ -100,4 +100,7 @@ public interface UserDao { |
100 | 100 | @Select("select * from SZ_V_Card where num=#{num}") |
101 | 101 | CardBean getCards(@Param("num")String num); |
102 | 102 | |
103 | + @Select("select clint_id from SZ_Attendance where school_id = 4 and clint_type = 8") | |
104 | + List<String> getClintIds(); | |
105 | + | |
103 | 106 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java
... | ... | @@ -494,7 +494,7 @@ public class GateModule { |
494 | 494 | /** |
495 | 495 | * 清除所有卡信息 |
496 | 496 | */ |
497 | - public static boolean clearCard() { | |
497 | + public static boolean clearCard(LLong lLong) { | |
498 | 498 | /** |
499 | 499 | * 记录集操作 |
500 | 500 | */ |
... | ... | @@ -502,7 +502,7 @@ public class GateModule { |
502 | 502 | msg.emType = EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD; // 门禁卡记录集信息类型 |
503 | 503 | |
504 | 504 | msg.write(); |
505 | - boolean bRet = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, | |
505 | + boolean bRet = LoginModule.netsdk.CLIENT_ControlDevice(lLong, | |
506 | 506 | CtrlType.CTRLTYPE_CTRL_RECORDSET_CLEAR, msg.getPointer(), 5000); |
507 | 507 | msg.read(); |
508 | 508 | if(!bRet){ |
... | ... | @@ -727,7 +727,7 @@ public class GateModule { |
727 | 727 | /** |
728 | 728 | * 清除所有人脸 |
729 | 729 | */ |
730 | - public static boolean clearFaceInfo() { | |
730 | + public static boolean clearFaceInfo(LLong lLong) { | |
731 | 731 | int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_CLEAR; // 清除 |
732 | 732 | |
733 | 733 | /** |
... | ... | @@ -742,7 +742,7 @@ public class GateModule { |
742 | 742 | |
743 | 743 | stIn.write(); |
744 | 744 | stOut.write(); |
745 | - boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(LoginModule.m_hLoginHandle, emType, | |
745 | + boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(lLong, emType, | |
746 | 746 | stIn.getPointer(), stOut.getPointer(), 5000); |
747 | 747 | stIn.read(); |
748 | 748 | stOut.read(); |
... | ... | @@ -835,6 +835,9 @@ public class GateModule { |
835 | 835 | findCondition.read(); |
836 | 836 | |
837 | 837 | m_lFindHandle = stOut.lFindeHandle; |
838 | + | |
839 | + System.err.println("没查到卡信息!" + ToolKits.getErrorCodePrint()); | |
840 | + | |
838 | 841 | return true; |
839 | 842 | } |
840 | 843 | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/mqtt/MqttManager.java
... | ... | @@ -92,10 +92,10 @@ public class MqttManager { |
92 | 92 | } |
93 | 93 | } |
94 | 94 | |
95 | - public void sendMq(String deviceId,int cmd) { | |
95 | + public void sendMq(String deviceId,String content) { | |
96 | 96 | String recvClientId = groupId + "@@@"+deviceId; |
97 | 97 | final String p2pSendTopic = topic + "/p2p/" + recvClientId; |
98 | - String content = "{\"cmd\":\""+cmd+"\",\"clientId\":\"\",\"data\": \"6:00-19:25\"}"; | |
98 | +// String content = "{\"cmd\":\""+cmd+"\",\"clientId\":\"\",\"data\": \"6:00-19:25\"}"; | |
99 | 99 | MqttMessage message = new MqttMessage(content.getBytes()); |
100 | 100 | message.setQos(qosLevel); |
101 | 101 | System.out.println("发送内容:" + p2pSendTopic); | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java
... | ... | @@ -23,9 +23,9 @@ public class UserServiceImp implements UserService { |
23 | 23 | SendUserInfoTask myTask; |
24 | 24 | |
25 | 25 | @Override |
26 | - public List<AttendanceBean> getAttendanceBeans(String schoolId, String clint_type,String devid) { | |
26 | + public List<AttendanceBean> getAttendanceBeans(String schoolId, String clint_type, String devid) { | |
27 | 27 | |
28 | - if (!StringUtils.isEmpty(devid))return userDao.getAttendanceBeanWithId(schoolId,clint_type,devid); | |
28 | + if (!StringUtils.isEmpty(devid)) return userDao.getAttendanceBeanWithId(schoolId, clint_type, devid); | |
29 | 29 | |
30 | 30 | return userDao.getAttendanceBeans(schoolId, clint_type); |
31 | 31 | } |
... | ... | @@ -45,9 +45,9 @@ public class UserServiceImp implements UserService { |
45 | 45 | * @return |
46 | 46 | */ |
47 | 47 | @Override |
48 | - public boolean uploadImgAndUserInfo(String file, String schoolId, String studentCode, String clint_type, int userType,String devid) { | |
49 | - List<AttendanceBean> attendanceBeans = getAttendanceBeans(schoolId, clint_type,devid);//获取学校下的大华设备 | |
50 | - | |
48 | + public boolean uploadImgAndUserInfo(String file, String schoolId, String studentCode, String clint_type, int userType, String devid) { | |
49 | + List<AttendanceBean> attendanceBeans = getAttendanceBeans(schoolId, clint_type, devid);//获取学校下的大华设备 | |
50 | + System.out.println("设备数量:" + attendanceBeans.size()); | |
51 | 51 | UserInfoBean userInfoBean = null; |
52 | 52 | try { |
53 | 53 | if (userType == 2) { | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java
1 | 1 | package com.example.dahua.utils; |
2 | 2 | |
3 | +import com.example.dahua.lib.CompressPic; | |
4 | +import com.example.dahua.lib.FilePath; | |
3 | 5 | import org.springframework.core.io.FileSystemResource; |
4 | 6 | import org.springframework.http.HttpEntity; |
5 | 7 | import org.springframework.http.HttpHeaders; |
... | ... | @@ -22,7 +24,13 @@ public class HttpUtils { |
22 | 24 | System.out.println("图片不存在"); |
23 | 25 | return false; |
24 | 26 | } |
25 | - | |
27 | + String targPath = FilePath.picPathComp + studentCode+ ".jpg"; | |
28 | +// String targPath = "C:\\Users\\taohandong\\Desktop\\comp\\"+userInfoBean.getStudentcode()+".jpg"; | |
29 | + try { | |
30 | + CompressPic.CompressPic(file.getAbsolutePath(), targPath, studentCode);//压缩后的图片 | |
31 | + } catch (Exception e) { | |
32 | + e.printStackTrace(); | |
33 | + } | |
26 | 34 | String url = "http://121.40.109.21:8991/file/uploadImg"; |
27 | 35 | // String url = "http://localhost:8991/file/uploadImg"; |
28 | 36 | RestTemplate restTemplate = new RestTemplate(); |
... | ... | @@ -35,7 +43,7 @@ public class HttpUtils { |
35 | 43 | |
36 | 44 | MultiValueMap<String,Object> multivaluedMap = new LinkedMultiValueMap<>(); |
37 | 45 | |
38 | - FileSystemResource fileSystemResource = new FileSystemResource(file); | |
46 | + FileSystemResource fileSystemResource = new FileSystemResource(targPath); | |
39 | 47 | |
40 | 48 | multivaluedMap.add("file",fileSystemResource); |
41 | 49 | multivaluedMap.add("schoolId",schoolId); | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/xiananDao/SendRecordDao.java
... | ... | @@ -79,5 +79,10 @@ public interface SendRecordDao { |
79 | 79 | void addFaceRecoder(@Param("deviceId") String deviceId, @Param("user_id") String user_id, @Param("name") String name, |
80 | 80 | @Param("imgurl") String imgurl, @Param("inOrOut") int inOrOut, @Param("time") String time, |
81 | 81 | @Param("cardNum") String cardNum); |
82 | + | |
83 | + | |
84 | + @Select("select stu.studentcode from DBLan137.smartcampus.dbo.SZ_V_School_Student as stu where stu.student_num in (select distinct NUM from Face_SendFail where schoolId = 1037 and time > '2020-04-13' and userType = 2)") | |
85 | + List<String> getStudentCode(); | |
86 | + | |
82 | 87 | } |
83 | 88 | ... | ... |
cloud/dahua/src/main/resources/bootstrap.yml
... | ... | @@ -6,7 +6,7 @@ server: |
6 | 6 | #服务名称 |
7 | 7 | spring: |
8 | 8 | application: |
9 | - name: dahua | |
9 | + name: dahuaserver | |
10 | 10 | |
11 | 11 | #management: |
12 | 12 | # endpoints: |
... | ... | @@ -36,5 +36,5 @@ eureka: |
36 | 36 | lease-renewal-interval-in-seconds: 10 #每隔几秒告诉eureka服务器我还存活,用于心跳检测 |
37 | 37 | lease-expiration-duration-in-seconds: 10 #如果心跳检测一直没有发送,10秒后会从eureka服务器中将此服务剔除 |
38 | 38 | # status-page-url: http://${spring.cloud.client.ip-address}:${server.port}/doc.html # ${server.port}为该服务的端口号 |
39 | - hostname: 114.55.30.100 | |
39 | + hostname: localhost | |
40 | 40 | # status-page-url: http://${spring.cloud.client.ip-address}:${randomServerPort.value[5000,5005]}/document.html # ${server.port}为该服务的端口号 |
41 | 41 | \ No newline at end of file | ... | ... |
cloud/dahua/src/test/java/com/example/dahua/DahuaApplicationTests.java
... | ... | @@ -311,13 +311,16 @@ public class DahuaApplicationTests { |
311 | 311 | @Test |
312 | 312 | public void test2() { |
313 | 313 | |
314 | - /* RestTemplate restTemplate = new RestTemplate(); | |
315 | - | |
316 | - | |
317 | - String url = "http://localhost:8991/user/checkFace?url=C:\\Users\\taohandong\\Pictures\\test.jpg"; | |
314 | + List<String> stuCodes = sendRecordDao.getStudentCode(); | |
318 | 315 | |
316 | + RestTemplate restTemplate = new RestTemplate(); | |
319 | 317 | |
320 | - System.out.println("result:"+ restTemplate.getForObject(url,String.class));*/ | |
318 | + for (int i = 0; i < stuCodes.size(); i++) { | |
319 | + String stuCode = stuCodes.get(i); | |
320 | + String url = "http://114.55.30.100:8991/user/checkFace?url=E:/wwwhtdocs/SmartCampus/face17e5/School1037/Student/" + stuCode + ".png"; | |
321 | + ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class); | |
322 | + System.out.println("responseEntity:" + responseEntity.getBody()); | |
323 | + } | |
321 | 324 | |
322 | 325 | |
323 | 326 | } |
... | ... | @@ -326,11 +329,11 @@ public class DahuaApplicationTests { |
326 | 329 | public void test1() { |
327 | 330 | |
328 | 331 | |
329 | - String url = "http://121.40.109.21:9000/cleanFail?deviceId="; | |
330 | - RestTemplate restTemplate = new RestTemplate(); | |
331 | - | |
332 | - String result = restTemplate.getForObject(url+"253164293",String.class); | |
333 | -System.out.println("result:"+result); | |
332 | +// String url = "http://121.40.109.21:9000/cleanFail?deviceId="; | |
333 | +// RestTemplate restTemplate = new RestTemplate(); | |
334 | +// | |
335 | +// String result = restTemplate.getForObject(url + "253164293", String.class); | |
336 | +// System.out.println("result:" + result); | |
334 | 337 | /* try { |
335 | 338 | BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\TaoHandong\\copy\\宿舍.txt")); |
336 | 339 | String content = null; |
... | ... | @@ -368,20 +371,67 @@ System.out.println("result:"+result); |
368 | 371 | } |
369 | 372 | |
370 | 373 | |
374 | + | |
371 | 375 | @Test |
372 | 376 | public void Mqtt() { |
373 | 377 | |
378 | + | |
379 | + | |
380 | + for (int i = 0; i < 2; i++) { | |
381 | + sendUserInfoTask.testSMS(); | |
382 | + } | |
383 | + | |
384 | + /* File file = new File("C:\\Users\\Administrator\\Desktop\\2020-04-30 08.log"); | |
385 | + | |
386 | + try { | |
387 | + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GB2312")); | |
388 | + | |
389 | + String content = null; | |
390 | + | |
391 | + MqttManager mqttManager = new MqttManager(); | |
392 | + | |
393 | + mqttManager.init(); | |
394 | + | |
395 | + while ((content=bufferedReader.readLine())!=null){ | |
396 | + | |
397 | + String cardNum = content.substring(content.indexOf("卡号")+3,content.indexOf("卡号")+11); | |
398 | + | |
399 | + System.out.println("cardNum:"+cardNum); | |
400 | + | |
401 | + | |
402 | + String inOrOut = content.substring(content.indexOf("方向:")+3,content.indexOf("方向:")+5).endsWith("进门")?"0":"1"; | |
403 | + | |
404 | + System.out.println("inOrOut:"+inOrOut); | |
405 | + | |
406 | + | |
407 | + List<String> clintIds = userDao.getClintIds(); | |
408 | + for (int i = 0; i < clintIds.size(); i++) { | |
409 | + String clintId = clintIds.get(i); | |
410 | + | |
411 | + String data = "{\"cmd\":\""+34+"\",\"clientId\":\""+clintId+"\",\"data\":{\"cardNum\":\""+cardNum+"\",\"inOrOut\":\""+inOrOut+"\"}}"; | |
412 | + | |
413 | + mqttManager.sendMq(clintId, data); | |
414 | + } | |
415 | + | |
416 | + } | |
417 | + | |
418 | + } catch (FileNotFoundException e) { | |
419 | + e.printStackTrace(); | |
420 | + } catch (IOException e) { | |
421 | + e.printStackTrace(); | |
422 | + }*/ | |
423 | + | |
374 | 424 | /* MqttManager mqttManager = new MqttManager(); |
375 | 425 | |
376 | 426 | mqttManager.init(); |
377 | 427 | |
378 | - List<String> stringList = userDao.getAllDecWithSch(479); | |
428 | + List<String> stringList = userDao.getAllDecWithSch(27); | |
379 | 429 | System.out.println("stringList:" + stringList); |
380 | 430 | for (int i = 0; i < stringList.size(); i++) { |
381 | 431 | String devId = stringList.get(i); |
382 | 432 | //30关闭显示屏 31打开显示屏,9升级客户端 |
383 | 433 | |
384 | - mqttManager.sendMq(devId, 31); | |
434 | + mqttManager.sendMq(devId, 9); | |
385 | 435 | }*/ |
386 | 436 | } |
387 | 437 | ... | ... |
cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java
cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AbstractFileService.java
... | ... | @@ -23,23 +23,9 @@ public abstract class AbstractFileService implements FileService { |
23 | 23 | @Override |
24 | 24 | public FileInfo upload(MultipartFile file,String filePath) throws Exception { |
25 | 25 | FileInfo fileInfo = FileUtil.getFileInfo(file); |
26 | -// FileInfo oldFileInfo = getFileDao().getById(fileInfo.getId()); | |
27 | -// if (oldFileInfo != null) { | |
28 | -// return oldFileInfo; | |
29 | -// } | |
30 | -// | |
31 | -// if (!fileInfo.getName().contains(".")) { | |
32 | -// throw new IllegalArgumentException("缺少后缀名"); | |
33 | -// } | |
34 | 26 | |
35 | 27 | uploadFile(file, fileInfo,filePath); |
36 | 28 | |
37 | -// fileInfo.setSource(fileType().name());// 设置文件来源 | |
38 | -// getFileDao().save(fileInfo);// 将文件信息保存到数据库 | |
39 | -// // 本地保存文件 | |
40 | -// FileUtil.saveFile(file,fileInfo.getPath()); | |
41 | -// log.info("上传文件:{}", fileInfo); | |
42 | - | |
43 | 29 | return fileInfo; |
44 | 30 | } |
45 | 31 | ... | ... |
cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java
1 | 1 | package com.sincere.file.service.impl; |
2 | 2 | |
3 | 3 | import com.aliyun.oss.OSSClient; |
4 | +import com.aliyun.oss.model.OSSObject; | |
4 | 5 | import com.aliyun.oss.model.PutObjectResult; |
5 | 6 | import com.sincere.file.model.FileInfo; |
6 | 7 | import org.springframework.beans.factory.annotation.Autowired; |
... | ... | @@ -42,9 +43,19 @@ public class AliyunOssServiceImpl extends AbstractFileService { |
42 | 43 | |
43 | 44 | @Override |
44 | 45 | protected void uploadFile(MultipartFile file, FileInfo fileInfo,String filePath) throws Exception { |
45 | - String fileName = UUID.randomUUID().toString()+"."+fileInfo.getName().split("\\.")[1]; | |
46 | - ossClient.putObject(bucketName, filePath+"/"+fileName, file.getInputStream()); | |
47 | - fileInfo.setUrl(domain+"/" +filePath+ "/" + fileName); | |
46 | +// String fileName = UUID.randomUUID().toString()+"."+fileInfo.getName().split("\\.")[1]; | |
47 | + String fileName = fileInfo.getName(); | |
48 | + String keyObjectName = filePath+"/"+fileName; | |
49 | + | |
50 | +// boolean isExist = ossClient.doesObjectExist(bucketName, keyObjectName); | |
51 | +// if (isExist){ | |
52 | +// OSSObject ossObject = ossClient.getObject(bucketName,keyObjectName); | |
53 | +// keyObjectName = filePath+"/"+fileName.split("\\.")[0]+; | |
54 | +// } | |
55 | + | |
56 | + ossClient.putObject(bucketName, keyObjectName, file.getInputStream()); | |
57 | + | |
58 | + fileInfo.setUrl(domain+"/" +keyObjectName); | |
48 | 59 | } |
49 | 60 | |
50 | 61 | @Override | ... | ... |
cloud/getaway/src/main/resources/application.yml
... | ... | @@ -62,6 +62,13 @@ spring: |
62 | 62 | - Path=/dahua/** |
63 | 63 | filters: |
64 | 64 | - StripPrefix=1 |
65 | + - id: haikangserver | |
66 | + # uri: lb://dahua | |
67 | + uri: http://121.40.109.21:9898 | |
68 | + predicates: | |
69 | + - Path=/haikang/** | |
70 | + filters: | |
71 | + - StripPrefix=1 | |
65 | 72 | # default-filters: |
66 | 73 | # - DedupeResponseHeader=Access-Control-Allow-Origin, RETAIN_UNIQUE |
67 | 74 | # discovery: |
... | ... | @@ -85,4 +92,4 @@ ribbon: |
85 | 92 | |
86 | 93 | |
87 | 94 | url: |
88 | - ignored: /SmartCampusWebApi/**,/authserver/**,/NewSmartCampus/**,/file-center/**,/dahua/** | |
89 | 95 | \ No newline at end of file |
96 | + ignored: /SmartCampusWebApi/**,/authserver/**,/NewSmartCampus/**,/file-center/**,/dahua/**,/haikang/** | |
90 | 97 | \ No newline at end of file | ... | ... |
cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java
cloud/haikang/src/main/java/com/sincere/haikang/async/SendUserAsync.java
... | ... | @@ -8,13 +8,18 @@ import com.sincere.haikang.dao.DeviceDao; |
8 | 8 | import com.sincere.haikang.utils.FileUtils; |
9 | 9 | import org.springframework.beans.factory.annotation.Autowired; |
10 | 10 | import org.springframework.beans.factory.annotation.Value; |
11 | +import org.springframework.http.ResponseEntity; | |
11 | 12 | import org.springframework.scheduling.annotation.Async; |
12 | 13 | import org.springframework.stereotype.Component; |
13 | 14 | import org.springframework.util.StringUtils; |
15 | +import org.springframework.web.client.RestTemplate; | |
14 | 16 | |
15 | 17 | import java.io.File; |
16 | 18 | import java.io.FileOutputStream; |
19 | +import java.text.SimpleDateFormat; | |
20 | +import java.util.Date; | |
17 | 21 | import java.util.List; |
22 | +import java.util.Random; | |
18 | 23 | |
19 | 24 | @Component |
20 | 25 | public class SendUserAsync { |
... | ... | @@ -141,4 +146,6 @@ public class SendUserAsync { |
141 | 146 | |
142 | 147 | } |
143 | 148 | |
149 | + | |
150 | + | |
144 | 151 | } | ... | ... |
cloud/haikang/src/main/java/com/sincere/haikang/bean/SmsBean.java
0 → 100644
... | ... | @@ -0,0 +1,105 @@ |
1 | +package com.sincere.haikang.bean; | |
2 | + | |
3 | +import io.swagger.annotations.ApiModel; | |
4 | + | |
5 | +@ApiModel | |
6 | +public class SmsBean { | |
7 | + | |
8 | + private String LoginName = "13095656162"; | |
9 | + private String MessageContent ="你好,五一快乐"; | |
10 | + private String MessageType = "2"; | |
11 | + private String Password = "yxt_123456"; | |
12 | + private String ScheduleTime = ""; | |
13 | + private String SerialNumber = ""; | |
14 | + private String SpCode ="13095656162"; | |
15 | + private String UserNumber=""; | |
16 | + private String f= "1"; | |
17 | + | |
18 | + | |
19 | + public String getLoginName() { | |
20 | + return LoginName; | |
21 | + } | |
22 | + | |
23 | + public void setLoginName(String loginName) { | |
24 | + LoginName = loginName; | |
25 | + } | |
26 | + | |
27 | + public String getMessageContent() { | |
28 | + return MessageContent; | |
29 | + } | |
30 | + | |
31 | + public void setMessageContent(String messageContent) { | |
32 | + MessageContent = messageContent; | |
33 | + } | |
34 | + | |
35 | + public String getMessageType() { | |
36 | + return MessageType; | |
37 | + } | |
38 | + | |
39 | + public void setMessageType(String messageType) { | |
40 | + MessageType = messageType; | |
41 | + } | |
42 | + | |
43 | + public String getPassword() { | |
44 | + return Password; | |
45 | + } | |
46 | + | |
47 | + public void setPassword(String password) { | |
48 | + Password = password; | |
49 | + } | |
50 | + | |
51 | + public String getScheduleTime() { | |
52 | + return ScheduleTime; | |
53 | + } | |
54 | + | |
55 | + public void setScheduleTime(String scheduleTime) { | |
56 | + ScheduleTime = scheduleTime; | |
57 | + } | |
58 | + | |
59 | + public String getSerialNumber() { | |
60 | + return SerialNumber; | |
61 | + } | |
62 | + | |
63 | + public void setSerialNumber(String serialNumber) { | |
64 | + SerialNumber = serialNumber; | |
65 | + } | |
66 | + | |
67 | + public String getSpCode() { | |
68 | + return SpCode; | |
69 | + } | |
70 | + | |
71 | + public void setSpCode(String spCode) { | |
72 | + SpCode = spCode; | |
73 | + } | |
74 | + | |
75 | + public String getUserNumber() { | |
76 | + return UserNumber; | |
77 | + } | |
78 | + | |
79 | + public void setUserNumber(String userNumber) { | |
80 | + UserNumber = userNumber; | |
81 | + } | |
82 | + | |
83 | + public String getF() { | |
84 | + return f; | |
85 | + } | |
86 | + | |
87 | + public void setF(String f) { | |
88 | + this.f = f; | |
89 | + } | |
90 | + | |
91 | + @Override | |
92 | + public String toString() { | |
93 | + return "SmsBean{" + | |
94 | + "LoginName='" + LoginName + '\'' + | |
95 | + ", MessageContent='" + MessageContent + '\'' + | |
96 | + ", MessageType='" + MessageType + '\'' + | |
97 | + ", Password='" + Password + '\'' + | |
98 | + ", ScheduleTime='" + ScheduleTime + '\'' + | |
99 | + ", SerialNumber='" + SerialNumber + '\'' + | |
100 | + ", SpCode='" + SpCode + '\'' + | |
101 | + ", UserNumber='" + UserNumber + '\'' + | |
102 | + ", f='" + f + '\'' + | |
103 | + '}'; | |
104 | + } | |
105 | +} | ... | ... |
cloud/haikang/src/main/java/com/sincere/haikang/control/SmsControl.java
1 | 1 | package com.sincere.haikang.control; |
2 | 2 | |
3 | +import com.sincere.haikang.bean.SmsBean; | |
3 | 4 | import com.sincere.haikang.bean.StudentBean; |
4 | 5 | import com.sincere.haikang.utils.EncodeUtils; |
6 | +import com.sincere.haikang.utils.FileUtils; | |
5 | 7 | import com.sincere.haikang.utils.SmsHttpUtils; |
6 | 8 | import io.swagger.annotations.Api; |
7 | 9 | import io.swagger.annotations.ApiImplicitParam; |
8 | -import org.springframework.web.bind.annotation.RequestMapping; | |
9 | -import org.springframework.web.bind.annotation.RequestMethod; | |
10 | -import org.springframework.web.bind.annotation.RequestParam; | |
11 | -import org.springframework.web.bind.annotation.RestController; | |
10 | +import org.springframework.boot.actuate.trace.http.HttpTrace; | |
11 | +import org.springframework.util.MultiValueMap; | |
12 | +import org.springframework.web.bind.annotation.*; | |
12 | 13 | |
13 | 14 | import java.io.IOException; |
14 | 15 | import java.io.UnsupportedEncodingException; |
... | ... | @@ -20,17 +21,38 @@ import java.util.*; |
20 | 21 | @RequestMapping(value = "sms/*") |
21 | 22 | public class SmsControl { |
22 | 23 | |
23 | - @RequestMapping(value = "sendMsg", method = RequestMethod.GET) | |
24 | + | |
25 | + @RequestMapping(value = "sendMsg", method = RequestMethod.GET,produces="application/json;charset=UTF-8") | |
26 | + @ResponseBody | |
24 | 27 | @ApiImplicitParam(name = "ExtendAccessNum",required = false) |
25 | 28 | public String sendMsg(@RequestParam("SpCode") String SpCode, @RequestParam("LoginName") String LoginName, @RequestParam("Password") String Password |
26 | 29 | , @RequestParam("MessageContent") String MessageContent, @RequestParam("MessageType") String MessageType |
27 | 30 | , @RequestParam("UserNumber") String UserNumber, @RequestParam("SerialNumber") String SerialNumber |
28 | 31 | , @RequestParam("ScheduleTime") String ScheduleTime, String ExtendAccessNum |
29 | 32 | , @RequestParam("f") String f) { |
30 | - | |
33 | + System.out.println("接口请求"); | |
31 | 34 | return sendSms(SpCode, LoginName, Password, MessageContent, MessageType, UserNumber, SerialNumber, ScheduleTime, ExtendAccessNum, f); |
35 | +// return "success"; | |
36 | + } | |
37 | + | |
38 | + @PostMapping(value = "sendMsgs") | |
39 | + public String sendMags(@RequestBody SmsBean smsBean){ | |
40 | + System.out.println("接口请求POST:"+smsBean.toString()); | |
41 | + return sendSms(smsBean.getSpCode(), smsBean.getLoginName(), smsBean.getPassword(), | |
42 | + smsBean.getMessageContent(), smsBean.getMessageType(), smsBean.getUserNumber(), smsBean.getSerialNumber(), | |
43 | + smsBean.getScheduleTime(), "", smsBean.getF()); | |
44 | + | |
32 | 45 | } |
33 | 46 | |
47 | +// @PostMapping(value = "sendMsg") | |
48 | +// public String sendMsg(@RequestBody MultiValueMap<String,String> multiValueMap){ | |
49 | +// | |
50 | +// String SpCode = multiValueMap. | |
51 | +// | |
52 | +// | |
53 | +// } | |
54 | + | |
55 | + | |
34 | 56 | private String sendSms(String spCode, String loginName, String password, String messageContent, String messageType, String userNumber, String serialNumber, String scheduleTime, String extendAccessNum, String f) { |
35 | 57 | String url = "http://ytx.zj165.com:9098/api/send"; |
36 | 58 | Map<String, Object> params = initSmsParams(spCode, loginName, password, messageContent, messageType, userNumber, serialNumber, scheduleTime, extendAccessNum, f); |
... | ... | @@ -38,9 +60,12 @@ public class SmsControl { |
38 | 60 | try { |
39 | 61 | result = SmsHttpUtils.doGet(url, params); |
40 | 62 | } catch (IOException e) { |
63 | + FileUtils.getInstance().writeLogs(String.format("GET短信发送的响应失败【%s】",e.toString()),FileUtils.liantong); | |
41 | 64 | e.printStackTrace(); |
42 | 65 | } |
43 | 66 | System.out.println(String.format("GET短信发送的响应报文【%s】",result)+" messageContent:"+messageContent); |
67 | + | |
68 | + FileUtils.getInstance().writeLogs(String.format("GET短信发送的响应报文【%s】",result),FileUtils.liantong); | |
44 | 69 | return result; |
45 | 70 | } |
46 | 71 | ... | ... |
cloud/haikang/src/main/java/com/sincere/haikang/utils/FileUtils.java
... | ... | @@ -36,6 +36,8 @@ public class FileUtils { |
36 | 36 | |
37 | 37 | public static String yichangtime = "上报异常时间.txt";//学校id记录表 |
38 | 38 | |
39 | + public static String liantong = "联通短信.txt";//学校id记录表 | |
40 | + | |
39 | 41 | public static FileUtils getInstance() { |
40 | 42 | if (null == fileUtils) { |
41 | 43 | synchronized (FileUtils.class) { | ... | ... |
cloud/haikang/src/main/resources/application.yaml
cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java
... | ... | @@ -509,7 +509,8 @@ public class CMSServer implements ApplicationRunner { |
509 | 509 | int err = hCEhomeSS.NET_ESS_GetLastError(); |
510 | 510 | System.out.println("NET_ESS_ClientDoUpload失败,错误号:" + err); |
511 | 511 | } else { |
512 | - url = "http://120.26.116.253:" + 8081 + new String(szUrl).trim(); | |
512 | +// url = "http://120.26.116.253:" + 8081 + new String(szUrl).trim(); | |
513 | + url = "http://114.55.30.100:" + 8081 + new String(szUrl).trim(); | |
513 | 514 | // System.err.println("NET_ESS_ClientDoUpload成功!:" + url); |
514 | 515 | } |
515 | 516 | hCEhomeSS.NET_ESS_DestroyClient(client);//释放资源 | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java
... | ... | @@ -44,11 +44,6 @@ public class SendUserAsync { |
44 | 44 | //1、检测图片是否合格 |
45 | 45 | boolean check = true; |
46 | 46 | if (check) {//合格 |
47 | - try { | |
48 | - CompressPic.CompressPic(srcFile, picUrl); | |
49 | - } catch (Exception e) { | |
50 | - e.printStackTrace(); | |
51 | - } | |
52 | 47 | //根据设备是5603 还是新设备 |
53 | 48 | String employeeNo = ""; |
54 | 49 | if (deviceId.contains("ymzx")||deviceId.contains("5607")||deviceId.contains("5671")||deviceId.contains("5604")){ | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java
... | ... | @@ -59,6 +59,7 @@ public class UserControl { |
59 | 59 | @RequestParam("endTime") String endTime, @RequestParam("validTimeEnabled") int validTimeEnabled, @RequestParam("userType") String userType) { |
60 | 60 | |
61 | 61 | try { |
62 | + | |
62 | 63 | if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png"); |
63 | 64 | if (new File(filePath.trim()).exists()) { |
64 | 65 | return sendImg(filePath, deviceId, card, name, userType); |
... | ... | @@ -74,11 +75,10 @@ public class UserControl { |
74 | 75 | } |
75 | 76 | |
76 | 77 | private boolean sendImg(String filePath, String deviceId, String card, String name, String userType) { |
77 | - long time = System.currentTimeMillis(); | |
78 | - String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(new Date()); | |
78 | + String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); | |
79 | 79 | Calendar calendar = Calendar.getInstance(); |
80 | 80 | calendar.add(Calendar.YEAR, 10); |
81 | - String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(calendar.getTime()); | |
81 | + String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); | |
82 | 82 | |
83 | 83 | String targetPath = FileUtils.picPathComp + new File(filePath).getName(); |
84 | 84 | try { |
... | ... | @@ -88,10 +88,19 @@ public class UserControl { |
88 | 88 | } else {//单图发送 |
89 | 89 | isPiliang = 1; |
90 | 90 | } |
91 | + | |
92 | + try { | |
93 | + CompressPic.CompressPic(filePath, targetPath); | |
94 | + } catch (Exception e) { | |
95 | + e.printStackTrace(); | |
96 | + } | |
97 | + | |
98 | + FileUtils.getInstance().writeLogs("startTime:" + startTime + "---endTime:" + endTime, "下发参数"); | |
91 | 99 | if (cmsServer.getIsDeviceOnline(deviceId)) |
100 | + | |
92 | 101 | sendUserAsync.sendStuToHaiKang(filePath, targetPath, Long.parseLong(getCard(card), 16) + "", startTime, endTime, 1, name, deviceId, userType, isPiliang); |
93 | 102 | else { |
94 | - sendUserAsync.uploadImgs(filePath, card, name, deviceId, startTime, endTime, 1, userType); | |
103 | + sendUserAsync.uploadImgs(targetPath, card, name, deviceId, startTime, endTime, 1, userType); | |
95 | 104 | } |
96 | 105 | // System.out.println("time:" + (System.currentTimeMillis() - time) / 1000); |
97 | 106 | return true; |
... | ... | @@ -118,21 +127,57 @@ public class UserControl { |
118 | 127 | String[] devStrs = devices.split(","); |
119 | 128 | |
120 | 129 | File[] imgStrs = new File(imgPath).listFiles(); |
130 | + String schoolId = null; | |
131 | + | |
132 | + logger.error("sendImg2Devices:{}",images2Ddevices.toString()); | |
121 | 133 | |
122 | 134 | if (null != imgStrs) { |
123 | 135 | for (int i = 0; i < imgStrs.length; i++) { |
124 | 136 | |
125 | 137 | File filePath = imgStrs[i];//图片路径 |
126 | 138 | if (filePath.exists()) { |
139 | + | |
127 | 140 | String studentCode = filePath.getName().split("\\.")[0]; |
128 | - StudentBean studentBean = userDao.getStudent_NumWitdCode(studentCode); | |
129 | - if (null != studentBean) { | |
130 | - for (int j = 0; j < devStrs.length; j++) { | |
131 | - String devId = devStrs[j]; | |
132 | - sendUserAsync.uploadImgs(filePath.getAbsolutePath(), studentBean.getStudent_num(), studentBean.getName(), devId, startTime, endTime, 1, images2Ddevices.getUserType()); | |
141 | + | |
142 | + String targetPath = FileUtils.picPathComp + filePath.getName(); | |
143 | + | |
144 | + try { | |
145 | + CompressPic.CompressPic(filePath.getAbsolutePath(), targetPath); | |
146 | + } catch (Exception e) { | |
147 | + e.printStackTrace(); | |
148 | + } | |
149 | + /** | |
150 | + * 下发给不同设备 | |
151 | + */ | |
152 | + for (int j = 0; j < devStrs.length; j++) { | |
153 | + String devId = devStrs[j]; | |
154 | + if (schoolId == null) schoolId = userDao.getSchoolIdWithDevId(devId); | |
155 | + | |
156 | + StudentBean studentBean = null; | |
157 | + String card = null; | |
158 | + String name = null; | |
159 | + | |
160 | + if (images2Ddevices.getUserType().equals("1")) {//老师 | |
161 | + studentBean = userDao.getTeacherWithstudentcode(studentCode, schoolId); | |
162 | + card = studentBean.getTeacher_num(); | |
163 | + name = studentBean.getName(); | |
164 | + } else if (images2Ddevices.getUserType().equals("2")) {//学生 | |
165 | + studentBean = userDao.getStudentWithstudentcode(studentCode, schoolId); | |
166 | + card = studentBean.getStudent_num(); | |
167 | + name = studentBean.getName(); | |
168 | + } | |
169 | + | |
170 | + if (null != studentBean) { | |
171 | + if (cmsServer.getIsDeviceOnline(devId)) { | |
172 | + | |
173 | + sendUserAsync.sendStuToHaiKang(filePath.getAbsolutePath(), targetPath, Long.parseLong(getCard(card), 16) + "", startTime, endTime, 1, name, devId, images2Ddevices.getUserType(), 0); | |
174 | + | |
175 | + } else { | |
176 | + sendUserAsync.uploadImgs(targetPath, card, name, devId, startTime, endTime, 1, images2Ddevices.getUserType()); | |
177 | + } | |
178 | + } else { | |
179 | + logger.error("学生对象不存在"); | |
133 | 180 | } |
134 | - } else { | |
135 | - logger.error("学生对象不存在"); | |
136 | 181 | } |
137 | 182 | |
138 | 183 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java
... | ... | @@ -211,6 +211,6 @@ public interface UserDao { |
211 | 211 | "where num = #{num} and school_id = #{schoolId}") |
212 | 212 | StudentBean getTeacherWithstudentcode(@Param("num") String num,@Param("schoolId")String schoolId); |
213 | 213 | |
214 | - @Select("select Top(1) * from SZ_V_School_Student where studentcode = #{studentcode}") | |
215 | - StudentBean getStudent_NumWitdCode(@Param("studentcode") String studentcode); | |
214 | + @Select("select school_id from SZ_Attendance where clint_id = #{devId}") | |
215 | + String getSchoolIdWithDevId(@Param("devId") String devId); | |
216 | 216 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java
... | ... | @@ -16,7 +16,7 @@ import java.io.InputStream; |
16 | 16 | public class CompressPic { |
17 | 17 | |
18 | 18 | public static String CompressPic(String srcPath, String targetPath) throws Exception { |
19 | - double cutPercent = 0.1; | |
19 | + double cutPercent = 0.2; | |
20 | 20 | File file = new File(srcPath.trim()); |
21 | 21 | FileInputStream fileInputStreamSrc = new FileInputStream(file); |
22 | 22 | BufferedImage bufferedImage = ImageIO.read(fileInputStreamSrc); | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/SendRecoderUtils.java
... | ... | @@ -23,7 +23,7 @@ public class SendRecoderUtils { |
23 | 23 | * @param userDao |
24 | 24 | */ |
25 | 25 | |
26 | - public void sendSuccess(SendRecordDao sendRecordDao, String card, String faceUrl, String deviceId, UserDao userDao, String userType) { | |
26 | + public synchronized void sendSuccess(SendRecordDao sendRecordDao, String card, String faceUrl, String deviceId, UserDao userDao, String userType) { | |
27 | 27 | // BigInteger bigInteger = new BigInteger(card); |
28 | 28 | long lon = Long.parseLong(card); |
29 | 29 | String resultCard = getCard(String.format("%08x", lon)).toUpperCase(); |
... | ... | @@ -43,6 +43,7 @@ public class SendRecoderUtils { |
43 | 43 | break; |
44 | 44 | } |
45 | 45 | if (null != studentBean) { |
46 | + | |
46 | 47 | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); |
47 | 48 | String schoolName = userDao.getSchoolName(studentBean.getSchool_id() + ""); |
48 | 49 | List<SendRecordBean> sendRecordBeans = sendRecordDao.getSuccessIsExitStu(deviceId, resultCard); |
... | ... | @@ -61,8 +62,9 @@ public class SendRecoderUtils { |
61 | 62 | sendRecordDao.addFaceSuccess(customerId, deviceId, resultCard, studentBean.getName(), time, schoolName, |
62 | 63 | faceUrl, studentBean.getSchool_id(), Integer.parseInt(userType), 18); |
63 | 64 | } else { |
64 | - sendRecordDao.updateFaceSuccess(deviceId, resultCard, time, faceUrl); | |
65 | + sendRecordDao.updateFaceSuccess(deviceId, resultCard, time, faceUrl,studentBean.getName(),customerId); | |
65 | 66 | } |
67 | + FileUtils.getInstance().writeLogs(studentBean.toString()+"\r\n"+resultCard,"下发成功记录"); | |
66 | 68 | //删除下发失败表中的数据 |
67 | 69 | sendRecordDao.deleteFaceFail(resultCard, deviceId); |
68 | 70 | } else { |
... | ... | @@ -81,7 +83,7 @@ public class SendRecoderUtils { |
81 | 83 | * @param deviceId |
82 | 84 | * @param userDao |
83 | 85 | */ |
84 | - public void sendFail(SendRecordDao sendRecordDao, String card, String faceUrl, String deviceId, UserDao userDao, String content, String userType) { | |
86 | + public synchronized void sendFail(SendRecordDao sendRecordDao, String card, String faceUrl, String deviceId, UserDao userDao, String content, String userType) { | |
85 | 87 | // BigInteger bigInteger = new BigInteger(card); |
86 | 88 | long lon = Long.parseLong(card); |
87 | 89 | String resultCard = getCard(String.format("%08x", lon)).toUpperCase(); | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java
... | ... | @@ -67,8 +67,8 @@ public interface SendRecordDao { |
67 | 67 | @Select("select * from Face_SendSuccess where deviceID = #{deviceID} and Num = #{Num}") |
68 | 68 | List<SendRecordBean> getSuccessIsExitStu(@Param("deviceID") String deviceId, @Param("Num") String card); |
69 | 69 | |
70 | - @Update("update Face_SendSuccess set time = #{time},imgPath=#{faceUrl} where deviceID = #{deviceID} and Num =#{Num}") | |
71 | - void updateFaceSuccess(@Param("deviceID") String deviceId, @Param("Num") String card, @Param("time") String time,@Param("faceUrl")String faceUrl); | |
70 | + @Update("update Face_SendSuccess set time = #{time},imgPath= #{faceUrl},Name = #{Name},customerid = #{customerid} where deviceID = #{deviceID} and Num = #{Num}") | |
71 | + void updateFaceSuccess(@Param("deviceID") String deviceId, @Param("Num") String card, @Param("time") String time,@Param("faceUrl")String faceUrl,@Param("Name")String name,@Param("customerid")String customerid); | |
72 | 72 | |
73 | 73 | @Update("update Face_SendFail set time = #{time},failContent = #{content} where deviceID = #{deviceID} and Num =#{Num}") |
74 | 74 | void updateFaceFail(@Param("deviceID") String deviceId, @Param("Num") String card, @Param("time") String time,@Param("content")String content); | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/MyRunnerableInt.java
... | ... | @@ -10,6 +10,7 @@ import com.example.mypulsar.message.MessageVO; |
10 | 10 | import com.example.mypulsar.mq.AESBase64Utils; |
11 | 11 | import com.example.mypulsar.mq.MessageHandlerTask; |
12 | 12 | import com.example.mypulsar.mq.MqConsumer; |
13 | +import com.example.mypulsar.task.SchduledTasks; | |
13 | 14 | import com.example.mypulsar.utils.ControlUtils; |
14 | 15 | import com.example.mypulsar.utils.PulsarConsumerPoolFactory; |
15 | 16 | import com.example.mypulsar.utils.ThreadPoolFactory; |
... | ... | @@ -39,14 +40,6 @@ public class MyRunnerableInt implements ApplicationRunner { |
39 | 40 | |
40 | 41 | @Override |
41 | 42 | public void run(ApplicationArguments args) throws Exception { |
42 | - | |
43 | -// DeviceBean deviceBean = new DeviceBean(); | |
44 | -// deviceBean.setValue("30"); | |
45 | -// deviceBean.setDevId("6c5c38c2e431d01eeei3to"); | |
46 | -// calOpenOrCloseDevWithtemper(deviceBean); | |
47 | - | |
48 | -// System.out.println("running"); | |
49 | -// initPool(); | |
50 | 43 | initMqConsumer(); |
51 | 44 | } |
52 | 45 | |
... | ... | @@ -306,6 +299,7 @@ public class MyRunnerableInt implements ApplicationRunner { |
306 | 299 | |
307 | 300 | ControlUtils.getInstance(deviceDao).conTemper(calDevContrls, deviceBean); |
308 | 301 | } |
302 | + | |
309 | 303 | } |
310 | 304 | |
311 | 305 | |
... | ... | @@ -316,9 +310,11 @@ public class MyRunnerableInt implements ApplicationRunner { |
316 | 310 | */ |
317 | 311 | private void calOpenOrCloseDevWithtemper(DeviceBean deviceBean) { |
318 | 312 | |
319 | - List<CalDevContrl> calDevContrls = deviceDao.getCalDevContrlWidthDevId(deviceBean.getDevId()); | |
320 | - if (null != calDevContrls && calDevContrls.size() > 0) | |
321 | - ControlUtils.getInstance(deviceDao).conTemper(calDevContrls, deviceBean); | |
313 | + ControlUtils.tempDevices.put(deviceBean.getDevId(), Integer.valueOf(deviceBean.getValue())); | |
314 | + | |
315 | +// List<CalDevContrl> calDevContrls = deviceDao.getCalDevContrlWidthDevId(deviceBean.getDevId()); | |
316 | +// if (null != calDevContrls && calDevContrls.size() > 0) | |
317 | +// ControlUtils.getInstance(deviceDao).conTemper(calDevContrls, deviceBean); | |
322 | 318 | |
323 | 319 | } |
324 | 320 | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/MypulsarApplication.java
... | ... | @@ -9,10 +9,12 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; |
9 | 9 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; |
10 | 10 | import org.springframework.context.annotation.Bean; |
11 | 11 | import org.springframework.jdbc.core.JdbcTemplate; |
12 | +import org.springframework.scheduling.annotation.EnableScheduling; | |
12 | 13 | |
13 | 14 | @SpringBootApplication |
14 | 15 | @MapperScan("com.example.mypulsar.dao") |
15 | 16 | @EnableDiscoveryClient |
17 | +@EnableScheduling | |
16 | 18 | public class MypulsarApplication extends SpringBootServletInitializer { |
17 | 19 | |
18 | 20 | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Result.java
0 → 100644
... | ... | @@ -0,0 +1,23 @@ |
1 | +package com.example.mypulsar.bean; | |
2 | + | |
3 | +import java.io.Serializable; | |
4 | + | |
5 | +public class Result implements Serializable { | |
6 | + | |
7 | + private ResultData data; | |
8 | + | |
9 | + public ResultData getData() { | |
10 | + return data; | |
11 | + } | |
12 | + | |
13 | + public void setData(ResultData data) { | |
14 | + this.data = data; | |
15 | + } | |
16 | + | |
17 | + @Override | |
18 | + public String toString() { | |
19 | + return "Result{" + | |
20 | + "data=" + data + | |
21 | + '}'; | |
22 | + } | |
23 | +} | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/bean/ResultData.java
0 → 100644
... | ... | @@ -0,0 +1,23 @@ |
1 | +package com.example.mypulsar.bean; | |
2 | + | |
3 | +import java.io.Serializable; | |
4 | + | |
5 | +public class ResultData implements Serializable { | |
6 | + | |
7 | + private boolean online; | |
8 | + | |
9 | + public boolean isOnline() { | |
10 | + return online; | |
11 | + } | |
12 | + | |
13 | + public void setOnline(boolean online) { | |
14 | + this.online = online; | |
15 | + } | |
16 | + | |
17 | + @Override | |
18 | + public String toString() { | |
19 | + return "ResultData{" + | |
20 | + "online=" + online + | |
21 | + '}'; | |
22 | + } | |
23 | +} | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Wl_Attendace.java
0 → 100644
... | ... | @@ -0,0 +1,34 @@ |
1 | +package com.example.mypulsar.bean; | |
2 | + | |
3 | +import java.io.Serializable; | |
4 | + | |
5 | +public class Wl_Attendace implements Serializable { | |
6 | + | |
7 | + private String clint_id; | |
8 | + | |
9 | + private String name; | |
10 | + | |
11 | + public String getClint_id() { | |
12 | + return clint_id; | |
13 | + } | |
14 | + | |
15 | + public void setClint_id(String clint_id) { | |
16 | + this.clint_id = clint_id; | |
17 | + } | |
18 | + | |
19 | + public String getName() { | |
20 | + return name; | |
21 | + } | |
22 | + | |
23 | + public void setName(String name) { | |
24 | + this.name = name; | |
25 | + } | |
26 | + | |
27 | + @Override | |
28 | + public String toString() { | |
29 | + return "Wl_Attendace{" + | |
30 | + "clint_id='" + clint_id + '\'' + | |
31 | + ", name='" + name + '\'' + | |
32 | + '}'; | |
33 | + } | |
34 | +} | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/dao/DeviceDao.java
... | ... | @@ -3,6 +3,7 @@ package com.example.mypulsar.dao; |
3 | 3 | import com.example.mypulsar.bean.CalDevBeContrl; |
4 | 4 | import com.example.mypulsar.bean.CalDevContrl; |
5 | 5 | import com.example.mypulsar.bean.DeviceBean; |
6 | +import com.example.mypulsar.bean.Wl_Attendace; | |
6 | 7 | import org.apache.ibatis.annotations.*; |
7 | 8 | import org.springframework.stereotype.Repository; |
8 | 9 | |
... | ... | @@ -45,4 +46,34 @@ public interface DeviceDao { |
45 | 46 | |
46 | 47 | @Select("select * from CalDevBeContrl where State = 1 and Id = #{Id}") |
47 | 48 | CalDevBeContrl getCalDevBeControl(@Param("Id") String Id); |
49 | + | |
50 | + @Select("select * from CalDevContrl where Devid = #{Devid} and Status = 1 and ModelType = 9") | |
51 | + List<CalDevContrl> getTempCalWitdDevid(@Param("Devid") String devId); | |
52 | + | |
53 | + | |
54 | + @Update("update WL_LinkageMode set Field = #{Field} where id = #{id}") | |
55 | + void updateWL_LinkageModeWithId(@Param("id")int id,@Param("Field")String Field); | |
56 | + | |
57 | + @Select("select clint_id\n" + | |
58 | + "from WL_Attendance where school_id = 1085 and clint_type = 12 and state = 1") | |
59 | + List<String> getHWDEvices(int i); | |
60 | + | |
61 | + @Select("select TOP(1) ConValue from CalDevBeContrl where State = 1 and ConDevId = #{ConDevId}") | |
62 | + String getConBeValue(@Param("ConDevId")String ConDevId); | |
63 | + | |
64 | + | |
65 | + @Select("select Top(1) InUserTime from CalDevContrl where Status = 1") | |
66 | + String getInuserTime(); | |
67 | + | |
68 | + @Select("select clint_id from WL_Attendance where State = 1 and school_id = 1085 and clint_type = 12") | |
69 | + List<Wl_Attendace> getHWIds(); | |
70 | + | |
71 | + | |
72 | + @Select("select * from WL_Attendance where state = 1 and school_id = 1085") | |
73 | + List<Wl_Attendace> getWL_AttendanceIds(); | |
74 | + | |
75 | + | |
76 | + @Select("select Top(1)name from WL_Attendance where State = 1 and school_id = 1085 and clint_type = 12 and clint_id =#{clint_id} order by intime desc") | |
77 | + String getWLName(@Param("clint_id")String clint_id); | |
78 | + | |
48 | 79 | } | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/task/SchduledTasks.java
0 → 100644
... | ... | @@ -0,0 +1,155 @@ |
1 | +package com.example.mypulsar.task; | |
2 | + | |
3 | +import com.alibaba.fastjson.JSON; | |
4 | +import com.alibaba.fastjson.JSONArray; | |
5 | +import com.alibaba.fastjson.JSONObject; | |
6 | +import com.example.mypulsar.bean.Wl_Attendace; | |
7 | +import com.example.mypulsar.dao.DeviceDao; | |
8 | +import com.example.mypulsar.utils.HttpUtil; | |
9 | +import org.slf4j.Logger; | |
10 | +import org.slf4j.LoggerFactory; | |
11 | +import org.springframework.beans.factory.annotation.Autowired; | |
12 | +import org.springframework.scheduling.annotation.Scheduled; | |
13 | +import org.springframework.stereotype.Component; | |
14 | + | |
15 | +import java.io.*; | |
16 | +import java.text.ParseException; | |
17 | +import java.text.SimpleDateFormat; | |
18 | +import java.util.*; | |
19 | + | |
20 | +@Component | |
21 | +public class SchduledTasks { | |
22 | + | |
23 | + @Autowired | |
24 | + DeviceDao deviceDao; | |
25 | + | |
26 | + private Logger logger = LoggerFactory.getLogger(SchduledTasks.class); | |
27 | + | |
28 | + public static Map<String, Date> conDevMap = new HashMap<>();//存储被控制的设备 | |
29 | + | |
30 | + private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
31 | + | |
32 | + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("HH:mm"); | |
33 | + SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("HH:mm"); | |
34 | + | |
35 | + private String closeModel = "{\"mode\":\"0\",\"power\":\"0\",\"remote_id\":\"%s\",\"remote_index\":\"11272\",\"temp\":\"26\",\"wind\":\"0\"}"; | |
36 | + | |
37 | + boolean isClose = false; | |
38 | + | |
39 | + @Scheduled(fixedRate = 15000) | |
40 | + public void closeAttend() { | |
41 | + | |
42 | + logger.error("定时任务执行中......" + conDevMap.size()); | |
43 | + | |
44 | + Iterator iterator = conDevMap.entrySet().iterator(); | |
45 | + | |
46 | + while (iterator.hasNext()) { | |
47 | + | |
48 | + | |
49 | + Map.Entry entry = (Map.Entry) iterator.next(); | |
50 | + String conBeDeviceId = (String) entry.getKey(); | |
51 | + | |
52 | + logger.error("在线设备:" + conBeDeviceId + "---在线时间:" + simpleDateFormat.format(entry.getValue())); | |
53 | + | |
54 | + Date date = (Date) entry.getValue(); | |
55 | + System.out.println("更新设备时间差值:" + ((new Date().getTime()) - date.getTime())); | |
56 | + if (((new Date().getTime()) - date.getTime()) > 10 * 60 * 1000) {//大于十分钟后关闭设备 | |
57 | + | |
58 | + String conValue = getRemoteId(deviceDao.getConBeValue(conBeDeviceId)); | |
59 | + String name = deviceDao.getWLName(conBeDeviceId); | |
60 | + HttpUtil.addAirCode(String.format(closeModel, conValue), conBeDeviceId,name); | |
61 | + conDevMap.remove(conBeDeviceId); | |
62 | + } | |
63 | + | |
64 | + } | |
65 | + | |
66 | + int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); | |
67 | + | |
68 | + | |
69 | + System.out.println("关闭设备:" + hour); | |
70 | + | |
71 | + String inuserTime = deviceDao.getInuserTime(); | |
72 | + JSONArray jsonArray = JSON.parseArray(inuserTime); | |
73 | + | |
74 | + if (null==jsonArray)return; | |
75 | + if (jsonArray!=null&&jsonArray.size()==0)return; | |
76 | + JSONObject jsonObject = jsonArray.getJSONObject(0); | |
77 | + | |
78 | + String startTime = jsonObject.getString("StartTime"); | |
79 | + String endTime = jsonObject.getString("EndTime"); | |
80 | + Date startDate = null; | |
81 | + try { | |
82 | + startDate = simpleDateFormat1.parse(startTime); | |
83 | + } catch (ParseException e) { | |
84 | + e.printStackTrace(); | |
85 | + } | |
86 | + Date endDate = null; | |
87 | + try { | |
88 | + endDate = simpleDateFormat1.parse(endTime); | |
89 | + } catch (ParseException e) { | |
90 | + e.printStackTrace(); | |
91 | + } | |
92 | + Date date = null; | |
93 | + try { | |
94 | + date = simpleDateFormat2.parse(new Date().getHours() + ":" + new Date().getMinutes()); | |
95 | + } catch (ParseException e) { | |
96 | + e.printStackTrace(); | |
97 | + } | |
98 | + | |
99 | + long starTime = startDate.getTime(); | |
100 | + long indexTime = date.getTime(); | |
101 | + long entTime = endDate.getTime()+ 10 * 60 * 1000;//延迟十分钟 | |
102 | + | |
103 | + if (!isClose) { | |
104 | + | |
105 | + if (indexTime < starTime || indexTime >= entTime) { | |
106 | + closeAllDevice(); | |
107 | + } | |
108 | + | |
109 | + | |
110 | + } | |
111 | + | |
112 | + if (indexTime < entTime && indexTime >= starTime) { | |
113 | + isClose = false; | |
114 | + } | |
115 | + | |
116 | + | |
117 | + } | |
118 | + | |
119 | + private void closeAllDevice() { | |
120 | + | |
121 | + isClose = true; | |
122 | + List<Wl_Attendace> deviceIds = deviceDao.getHWIds(); | |
123 | + System.out.println("关闭设备" + deviceIds.toString()); | |
124 | + for (int i = 0; i < deviceIds.size(); i++) { | |
125 | + String deviceId = deviceIds.get(i).getClint_id(); | |
126 | + String conValue = getRemoteId(deviceDao.getConBeValue(deviceId)); | |
127 | + String devName = deviceIds.get(i).getName(); | |
128 | + | |
129 | + HttpUtil.addAirCode(String.format(closeModel, conValue), deviceId,devName); | |
130 | + } | |
131 | + | |
132 | + } | |
133 | + | |
134 | + /** | |
135 | + * 获取遥控器索引 | |
136 | + * | |
137 | + * @param conValue | |
138 | + */ | |
139 | + private String getRemoteId(String conValue) { | |
140 | + | |
141 | + try { | |
142 | + System.out.println("conValue:"+conValue); | |
143 | + JSONObject jsonObject = JSON.parseObject(conValue); | |
144 | + if (null==jsonObject)return ""; | |
145 | + String remote_id = jsonObject.getString("remote_id"); | |
146 | + return remote_id; | |
147 | + } catch (Exception e) { | |
148 | + e.printStackTrace(); | |
149 | + } | |
150 | + return ""; | |
151 | + } | |
152 | + | |
153 | + | |
154 | + | |
155 | +} | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/utils/ControlUtils.java
... | ... | @@ -2,10 +2,12 @@ package com.example.mypulsar.utils; |
2 | 2 | |
3 | 3 | import com.example.mypulsar.bean.*; |
4 | 4 | import com.example.mypulsar.dao.DeviceDao; |
5 | +import com.example.mypulsar.task.SchduledTasks; | |
5 | 6 | import org.apache.pulsar.shade.com.google.gson.Gson; |
6 | 7 | import org.springframework.boot.configurationprocessor.json.JSONArray; |
7 | 8 | import org.springframework.boot.configurationprocessor.json.JSONException; |
8 | 9 | import org.springframework.boot.configurationprocessor.json.JSONObject; |
10 | +import org.springframework.util.StringUtils; | |
9 | 11 | |
10 | 12 | import java.text.ParseException; |
11 | 13 | import java.text.SimpleDateFormat; |
... | ... | @@ -19,6 +21,11 @@ public class ControlUtils { |
19 | 21 | |
20 | 22 | private DeviceDao deviceDao; |
21 | 23 | |
24 | + /** | |
25 | + * 存储温度感应器和对应温度 | |
26 | + */ | |
27 | + public static Map<String, Integer> tempDevices = new HashMap<>(); | |
28 | + | |
22 | 29 | public static ControlUtils getInstance(DeviceDao deviceDao) { |
23 | 30 | if (null == controlUtils) { |
24 | 31 | synchronized (ControlUtils.class) { |
... | ... | @@ -42,7 +49,8 @@ public class ControlUtils { |
42 | 49 | * @param deviceBean 温度传感器对象 |
43 | 50 | */ |
44 | 51 | public void conTemper(List<CalDevContrl> calDevContrls, DeviceBean deviceBean) { |
45 | - | |
52 | + System.out.println("传感器感应设备:deviceBean:" + deviceBean.toString()); | |
53 | + FileUtils.getInstance().writeLogs(deviceBean.toString()+"\r\n"+calDevContrls.toString(),FileUtils.mypulsar); | |
46 | 54 | for (CalDevContrl cal : |
47 | 55 | calDevContrls) { |
48 | 56 | |
... | ... | @@ -52,11 +60,12 @@ public class ControlUtils { |
52 | 60 | // System.out.println("inUseTime:"+inUseTime); |
53 | 61 | try { |
54 | 62 | JSONArray jsonArray = new JSONArray(inUseTime); |
55 | - | |
63 | + FileUtils.getInstance().writeLogs(jsonArray.toString(),FileUtils.mypulsar); | |
56 | 64 | for (int i = 0; i < jsonArray.length(); i++) { |
57 | 65 | JSONObject jsonObject = jsonArray.getJSONObject(i); |
58 | 66 | |
59 | - int week = jsonObject.getInt("Week"); | |
67 | + String weekStr = jsonObject.getString("Week"); | |
68 | + String[] weeks = weekStr.split(","); | |
60 | 69 | |
61 | 70 | String startTime = jsonObject.getString("StartTime"); |
62 | 71 | |
... | ... | @@ -65,33 +74,36 @@ public class ControlUtils { |
65 | 74 | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); |
66 | 75 | SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("HH:mm:ss"); |
67 | 76 | |
68 | - int indexWeek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); | |
69 | - | |
70 | - if (week == indexWeek) { | |
71 | - | |
72 | - Date startDate = simpleDateFormat.parse(startTime); | |
73 | - Date endDate = simpleDateFormat.parse(endTime); | |
74 | - Date date = simpleDateFormat1.parse(new Date().getHours() + ":" + new Date().getMinutes() + ":" + new Date().getSeconds()); | |
75 | - | |
76 | - long starTime = startDate.getTime(); | |
77 | -// System.out.println("startDate:" + starTime); | |
78 | -// System.out.println("endDate:" + endDate.getTime()); | |
79 | -// System.out.println("date:" + date.getTime()); | |
80 | - | |
81 | - if (date.getTime() < endDate.getTime() && date.getTime() > starTime) { | |
82 | - //比较器类型 | |
83 | - int compreType = cal.getCompreType(); | |
84 | - | |
85 | - switch (compreType) { | |
86 | - case 1://固定值 | |
87 | - calCompre(cal,deviceBean); | |
88 | - break; | |
89 | - case 2://当天日期 | |
90 | - | |
91 | - break; | |
77 | + int indexWeek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)-1; | |
78 | + FileUtils.getInstance().writeLogs(weekStr.toString()+"当前周:"+indexWeek,FileUtils.mypulsar); | |
79 | + for (int j = 0; j < weeks.length; j++) { | |
80 | + int week = Integer.parseInt(weeks[j]); | |
81 | + if (week == indexWeek) { | |
82 | + | |
83 | + Date startDate = simpleDateFormat.parse(startTime); | |
84 | + Date endDate = simpleDateFormat.parse(endTime); | |
85 | + Date date = simpleDateFormat1.parse(new Date().getHours() + ":" + new Date().getMinutes() + ":" + new Date().getSeconds()); | |
86 | + | |
87 | + long starTime = startDate.getTime(); | |
88 | + long indexTime = date.getTime(); | |
89 | + long entTime = endDate.getTime(); | |
90 | + System.out.println("时间比对:starTime:" + starTime + "-----indexTime:" + indexTime + "----entTime:" + entTime); | |
91 | + FileUtils.getInstance().writeLogs("开始时间:"+(indexTime < entTime)+"结束时间:"+(indexTime > starTime),FileUtils.mypulsar); | |
92 | + if (indexTime < entTime && indexTime > starTime) { | |
93 | + //比较器类型 | |
94 | + int compreType = cal.getCompreType(); | |
95 | + | |
96 | + switch (compreType) { | |
97 | + case 1://固定值 | |
98 | + calCompre(cal, deviceBean); | |
99 | + break; | |
100 | + case 2://当天日期 | |
101 | + | |
102 | + break; | |
103 | + } | |
92 | 104 | } |
93 | - } | |
94 | 105 | |
106 | + } | |
95 | 107 | } |
96 | 108 | |
97 | 109 | // System.out.println("jsonObject:" + jsonObject.toString()); |
... | ... | @@ -108,19 +120,26 @@ public class ControlUtils { |
108 | 120 | } |
109 | 121 | |
110 | 122 | /** |
111 | - * @param cal 联动模板 | |
123 | + * @param cal 人体感应器 | |
112 | 124 | * @param deviceBean 控制设备 |
113 | 125 | */ |
114 | 126 | private void calCompre(CalDevContrl cal, DeviceBean deviceBean) { |
115 | 127 | |
116 | - | |
117 | 128 | int thrsoldValue = 0; |
118 | 129 | |
130 | + FileUtils.getInstance().writeLogs(cal.toString(),"caldevCntrol.txt"); | |
131 | + | |
119 | 132 | if (cal.getModelType() == 10) {//人体感应 |
120 | 133 | if (cal.getThreValue().equals("有人")) thrsoldValue = 1; |
121 | - else thrsoldValue = 0; | |
134 | + else { | |
135 | + thrsoldValue = 0; | |
136 | + if (cal.getThreValue().equals("无人")) return; | |
137 | + //无人的时候不做处理 , 在定时服务中处理 | |
138 | +// return; | |
139 | + } | |
122 | 140 | } else { |
123 | - thrsoldValue = Integer.parseInt(cal.getThreValue());//设定的阈值 | |
141 | + //温度传感器 不直接计算 | |
142 | +// thrsoldValue = Integer.parseInt(cal.getThreValue());//设定的阈值 | |
124 | 143 | } |
125 | 144 | |
126 | 145 | int value = Integer.parseInt(deviceBean.getValue());//实际的值 |
... | ... | @@ -132,8 +151,13 @@ public class ControlUtils { |
132 | 151 | break; |
133 | 152 | case 2://等于 |
134 | 153 | |
135 | - if (value == thrsoldValue) | |
136 | - startDevice(cal);//开启联动的设备 | |
154 | + if (value == thrsoldValue)//有人的时候会执行 | |
155 | + { | |
156 | + boolean temp = calTemp(cal.getAssDevice()); | |
157 | + System.out.println("--------------------温度是否达标:" + temp + "-------------"); | |
158 | + if (temp)//温度符合要求 | |
159 | + startDevice(cal);//开启联动的设备 | |
160 | + } | |
137 | 161 | |
138 | 162 | break; |
139 | 163 | case 3://小于 |
... | ... | @@ -152,6 +176,75 @@ public class ControlUtils { |
152 | 176 | } |
153 | 177 | |
154 | 178 | /** |
179 | + * 计算温度是否达标 | |
180 | + * | |
181 | + * @param assDevice | |
182 | + */ | |
183 | + private synchronized boolean calTemp(String assDevice) { | |
184 | + if (!StringUtils.isEmpty(assDevice)) { | |
185 | + String[] devices = assDevice.split(","); | |
186 | + FileUtils.getInstance().writeLogs(assDevice+"设备数量:"+devices.length,"tempisOk.txt"); | |
187 | + for (int i = 0; i < devices.length; i++) { | |
188 | + | |
189 | + String device = devices[i]; | |
190 | + FileUtils.getInstance().writeLogs(device,"tempisOk.txt"); | |
191 | + | |
192 | + List<CalDevContrl> calDevContrls = deviceDao.getTempCalWitdDevid(device); | |
193 | + | |
194 | + for (int j = 0; j < calDevContrls.size(); j++) { | |
195 | + String tempDevId = calDevContrls.get(j).getDevid(); | |
196 | + if (tempDevices.containsKey(tempDevId)) {//温度记录了 | |
197 | + | |
198 | + int tempear = tempDevices.get(tempDevId); | |
199 | + | |
200 | + boolean temp = tempIsOk(tempear, calDevContrls.get(j)); | |
201 | + if (temp)return true; | |
202 | + | |
203 | + } else {//沒有記錄溫度按照20度 | |
204 | + boolean temp = tempIsOk(20, calDevContrls.get(j)); | |
205 | + if (temp)return true; | |
206 | + } | |
207 | + | |
208 | + } | |
209 | + | |
210 | + | |
211 | + } | |
212 | + | |
213 | + } | |
214 | + | |
215 | + return false; | |
216 | + } | |
217 | + | |
218 | + private boolean tempIsOk(int tempear, CalDevContrl calDevContrl) { | |
219 | + | |
220 | + FileUtils.getInstance().writeLogs(calDevContrl.toString(),"tempisOk.txt"); | |
221 | + if (calDevContrl.getComPre() != 2) { | |
222 | + System.out.println("溫度比較:" + tempear + " 比較的值:" + calDevContrl.getThreValue() + " 比较方式:" + calDevContrl.getComPre()); | |
223 | + | |
224 | + switch (calDevContrl.getComPre()) { | |
225 | + case 1://小于 | |
226 | + | |
227 | + if (tempear <= Integer.parseInt(calDevContrl.getThreValue())) { | |
228 | + return true; | |
229 | + } | |
230 | + | |
231 | + break; | |
232 | + case 3://大于 | |
233 | + | |
234 | + if (tempear >= Integer.parseInt(calDevContrl.getThreValue())) { | |
235 | + return true; | |
236 | + } | |
237 | + | |
238 | + break; | |
239 | + | |
240 | + } | |
241 | + | |
242 | + } | |
243 | + | |
244 | + return false; | |
245 | + } | |
246 | + | |
247 | + /** | |
155 | 248 | * 移除设备 |
156 | 249 | * |
157 | 250 | * @param calDevContrl |
... | ... | @@ -194,7 +287,7 @@ public class ControlUtils { |
194 | 287 | |
195 | 288 | for (int i = 0; i < calDevBeContrlList.size(); i++) { |
196 | 289 | CalDevBeContrl calDevBeContrl = calDevBeContrlList.get(i); |
197 | - System.out.println("控制对象:" + calDevBeContrl.toString()); | |
290 | +// System.out.println("控制对象:" + calDevBeContrl.toString()); | |
198 | 291 | String conDevId = calDevBeContrl.getConDevId();//被控制的设备id |
199 | 292 | String conValue = calDevBeContrl.getConValue(); |
200 | 293 | String conCodes = calDevBeContrl.getConCode(); |
... | ... | @@ -213,15 +306,19 @@ public class ControlUtils { |
213 | 306 | case 3://排插 |
214 | 307 | HttpUtil.controlDev(conDevId, conCode, conValue); |
215 | 308 | break; |
216 | - case 7://空调伴侣 | |
217 | - HttpUtil.addAirCode(conValue, conDevId); | |
218 | - break; | |
219 | - case 10://开关 | |
220 | -// HttpUtil.controlDev(conDevId, conCode, conValue); | |
221 | - HttpUtil.addAirCode(conValue, conDevId); | |
309 | + case 9://温度传感器 | |
222 | 310 | break; |
311 | + case 10://人体感应触发空调开关 | |
223 | 312 | case 12://万能遥控器 |
224 | - HttpUtil.addAirCode(conValue, conDevId); | |
313 | + if (SchduledTasks.conDevMap.containsKey(conDevId)) {//设备已开,更新时间 | |
314 | + SchduledTasks.conDevMap.put(conDevId, new Date()); | |
315 | + System.out.println("更新设备时间"); | |
316 | + } else {//开启设备 | |
317 | + SchduledTasks.conDevMap.put(conDevId, new Date()); | |
318 | + System.out.println("开启设备"); | |
319 | + String name = deviceDao.getWLName(conDevId); | |
320 | + HttpUtil.addAirCode(conValue, conDevId,name); | |
321 | + } | |
225 | 322 | break; |
226 | 323 | } |
227 | 324 | } | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/utils/FileUtils.java
0 → 100644
... | ... | @@ -0,0 +1,155 @@ |
1 | +package com.example.mypulsar.utils; | |
2 | + | |
3 | +import org.springframework.web.multipart.MultipartFile; | |
4 | + | |
5 | +import java.io.*; | |
6 | +import java.text.SimpleDateFormat; | |
7 | +import java.util.Date; | |
8 | + | |
9 | +/** | |
10 | + * 日志记录、文件操作工具类 | |
11 | + */ | |
12 | +public class FileUtils { | |
13 | + | |
14 | + | |
15 | + public static String studentcode="studentcode.txt"; | |
16 | + public static String addAirCode = "addAirCode.txt"; | |
17 | + private static FileUtils fileUtils; | |
18 | + | |
19 | + private String filePath = "./log/";//日志记录目录 | |
20 | + | |
21 | + public static String picPath = "./picPath/"; | |
22 | + public static String picPathComp = "./picPath/comp/"; | |
23 | + | |
24 | + public static String mypulsar = "mypulsar.txt"; | |
25 | + | |
26 | + public static String devices = "devices.txt";//设备记录 | |
27 | + | |
28 | + public static String sendUserErrTxt = "senduserErr.txt";//用户下发失败记录 | |
29 | + | |
30 | + public static String faceSuccess = "facesuccess.txt";//用户人脸认证成功 | |
31 | + | |
32 | + public static String faceFail = "facefail.txt";//用户人脸认证成功 | |
33 | + | |
34 | + public static String facerecoder = "人脸识别成功记录.txt";//用户人脸认证成功 | |
35 | + | |
36 | + public static String fileName = "文件保存回调.txt";//用户下发失败记录 | |
37 | + | |
38 | + public static String sendUserSucTxt = "senduserSuc.txt";//用户下发成功记录 | |
39 | + | |
40 | + public static String qiandaoSuccess = "qiandaoSuccess.txt";//用户签到成功记录 | |
41 | + public static String sms = "短信账号密码.txt";//用户签到成功记录 | |
42 | + | |
43 | + public static String qiandaoErr = "qiandaoErr.txt";//用户签到失败记录 | |
44 | + | |
45 | + public static String sendNodevice = "没有设备.txt";//设备没有 | |
46 | + | |
47 | + public static String schoolId = "学校id记录.txt";//学校id记录表 | |
48 | + | |
49 | + public static FileUtils getInstance() { | |
50 | + if (null == fileUtils) { | |
51 | + synchronized (FileUtils.class) { | |
52 | + fileUtils = new FileUtils(); | |
53 | + } | |
54 | + } | |
55 | + return fileUtils; | |
56 | + } | |
57 | + | |
58 | + | |
59 | + public FileUtils() { | |
60 | + | |
61 | + File filePa = new File(filePath); | |
62 | + if (!filePa.exists()) filePa.mkdirs(); | |
63 | + | |
64 | + File picPath = new File(this.picPath); | |
65 | + if (!picPath.exists())picPath.mkdirs(); | |
66 | + | |
67 | + File picPathComp = new File(this.picPathComp); | |
68 | + if (!picPathComp.exists())picPathComp.mkdirs(); | |
69 | + | |
70 | + } | |
71 | + | |
72 | + | |
73 | + /** | |
74 | + * @param content 日志内容 | |
75 | + * @param fileName 文件名字 | |
76 | + */ | |
77 | + public void writeLogs(String content, String fileName) { | |
78 | + | |
79 | + String datePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); | |
80 | + | |
81 | + File path = new File(filePath+datePath+"/"); | |
82 | + if (!path.exists())path.mkdirs(); | |
83 | + | |
84 | + String time = new SimpleDateFormat("HH").format(new Date()); | |
85 | + File logPath = new File(path, time+"_"+fileName); | |
86 | + | |
87 | + try { | |
88 | +// System.out.println("logPath:" + logPath.getAbsolutePath()); | |
89 | + if (!logPath.exists()) logPath.createNewFile(); | |
90 | + | |
91 | + FileOutputStream fileOutputStream = new FileOutputStream(logPath, true);//true表示文件后面续写 | |
92 | + | |
93 | + String writeContent = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) | |
94 | + + " " + content + "\r\n"; | |
95 | + | |
96 | + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8"); | |
97 | + | |
98 | + outputStreamWriter.write(writeContent); | |
99 | + | |
100 | + outputStreamWriter.write("\r\n"); | |
101 | + | |
102 | + outputStreamWriter.close(); | |
103 | + | |
104 | + } catch (FileNotFoundException e) { | |
105 | + e.printStackTrace(); | |
106 | + } catch (UnsupportedEncodingException e) { | |
107 | + e.printStackTrace(); | |
108 | + } catch (IOException e) { | |
109 | + e.printStackTrace(); | |
110 | + } | |
111 | + | |
112 | + | |
113 | + } | |
114 | + | |
115 | + | |
116 | + /** | |
117 | + * | |
118 | + * @param file 文件 | |
119 | + * @param path 文件存放路径 | |
120 | + * @param fileName 源文件名 | |
121 | + * @return | |
122 | + */ | |
123 | + public static String upload(MultipartFile file, String path, String fileName){ | |
124 | + | |
125 | + // 生成新的文件名 | |
126 | + //String realPath = path + "/" + FileNameUtils.getFileName(fileName); | |
127 | + | |
128 | + //使用原文件名 | |
129 | + String realPath = path + "/" + fileName; | |
130 | + | |
131 | + File dest = new File(realPath); | |
132 | + | |
133 | + //判断文件父目录是否存在 | |
134 | + if(!dest.getParentFile().exists()){ | |
135 | + dest.getParentFile().mkdir(); | |
136 | + } | |
137 | + | |
138 | + try { | |
139 | + //保存文件 | |
140 | + file.transferTo(dest); | |
141 | + return realPath; | |
142 | + } catch (IllegalStateException e) { | |
143 | + // TODO Auto-generated catch block | |
144 | + e.printStackTrace(); | |
145 | + return ""; | |
146 | + } catch (IOException e) { | |
147 | + // TODO Auto-generated catch block | |
148 | + e.printStackTrace(); | |
149 | + return ""; | |
150 | + } | |
151 | + | |
152 | + } | |
153 | + | |
154 | + | |
155 | +} | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/utils/HttpUtil.java
... | ... | @@ -112,7 +112,7 @@ public class HttpUtil { |
112 | 112 | |
113 | 113 | String responseEntity = restTemplate.postForObject(url, tuYaCommand, String.class); |
114 | 114 | |
115 | - System.out.println("tuYaCommand:" + tuYaCommand.toString()+"----deviceId:"+deviceId); | |
115 | + System.out.println("tuYaCommand:" + tuYaCommand.toString() + "----deviceId:" + deviceId); | |
116 | 116 | System.out.println("responseEntity:" + responseEntity); |
117 | 117 | return responseEntity.equals("1"); |
118 | 118 | } |
... | ... | @@ -133,17 +133,27 @@ public class HttpUtil { |
133 | 133 | } |
134 | 134 | |
135 | 135 | |
136 | - public static String addAirCode(String conValue, String conDevId) { | |
136 | + /** | |
137 | + * 控制设备 | |
138 | + * | |
139 | + * @param conValue 控制指令 | |
140 | + * @param conDevId 被控制设备id | |
141 | + * @param conDevName 设备名称 | |
142 | + * @return | |
143 | + */ | |
144 | + public static String addAirCode(String conValue, String conDevId, String conDevName) { | |
137 | 145 | |
138 | 146 | |
139 | 147 | String url = String.format("http://120.26.116.253:5555/TuYa/%s/addAirCode", conDevId); |
140 | 148 | RestTemplate restTemplate = new RestTemplate(); |
141 | 149 | |
142 | 150 | TuYaAirCondition tuYaAirCondition = new TuYaAirCondition(); |
151 | + String power = ""; | |
143 | 152 | try { |
144 | 153 | JSONObject jsonObject = new JSONObject(conValue); |
154 | + power = jsonObject.getString("power"); | |
145 | 155 | tuYaAirCondition.setMode(jsonObject.getString("mode")); |
146 | - tuYaAirCondition.setPower(jsonObject.getString("power")); | |
156 | + tuYaAirCondition.setPower(power); | |
147 | 157 | tuYaAirCondition.setRemote_id(jsonObject.getString("remote_id")); |
148 | 158 | tuYaAirCondition.setWind(jsonObject.getString("wind")); |
149 | 159 | tuYaAirCondition.setTemp(jsonObject.getString("temp")); |
... | ... | @@ -154,8 +164,10 @@ public class HttpUtil { |
154 | 164 | e.printStackTrace(); |
155 | 165 | } |
156 | 166 | |
157 | - System.out.println("url-------------------------------:" + url+" conValue:"+tuYaAirCondition.toString()); | |
167 | + | |
168 | + System.out.println("url-------------------------------:" + url + " conValue:" + tuYaAirCondition.toString()); | |
158 | 169 | String response = restTemplate.postForObject(url, tuYaAirCondition, String.class); |
170 | + FileUtils.getInstance().writeLogs(String.format("%s设备%s--控制%s",power.equals("1")?"成功":"失败",conDevName+"-"+conDevId,response),FileUtils.addAirCode); | |
159 | 171 | System.out.println("response----------------------------------:" + response); |
160 | 172 | return response; |
161 | 173 | ... | ... |