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 | ... | ... |