Commit e914df27f3b207f095111fd4b9f22b3074656fa3

Authored by 陈杰
2 parents db8bfcc4 6879cd62
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
... ... @@ -36,4 +36,7 @@ public interface TestDao {
36 36  
37 37 @Update("update TK_Question set Question = #{Question} where ID = #{id}")
38 38 void updateQuestion(@Param("Question") String Question,@Param("id")String id);
  39 +
  40 +
  41 +
39 42 }
... ...
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(&quot;result:&quot;+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
... ... @@ -48,7 +48,6 @@ public class FileControl {
48 48  
49 49 String ossPath = request.getHeader("ossPath");//oss的二级目录
50 50  
51   -
52 51 FileInfo fileInfo = fileService.upload(file, ossPath);
53 52  
54 53 return fileInfo.getUrl();
... ...
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
... ... @@ -44,7 +44,7 @@ public class SchduleTask {
44 44 /**
45 45 * 定时任务,取更新的学生信息
46 46 */
47   - @Scheduled(fixedRate = 5000)
  47 +// @Scheduled(fixedRate = 5000)
48 48 public synchronized void getUpdateStudentInfo() {
49 49 try {
50 50  
... ...
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
1 1 server:
2 2 port: 9898
  3 + max-http-header-size: 102400
3 4  
4 5 spring:
5 6 application:
... ...
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  
... ...