From 9c32d991f314a665dedfb3e86ccd963e2df79675 Mon Sep 17 00:00:00 2001 From: 2821744554@qq.com <2821744554@qq.com> Date: Mon, 4 May 2020 13:55:35 +0800 Subject: [PATCH] 增加网关负载 --- cloud/dahua/src/main/java/com/example/dahua/DahuaApplication.java | 2 ++ cloud/dahua/src/main/java/com/example/dahua/Gate/CardManegerDialog.java | 5 ++--- cloud/dahua/src/main/java/com/example/dahua/MyTask.java | 4 ++-- cloud/dahua/src/main/java/com/example/dahua/Test.java | 12 ++++++++++++ cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------- cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java | 57 +++++++++++++++++++++++++++++++++++++++++++-------------- cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- cloud/dahua/src/main/java/com/example/dahua/dao/TestDao.java | 3 +++ cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java | 7 +++++-- cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java | 11 +++++++---- cloud/dahua/src/main/java/com/example/dahua/mqtt/MqttManager.java | 4 ++-- cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java | 10 +++++----- cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java | 12 ++++++++++-- cloud/dahua/src/main/java/com/example/dahua/xiananDao/SendRecordDao.java | 5 +++++ cloud/dahua/src/main/resources/bootstrap.yml | 4 ++-- cloud/dahua/src/test/java/com/example/dahua/DahuaApplicationTests.java | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------ cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java | 1 - cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AbstractFileService.java | 14 -------------- cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java | 17 ++++++++++++++--- cloud/getaway/src/main/resources/application.yml | 9 ++++++++- cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java | 2 +- cloud/haikang/src/main/java/com/sincere/haikang/async/SendUserAsync.java | 7 +++++++ cloud/haikang/src/main/java/com/sincere/haikang/bean/SmsBean.java | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/haikang/src/main/java/com/sincere/haikang/control/SmsControl.java | 37 +++++++++++++++++++++++++++++++------ cloud/haikang/src/main/java/com/sincere/haikang/utils/FileUtils.java | 2 ++ cloud/haikang/src/main/resources/application.yaml | 1 + cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java | 3 ++- cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java | 5 ----- cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------- cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java | 4 ++-- cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java | 2 +- cloud/haikangface/src/main/java/com/sincere/haikangface/utils/SendRecoderUtils.java | 8 +++++--- cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java | 4 ++-- cloud/mypulsar/src/main/java/com/example/mypulsar/MyRunnerableInt.java | 18 +++++++----------- cloud/mypulsar/src/main/java/com/example/mypulsar/MypulsarApplication.java | 2 ++ cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Result.java | 23 +++++++++++++++++++++++ cloud/mypulsar/src/main/java/com/example/mypulsar/bean/ResultData.java | 23 +++++++++++++++++++++++ cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Wl_Attendace.java | 34 ++++++++++++++++++++++++++++++++++ cloud/mypulsar/src/main/java/com/example/mypulsar/dao/DeviceDao.java | 31 +++++++++++++++++++++++++++++++ cloud/mypulsar/src/main/java/com/example/mypulsar/task/SchduledTasks.java | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/mypulsar/src/main/java/com/example/mypulsar/utils/ControlUtils.java | 181 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------ cloud/mypulsar/src/main/java/com/example/mypulsar/utils/FileUtils.java | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/mypulsar/src/main/java/com/example/mypulsar/utils/HttpUtil.java | 20 ++++++++++++++++---- 43 files changed, 1206 insertions(+), 230 deletions(-) create mode 100644 cloud/haikang/src/main/java/com/sincere/haikang/bean/SmsBean.java create mode 100644 cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Result.java create mode 100644 cloud/mypulsar/src/main/java/com/example/mypulsar/bean/ResultData.java create mode 100644 cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Wl_Attendace.java create mode 100644 cloud/mypulsar/src/main/java/com/example/mypulsar/task/SchduledTasks.java create mode 100644 cloud/mypulsar/src/main/java/com/example/mypulsar/utils/FileUtils.java diff --git a/cloud/dahua/src/main/java/com/example/dahua/DahuaApplication.java b/cloud/dahua/src/main/java/com/example/dahua/DahuaApplication.java index 905bd76..c3bc07b 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/DahuaApplication.java +++ b/cloud/dahua/src/main/java/com/example/dahua/DahuaApplication.java @@ -17,6 +17,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; @@ -37,6 +38,7 @@ import java.util.concurrent.TimeUnit; @SpringBootApplication @MapperScan("com.example.dahua.dao") @EnableDiscoveryClient +@EnableScheduling public class DahuaApplication { public static void main(String[] args) { diff --git a/cloud/dahua/src/main/java/com/example/dahua/Gate/CardManegerDialog.java b/cloud/dahua/src/main/java/com/example/dahua/Gate/CardManegerDialog.java index e9b6e3b..e040fd6 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/Gate/CardManegerDialog.java +++ b/cloud/dahua/src/main/java/com/example/dahua/Gate/CardManegerDialog.java @@ -245,7 +245,7 @@ public class CardManegerDialog extends JDialog{ String userId = v.get(4).toString(); // 用户ID // 删除人脸和卡信息 - if(!GateModule.deleteFaceInfo(userId) || + if( !GateModule.deleteCard(Integer.parseInt(recordNo))) { JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); } else { @@ -262,8 +262,7 @@ public class CardManegerDialog extends JDialog{ int result = JOptionPane.showConfirmDialog(null, Res.string().getWantClearAllInfo(), Res.string().getPromptMessage(), JOptionPane.YES_NO_OPTION); if(result == 0) { // 0-是, 1-否 // 清空人脸和卡信息 - if(!GateModule.clearFaceInfo() || - !GateModule.clearCard()) { + if(true) { JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); } else { JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE); diff --git a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java index 040e028..4a2b88c 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java @@ -71,9 +71,9 @@ public class MyTask implements ApplicationRunner { public void run(ApplicationArguments args) throws Exception { // 121.40.109.21 -// LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 + LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 -// autoRegister();//自注册 + autoRegister();//自注册 // System.out.println(" sendRecordDao:"+sendRecordDao.getSenSuccess()); } diff --git a/cloud/dahua/src/main/java/com/example/dahua/Test.java b/cloud/dahua/src/main/java/com/example/dahua/Test.java index d28cb47..2385e7d 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/Test.java +++ b/cloud/dahua/src/main/java/com/example/dahua/Test.java @@ -1,11 +1,23 @@ package com.example.dahua; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.Async; +import org.springframework.web.client.RestTemplate; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Random; +import java.util.UUID; + public class Test { public static void main(String[] args) { + Test test = new Test(); + + } diff --git a/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java b/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java index c668708..fd38d91 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/async/MyScheduledTask.java @@ -30,12 +30,9 @@ import org.springframework.web.client.RestTemplate; import java.io.*; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; @Component -@EnableScheduling public class MyScheduledTask { @@ -66,8 +63,9 @@ public class MyScheduledTask { private String imgFilPath = "C:\\EhomePicServer";//抓拍图片路径 - @Scheduled(fixedRate = 5000) +// @Scheduled(fixedRate = 5000) private void sendErrorInfo() throws InterruptedException { + System.out.println("---------------------------sendErrorInfo:"); // System.out.println("定时任务执行中...."); deleteFaceImg(); @@ -78,26 +76,6 @@ public class MyScheduledTask { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH"); int hour = Integer.parseInt(simpleDateFormat.format(new Date())); - /*if (hour == 7 && !isCloseYT) { - isCloseYT = true; - close(31, 97); - } - - if (hour == 17 && isCloseYT) { - isCloseYT = false; - close(30, 97); - }*/ - - /* if (hour == 6 && !isClose) { - isClose = true; - close(31, 479);//打开 - } - - if (hour == 22 && isClose) { - isClose = false; - close(30, 479);//关闭 - }*/ - if (hour >= 9 && hour < 11) { dealData(); } else if (hour >= 13 && hour < 14) { @@ -106,7 +84,7 @@ public class MyScheduledTask { dealData(); } - if (myTasks.isHasNewDevice)myTasks.reloadPic(); + if (myTasks.isHasNewDevice) myTasks.reloadPic(); } @@ -122,59 +100,43 @@ public class MyScheduledTask { File file = new File(imgFilPath); File[] files = file.listFiles(); Date currentDate = new Date(); - if (null!=files) - for (int i = 0; i < files.length; i++) { - File imgFile = files[i]; - String name = imgFile.getName().split("\\.")[0]; - String time = name.substring(32); - if(time.length()>8&&!time.contains("-"))time = time.substring(0,8); - - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd"); - try { - Date date1 = null; - if (time.contains("-"))date1 = simpleDateFormat.parse(time); - else date1 = simpleDateFormat1.parse(time); - - long timecj = currentDate.getTime() - date1.getTime(); - if (timecj > (7 * 24 * 60 * 60 * 1000)) {//大于七天的删除 - System.out.println("imgFile:" + imgFile.getAbsolutePath() + imgFile.exists()); + if (null != files) + for (int i = 0; i < files.length; i++) { + File imgFile = files[i]; + String name = imgFile.getName().split("\\.")[0]; + String time = name.substring(32); + if (time.length() > 8 && !time.contains("-")) time = time.substring(0, 8); + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd"); + try { + Date date1 = null; + if (time.contains("-")) date1 = simpleDateFormat.parse(time); + else date1 = simpleDateFormat1.parse(time); + + long timecj = currentDate.getTime() - date1.getTime(); + if (timecj > (7 * 24 * 60 * 60 * 1000)) {//大于七天的删除 + System.out.println("imgFile:" + imgFile.getAbsolutePath() + imgFile.exists()); + imgFile.delete(); + } + + } catch (ParseException e) { imgFile.delete(); +// e.printStackTrace(); } - } catch (ParseException e) { - imgFile.delete(); -// e.printStackTrace(); } - } - } } - private void close(int cmd, int schoolId) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String date = simpleDateFormat.format(new Date()); - FileUtils.getInstance().writeLogs(date + " " + cmd, FileUtils.sendOrder); - MqttManager mqttManager = new MqttManager(); + private synchronized void dealData() { - mqttManager.init(); - - List stringList = userDao.getAllDecWithSch(schoolId); -// System.out.println("stringList:" + stringList); - for (int i = 0; i < stringList.size(); i++) { - String devId = stringList.get(i); - mqttManager.sendMq(devId, cmd); - } - } - - private synchronized void dealData(){ - - String ip = new Utils().getHostAddress(); - System.out.println("ip:"+ip); - if (ip.startsWith("192")||ip.contains("172.16.247.64")) - return; + String ip = new Utils().getHostAddress(); + System.out.println("ip:" + ip); + if (ip.startsWith("192") || ip.contains("172.16.247.64")) + return; /** * 微耕 @@ -203,5 +165,95 @@ public class MyScheduledTask { } + boolean isSendMQ = false; + + boolean isInitMQ = false; + + int readLineNum = -1; + + Map readLineMap = new HashMap<>(); + + MqttManager mqttManager = new MqttManager(); + + + @Scheduled(fixedRate = 1000) + public void sendMq() { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH"); + + if (!isInitMQ) initMQ(); + if (!isSendMQ) { + isSendMQ = true; + String fileName = simpleDateFormat.format(new Date()); +// String filePath = "D:\\wg_log\\info\\kaoInfo\\" + fileName + ".log"; + String filePath = "C:\\Users\\Administrator\\Desktop\\2020-04-30 08.log"; + if (!readLineMap.containsKey(fileName)) readLineNum = -1;//更新文件后从头开始 + File file = new File(filePath); + try { + if (!file.exists()){ + System.out.println("文件不存在:" + filePath); + return; + } + FileInputStream fileInputStream = new FileInputStream(file); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream, "GB2312")); + + String content = null; + + int indexLineNum = 0;//当前文件的行 + while ((content = bufferedReader.readLine()) != null) { + indexLineNum++; + System.out.println("indexLineNum:"+indexLineNum+" ----------readLineNum:"+readLineNum); + if (indexLineNum >= readLineNum) { + readLineNum++; + sendMQMess(content); + } + + } + + readLineMap.put(fileName, readLineNum); + + fileInputStream.close(); + bufferedReader.close(); + + } catch (FileNotFoundException e) { + System.out.println("文件不存在:" + e.toString()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("IO异常:" + e.toString()); + e.printStackTrace(); + } + } else { + isSendMQ = false; + } + + + } + + private void initMQ() { + + if (null != mqttManager) mqttManager.init(); + isInitMQ = true; + + } + + private void sendMQMess(String content) { + String cardNum = content.substring(content.indexOf("卡号") + 3, content.indexOf("卡号") + 11); + + System.out.println("cardNum:" + cardNum); + + String inOrOut = content.substring(content.indexOf("方向:") + 3, content.indexOf("方向:") + 5).endsWith("进门") ? "0" : "1"; + + System.out.println("inOrOut:" + inOrOut); + + + List clintIds = userDao.getClintIds(); + for (int i = 0; i < clintIds.size(); i++) { + String clintId = clintIds.get(i); + + String data = "{\"cmd\":\"" + 34 + "\",\"clientId\":\"" + clintId + "\",\"data\":{\"cardNum\":\"" + cardNum + "\",\"inOrOut\":\"" + inOrOut + "\"}}"; + + mqttManager.sendMq(clintId, data); + } + } + } diff --git a/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java b/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java index 1a97488..b8ebdbc 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java @@ -1,5 +1,6 @@ package com.example.dahua.async; +import com.example.dahua.Gate.Gate; import com.example.dahua.MyTask; import com.example.dahua.bean.*; import com.example.dahua.common.Res; @@ -41,7 +42,7 @@ public class SendUserInfoTask { @Autowired SendRecordDao sendRecordDao; - @Async("taskExecutor") +// @Async("taskExecutor") public void doTaskOne(String file, List attendanceBeans, UserInfoBean userInfoBean, String schoolId, int failType, int userType) throws Exception { File studentFile = new File(file); String studentCode = studentFile.getName().split("\\.")[0]; @@ -69,7 +70,7 @@ public class SendUserInfoTask { sendUserInfoToDev(file, attendanceBeans, userInfoBean, userType + "", sendRecordBean); } - @Async("taskExecutor") +// @Async("taskExecutor") public void doTaskSendUserInfos(String schoolId, String clint_type, int type, int failtype) { try { String filePathStudent = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\Student"; @@ -156,6 +157,7 @@ public class SendUserInfoTask { HttpUtils.uploadImgs(studentFile, schoolId, studentCode, clint_type, 2); } else if (type == 2) {//教师信息 TeacherBean teacher = userDao.getTeacher(schoolId, studentCode); + System.out.println("教师信息:" + teacher.toString()); if (null != teacher) { userInfoBean = new UserInfoBean(); userInfoBean.setStudent_num(teacher.getTeacher_num()); @@ -297,6 +299,7 @@ public class SendUserInfoTask { // System.out.println("loginHandleLong:" + loginHandleLong + MyTask.lLongMap.toString() + " 设备ID:" + attendanceBean.getClint_id()); // System.out.println("loginHandleLong:" +loginHandleLong); if (loginHandleLong == null) { + FileUtils.getInstance().writeLogs("设备不在线:" + attendanceBean.getClint_id(), FileUtils.devices); String deviceId = sendRecordDao.getFailIsExit(attendanceBean.getClint_id(), attendanceBean.getSchool_id()); sendRecordBean.setFailType(2); @@ -311,27 +314,18 @@ public class SendUserInfoTask { String cardNum = cardNo(student_num); if (bCardFlags != -1) {//修改卡信息 -// GateModule.deleteCard(bCardFlags, loginHandleLong); GateModule.modifyCard(bCardFlags,cardNum,user_id,name,"123456",Res.string().getCardStatusInt(1),Res.string().getCardTypeInt(1), 0,0,1,startTime,endTime,loginHandleLong); userDao.updateRecordNo(user_id,bCardFlags,attendanceBean.getClint_id()); -// userDao.deleteRecordNo(user_id, bCardFlags); - -// bCardFlags = GateModule.insertCard(cardNum, user_id, name, "123456" -// , Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), 0, 0 -// , 1, startTime, endTime, loginHandleLong); - -// if (bCardFlags != -1) { -// int index = userDao.saveRecordNo(user_id, bCardFlags, name, attendanceBean.getClint_id());//存储记录集编号 -// } bFaceFalgs = GateModule.modifyFaceInfo(user_id, memory, loginHandleLong); //卡号添加成功,但是人脸不成功的话,就需要新增人脸 if (!bFaceFalgs) bFaceFalgs = GateModule.addFaceInfo(user_id, memory, loginHandleLong); } else {//新增卡信息 + bCardFlags = GateModule.insertCard(cardNum, user_id, name, "123456" - , Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), 0, 0 + , Res.string().getCardStatusInt(1), Res.string().getCardTypeInt(1), 0, 1 , 1, startTime, endTime, loginHandleLong); if (bCardFlags != -1) { @@ -372,7 +366,7 @@ public class SendUserInfoTask { // 添加卡信息和人脸失败 if (bCardFlags == -1 && !bFaceFalgs) { - FileUtils.getInstance().writeLogs("下发人脸和卡号失败:" + cardNum + " " + attendanceBean.getClint_id(), FileUtils.sendUserErrTxt); + FileUtils.getInstance().writeLogs("下发人脸和卡号失败:" + cardNum + " user_id: " + user_id+" loginHandleLong: "+loginHandleLong, FileUtils.sendUserErrTxt); // System.out.println("添加卡信息和人脸失败"); System.out.println("下发人脸和卡号失败" + "sendRecordBean:" + sendRecordBean.getDeviceID()+" ,"+sendRecordBean.getNum()+","+loginHandleLong+",bCardFlags:"+bCardFlags+"\r\n"); sendRecordBean.setFailContent("下发人脸和卡号失败"); @@ -664,4 +658,39 @@ public class SendUserInfoTask { e.printStackTrace(); } } + + +// @Async("taskExecutor") + public void testSMS(){ + RestTemplate restTemplate = new RestTemplate(); + + String LoginName = "13095656162"; + String MessageContent ="你好,五一快乐"; + String MessageType = "2"; + String Password = "yxt_123456"; + String ScheduleTime = ""; + String SerialNumber = ""; + String SpCode ="13095656162"; + String UserNumber=""; + String f= "1"; + long now = System.currentTimeMillis(); + String time = new SimpleDateFormat("yyyy").format(new Date()); + int ran = new Random().nextInt(999)+1; + SerialNumber = now+time+ran; + if (SerialNumber.length()<20)SerialNumber=SerialNumber+"0"; + System.out.println("SerialNumber:"+SerialNumber); + UserNumber = "130"+(new Random().nextInt(100000000)+1); + if (UserNumber.length()<11)UserNumber = UserNumber+"0"; +// SpCode = "130"+(new Random().nextInt(100000000)+1); + ScheduleTime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + + + + String url = String.format("http://121.40.109.21:8083/haikang/sms/sendMsg?LoginName=%s&MessageContent=%s" + + "&MessageType=%s&Password=%s&ScheduleTime=%s&SerialNumber=%s&SpCode=%s&UserNumber=%s&f=%s",LoginName, + MessageContent,MessageType,Password,ScheduleTime,SerialNumber,SpCode,UserNumber,f); + + ResponseEntity responseEntity = restTemplate.getForEntity(url,String.class); + System.out.println("responseEntity:"+responseEntity.getBody()+"---url:"+url); + } } diff --git a/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java b/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java index 37fcfa4..817337c 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java +++ b/cloud/dahua/src/main/java/com/example/dahua/control/FileControl.java @@ -1,8 +1,16 @@ package com.example.dahua.control; +import com.example.dahua.MyTask; import com.example.dahua.async.SendUserInfoTask; +import com.example.dahua.attendance.Attendance; +import com.example.dahua.bean.AttendanceBean; +import com.example.dahua.bean.TeacherBean; import com.example.dahua.bean.UploadImg; +import com.example.dahua.dao.UserDao; +import com.example.dahua.lib.ToolKits; +import com.example.dahua.module.GateModule; import com.example.dahua.service.UserService; +import com.sun.jna.Memory; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -14,10 +22,12 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.nio.file.Files; +import java.util.List; @RestController @Api("文件管理器") -@RequestMapping(value = "file/*",produces = MediaType.APPLICATION_JSON_UTF8_VALUE) +@RequestMapping(value = "file/*", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public class FileControl { @Autowired @@ -26,9 +36,12 @@ public class FileControl { @Autowired SendUserInfoTask sendUserInfoTask; + @Autowired + UserDao userDao; + @RequestMapping(method = RequestMethod.POST, value = "uploadImg") public String uploadImg(@RequestParam("file") MultipartFile file, @RequestParam("schoolId") String schoolId, @RequestParam("studentCode") String studentCode, - @RequestParam("clint_type") String clint_type,@RequestParam("userType") int userType) { + @RequestParam("clint_type") String clint_type, @RequestParam("userType") int userType) { System.out.println("schoolId:" + schoolId + " studentCode:" + studentCode); String fileName = file.getOriginalFilename();//文件名 @@ -40,7 +53,7 @@ public class FileControl { fileOutputStream.write(file.getBytes()); fileOutputStream.close(); - userService.uploadImgAndUserInfo(dest.getAbsolutePath(), schoolId, studentCode, clint_type,userType,""); + userService.uploadImgAndUserInfo(dest.getAbsolutePath(), schoolId, studentCode, clint_type, userType, ""); return "1"; } catch (FileNotFoundException e) { e.printStackTrace(); @@ -53,7 +66,7 @@ public class FileControl { @RequestMapping(method = RequestMethod.POST, value = "uploadImgToDev") public String uploadImgToDev(@RequestParam("file") MultipartFile file, @RequestParam("schoolId") String schoolId, @RequestParam("studentCode") String studentCode, - @RequestParam("clint_type") String clint_type,@RequestParam("userType") int userType,@RequestParam("devid")String devid) { + @RequestParam("clint_type") String clint_type, @RequestParam("userType") int userType, @RequestParam("devid") String devid) { String fileName = file.getOriginalFilename();//文件名 File outFile = new File("C://imgCom"); @@ -64,7 +77,7 @@ public class FileControl { fileOutputStream.write(file.getBytes()); fileOutputStream.close(); - userService.uploadImgAndUserInfo(dest.getAbsolutePath(), schoolId, studentCode, clint_type,userType,devid); + userService.uploadImgAndUserInfo(dest.getAbsolutePath(), schoolId, studentCode, clint_type, userType, devid); return "1"; } catch (FileNotFoundException e) { e.printStackTrace(); @@ -91,6 +104,89 @@ public class FileControl { } + @RequestMapping(value = "findCard", method = RequestMethod.GET) + @ApiOperation(value = "查询设备卡信息") + public boolean findCard(@RequestParam("cardNum") String cardNum, @RequestParam("deviceId") String deviceId) { + boolean fincard = GateModule.findCard(cardNum, MyTask.lLongMap.get(deviceId)); + System.out.println("fincard:" + fincard + MyTask.lLongMap.get(deviceId)); + + return true; + } + + + @RequestMapping(value = "addCard", method = RequestMethod.GET) + @ApiOperation(value = "下发卡信息") + public int addCard(@RequestParam("schoolId") String schoolId, @RequestParam("targPath") String targPath) { + + File file = new File(targPath); + File[] files = file.listFiles(); + + for (int i = 0; i < files.length; i++) { + File imgFile = files[i]; + String num = imgFile.getName().split("\\.")[0]; + TeacherBean teacherBean = userDao.getTeacher(schoolId, num); + + List attendanceBeans = userDao.selectDeviceWithschool_id("22", schoolId); + for (int j = 0; j < attendanceBeans.size(); j++) { + AttendanceBean attendanceBean = attendanceBeans.get(j); + int addCard = GateModule.insertCard(cardNo(teacherBean.getTeacher_num()), teacherBean.getUser_id(), teacherBean.getName(), + "123456", 1, 1, 1, 1, 1, + "2020-01-01 00:00:00", "2040-01-01 12:00:00", MyTask.lLongMap.get(attendanceBean.getClint_id())); + Memory memory = ToolKits.readPictureFile(imgFile.getAbsolutePath()); + GateModule.addFaceInfo(teacherBean.getUser_id(), memory, MyTask.lLongMap.get(attendanceBean.getClint_id())); + userDao.saveRecordNo(teacherBean.getUser_id(), addCard, teacherBean.getName(), attendanceBean.getClint_id()); + System.out.println("teacherBean:" + teacherBean.toString() + " clientid:" + attendanceBean.getClint_id()); + } + + + } + + + return 1; + } + + @RequestMapping(value = "deleteCard", method = RequestMethod.GET) + @ApiOperation(value = "删除卡信息") + public boolean deleteCard(@RequestParam("recordNum") int recordNum, @RequestParam("deviceId") String deviceId) { + boolean deleteCard = GateModule.deleteCard(recordNum, MyTask.lLongMap.get(deviceId)); + System.out.println("addCard:" + deleteCard + "----" + MyTask.lLongMap.get(deviceId)); + return deleteCard; + } + + + @RequestMapping(value = "clearCard", method = RequestMethod.GET) + @ApiOperation(value = "清空卡信息") + public boolean clearCard(@RequestParam("deviceId") String deviceId) { + boolean clearCard = GateModule.clearCard(MyTask.lLongMap.get(deviceId)); + System.out.println("addCard:" + clearCard + "----" + MyTask.lLongMap.get(deviceId)); + return clearCard; + } + + @RequestMapping(value = "clearFaceInfo", method = RequestMethod.GET) + @ApiOperation(value = "清空人脸信息") + public boolean clearFaceInfo(@RequestParam("deviceId") String deviceId) { + boolean clearCard = GateModule.clearFaceInfo(MyTask.lLongMap.get(deviceId)); + System.out.println("addCard:" + clearCard + "----" + MyTask.lLongMap.get(deviceId)); + return clearCard; + } + + + public String cardNo(String cardDex) { + + String cardR = ""; + int length = cardDex.length(); + if (length != 8) { + System.out.println("卡号格式不正确:" + cardDex); + return cardDex; + } + while (length > 0) { + length -= 2; + cardR += cardDex.substring(length, length + 2); + } + + return cardR; + + } } diff --git a/cloud/dahua/src/main/java/com/example/dahua/dao/TestDao.java b/cloud/dahua/src/main/java/com/example/dahua/dao/TestDao.java index 55b0e00..7cadc1e 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/dao/TestDao.java +++ b/cloud/dahua/src/main/java/com/example/dahua/dao/TestDao.java @@ -36,4 +36,7 @@ public interface TestDao { @Update("update TK_Question set Question = #{Question} where ID = #{id}") void updateQuestion(@Param("Question") String Question,@Param("id")String id); + + + } diff --git a/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java b/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java index 34f6a1f..6d2ec49 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java +++ b/cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java @@ -20,10 +20,10 @@ public interface UserDao { @Select("select * from SZ_Attendance where school_id = #{school_id} and clint_type = #{clint_type} and clint_id = #{clint_id}") List getAttendanceBeanWithId(@Param("school_id")String school_id,@Param("clint_type")String clint_type,@Param("clint_id")String clint_id); - @Select(" select * from SZ_V_School_Student where school_id = #{school_id} and studentcode = #{studentcode}") + @Select(" select Top(1)* from SZ_V_School_Student where school_id = #{school_id} and studentcode = #{studentcode}") UserInfoBean getUserInfo(@Param("school_id")String school_id,@Param("studentcode")String studentcode); - @Select(" select * from SZ_V_School_Teacher where school_id = #{school_id} and num = #{num}") + @Select(" select Top(1)* from SZ_V_School_Teacher where school_id = #{school_id} and num = #{num}") TeacherBean getTeacher(@Param("school_id")String school_id, @Param("num")String num); @Select(" select Top(1)* from SZ_V_School_Teacher where teacher_id = #{teacher_id}") @@ -100,4 +100,7 @@ public interface UserDao { @Select("select * from SZ_V_Card where num=#{num}") CardBean getCards(@Param("num")String num); + @Select("select clint_id from SZ_Attendance where school_id = 4 and clint_type = 8") + List getClintIds(); + } diff --git a/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java b/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java index 2cc7d24..cc64782 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java +++ b/cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java @@ -494,7 +494,7 @@ public class GateModule { /** * 清除所有卡信息 */ - public static boolean clearCard() { + public static boolean clearCard(LLong lLong) { /** * 记录集操作 */ @@ -502,7 +502,7 @@ public class GateModule { msg.emType = EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD; // 门禁卡记录集信息类型 msg.write(); - boolean bRet = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, + boolean bRet = LoginModule.netsdk.CLIENT_ControlDevice(lLong, CtrlType.CTRLTYPE_CTRL_RECORDSET_CLEAR, msg.getPointer(), 5000); msg.read(); if(!bRet){ @@ -727,7 +727,7 @@ public class GateModule { /** * 清除所有人脸 */ - public static boolean clearFaceInfo() { + public static boolean clearFaceInfo(LLong lLong) { int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_CLEAR; // 清除 /** @@ -742,7 +742,7 @@ public class GateModule { stIn.write(); stOut.write(); - boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(LoginModule.m_hLoginHandle, emType, + boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(lLong, emType, stIn.getPointer(), stOut.getPointer(), 5000); stIn.read(); stOut.read(); @@ -835,6 +835,9 @@ public class GateModule { findCondition.read(); m_lFindHandle = stOut.lFindeHandle; + + System.err.println("没查到卡信息!" + ToolKits.getErrorCodePrint()); + return true; } diff --git a/cloud/dahua/src/main/java/com/example/dahua/mqtt/MqttManager.java b/cloud/dahua/src/main/java/com/example/dahua/mqtt/MqttManager.java index 5c7c393..f233855 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/mqtt/MqttManager.java +++ b/cloud/dahua/src/main/java/com/example/dahua/mqtt/MqttManager.java @@ -92,10 +92,10 @@ public class MqttManager { } } - public void sendMq(String deviceId,int cmd) { + public void sendMq(String deviceId,String content) { String recvClientId = groupId + "@@@"+deviceId; final String p2pSendTopic = topic + "/p2p/" + recvClientId; - String content = "{\"cmd\":\""+cmd+"\",\"clientId\":\"\",\"data\": \"6:00-19:25\"}"; +// String content = "{\"cmd\":\""+cmd+"\",\"clientId\":\"\",\"data\": \"6:00-19:25\"}"; MqttMessage message = new MqttMessage(content.getBytes()); message.setQos(qosLevel); System.out.println("发送内容:" + p2pSendTopic); diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java b/cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java index bffac7a..b12c889 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java +++ b/cloud/dahua/src/main/java/com/example/dahua/service/UserServiceImp.java @@ -23,9 +23,9 @@ public class UserServiceImp implements UserService { SendUserInfoTask myTask; @Override - public List getAttendanceBeans(String schoolId, String clint_type,String devid) { + public List getAttendanceBeans(String schoolId, String clint_type, String devid) { - if (!StringUtils.isEmpty(devid))return userDao.getAttendanceBeanWithId(schoolId,clint_type,devid); + if (!StringUtils.isEmpty(devid)) return userDao.getAttendanceBeanWithId(schoolId, clint_type, devid); return userDao.getAttendanceBeans(schoolId, clint_type); } @@ -45,9 +45,9 @@ public class UserServiceImp implements UserService { * @return */ @Override - public boolean uploadImgAndUserInfo(String file, String schoolId, String studentCode, String clint_type, int userType,String devid) { - List attendanceBeans = getAttendanceBeans(schoolId, clint_type,devid);//获取学校下的大华设备 - + public boolean uploadImgAndUserInfo(String file, String schoolId, String studentCode, String clint_type, int userType, String devid) { + List attendanceBeans = getAttendanceBeans(schoolId, clint_type, devid);//获取学校下的大华设备 + System.out.println("设备数量:" + attendanceBeans.size()); UserInfoBean userInfoBean = null; try { if (userType == 2) { diff --git a/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java b/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java index ebd1710..80d7194 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java +++ b/cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java @@ -1,5 +1,7 @@ package com.example.dahua.utils; +import com.example.dahua.lib.CompressPic; +import com.example.dahua.lib.FilePath; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -22,7 +24,13 @@ public class HttpUtils { System.out.println("图片不存在"); return false; } - + String targPath = FilePath.picPathComp + studentCode+ ".jpg"; +// String targPath = "C:\\Users\\taohandong\\Desktop\\comp\\"+userInfoBean.getStudentcode()+".jpg"; + try { + CompressPic.CompressPic(file.getAbsolutePath(), targPath, studentCode);//压缩后的图片 + } catch (Exception e) { + e.printStackTrace(); + } String url = "http://121.40.109.21:8991/file/uploadImg"; // String url = "http://localhost:8991/file/uploadImg"; RestTemplate restTemplate = new RestTemplate(); @@ -35,7 +43,7 @@ public class HttpUtils { MultiValueMap multivaluedMap = new LinkedMultiValueMap<>(); - FileSystemResource fileSystemResource = new FileSystemResource(file); + FileSystemResource fileSystemResource = new FileSystemResource(targPath); multivaluedMap.add("file",fileSystemResource); multivaluedMap.add("schoolId",schoolId); diff --git a/cloud/dahua/src/main/java/com/example/dahua/xiananDao/SendRecordDao.java b/cloud/dahua/src/main/java/com/example/dahua/xiananDao/SendRecordDao.java index 42eb332..0cb62a6 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/xiananDao/SendRecordDao.java +++ b/cloud/dahua/src/main/java/com/example/dahua/xiananDao/SendRecordDao.java @@ -79,5 +79,10 @@ public interface SendRecordDao { void addFaceRecoder(@Param("deviceId") String deviceId, @Param("user_id") String user_id, @Param("name") String name, @Param("imgurl") String imgurl, @Param("inOrOut") int inOrOut, @Param("time") String time, @Param("cardNum") String cardNum); + + + @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)") + List getStudentCode(); + } diff --git a/cloud/dahua/src/main/resources/bootstrap.yml b/cloud/dahua/src/main/resources/bootstrap.yml index 88d5266..e594e5a 100644 --- a/cloud/dahua/src/main/resources/bootstrap.yml +++ b/cloud/dahua/src/main/resources/bootstrap.yml @@ -6,7 +6,7 @@ server: #服务名称 spring: application: - name: dahua + name: dahuaserver #management: # endpoints: @@ -36,5 +36,5 @@ eureka: lease-renewal-interval-in-seconds: 10 #每隔几秒告诉eureka服务器我还存活,用于心跳检测 lease-expiration-duration-in-seconds: 10 #如果心跳检测一直没有发送,10秒后会从eureka服务器中将此服务剔除 # status-page-url: http://${spring.cloud.client.ip-address}:${server.port}/doc.html # ${server.port}为该服务的端口号 - hostname: 114.55.30.100 + hostname: localhost # status-page-url: http://${spring.cloud.client.ip-address}:${randomServerPort.value[5000,5005]}/document.html # ${server.port}为该服务的端口号 \ No newline at end of file diff --git a/cloud/dahua/src/test/java/com/example/dahua/DahuaApplicationTests.java b/cloud/dahua/src/test/java/com/example/dahua/DahuaApplicationTests.java index 19e1d87..739393d 100644 --- a/cloud/dahua/src/test/java/com/example/dahua/DahuaApplicationTests.java +++ b/cloud/dahua/src/test/java/com/example/dahua/DahuaApplicationTests.java @@ -311,13 +311,16 @@ public class DahuaApplicationTests { @Test public void test2() { - /* RestTemplate restTemplate = new RestTemplate(); - - - String url = "http://localhost:8991/user/checkFace?url=C:\\Users\\taohandong\\Pictures\\test.jpg"; + List stuCodes = sendRecordDao.getStudentCode(); + RestTemplate restTemplate = new RestTemplate(); - System.out.println("result:"+ restTemplate.getForObject(url,String.class));*/ + for (int i = 0; i < stuCodes.size(); i++) { + String stuCode = stuCodes.get(i); + String url = "http://114.55.30.100:8991/user/checkFace?url=E:/wwwhtdocs/SmartCampus/face17e5/School1037/Student/" + stuCode + ".png"; + ResponseEntity responseEntity = restTemplate.getForEntity(url, String.class); + System.out.println("responseEntity:" + responseEntity.getBody()); + } } @@ -326,11 +329,11 @@ public class DahuaApplicationTests { public void test1() { - String url = "http://121.40.109.21:9000/cleanFail?deviceId="; - RestTemplate restTemplate = new RestTemplate(); - - String result = restTemplate.getForObject(url+"253164293",String.class); -System.out.println("result:"+result); +// String url = "http://121.40.109.21:9000/cleanFail?deviceId="; +// RestTemplate restTemplate = new RestTemplate(); +// +// String result = restTemplate.getForObject(url + "253164293", String.class); +// System.out.println("result:" + result); /* try { BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\TaoHandong\\copy\\宿舍.txt")); String content = null; @@ -368,20 +371,67 @@ System.out.println("result:"+result); } + @Test public void Mqtt() { + + + for (int i = 0; i < 2; i++) { + sendUserInfoTask.testSMS(); + } + + /* File file = new File("C:\\Users\\Administrator\\Desktop\\2020-04-30 08.log"); + + try { + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GB2312")); + + String content = null; + + MqttManager mqttManager = new MqttManager(); + + mqttManager.init(); + + while ((content=bufferedReader.readLine())!=null){ + + String cardNum = content.substring(content.indexOf("卡号")+3,content.indexOf("卡号")+11); + + System.out.println("cardNum:"+cardNum); + + + String inOrOut = content.substring(content.indexOf("方向:")+3,content.indexOf("方向:")+5).endsWith("进门")?"0":"1"; + + System.out.println("inOrOut:"+inOrOut); + + + List clintIds = userDao.getClintIds(); + for (int i = 0; i < clintIds.size(); i++) { + String clintId = clintIds.get(i); + + String data = "{\"cmd\":\""+34+"\",\"clientId\":\""+clintId+"\",\"data\":{\"cardNum\":\""+cardNum+"\",\"inOrOut\":\""+inOrOut+"\"}}"; + + mqttManager.sendMq(clintId, data); + } + + } + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + }*/ + /* MqttManager mqttManager = new MqttManager(); mqttManager.init(); - List stringList = userDao.getAllDecWithSch(479); + List stringList = userDao.getAllDecWithSch(27); System.out.println("stringList:" + stringList); for (int i = 0; i < stringList.size(); i++) { String devId = stringList.get(i); //30关闭显示屏 31打开显示屏,9升级客户端 - mqttManager.sendMq(devId, 31); + mqttManager.sendMq(devId, 9); }*/ } diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java b/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java index 41fe4ec..aeb5c2c 100644 --- a/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java +++ b/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java @@ -48,7 +48,6 @@ public class FileControl { String ossPath = request.getHeader("ossPath");//oss的二级目录 - FileInfo fileInfo = fileService.upload(file, ossPath); return fileInfo.getUrl(); diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AbstractFileService.java b/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AbstractFileService.java index 4cac6ca..a54ce4f 100644 --- a/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AbstractFileService.java +++ b/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AbstractFileService.java @@ -23,23 +23,9 @@ public abstract class AbstractFileService implements FileService { @Override public FileInfo upload(MultipartFile file,String filePath) throws Exception { FileInfo fileInfo = FileUtil.getFileInfo(file); -// FileInfo oldFileInfo = getFileDao().getById(fileInfo.getId()); -// if (oldFileInfo != null) { -// return oldFileInfo; -// } -// -// if (!fileInfo.getName().contains(".")) { -// throw new IllegalArgumentException("缺少后缀名"); -// } uploadFile(file, fileInfo,filePath); -// fileInfo.setSource(fileType().name());// 设置文件来源 -// getFileDao().save(fileInfo);// 将文件信息保存到数据库 -// // 本地保存文件 -// FileUtil.saveFile(file,fileInfo.getPath()); -// log.info("上传文件:{}", fileInfo); - return fileInfo; } diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java b/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java index a577cc0..2c01091 100644 --- a/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java +++ b/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java @@ -1,6 +1,7 @@ package com.sincere.file.service.impl; import com.aliyun.oss.OSSClient; +import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.PutObjectResult; import com.sincere.file.model.FileInfo; import org.springframework.beans.factory.annotation.Autowired; @@ -42,9 +43,19 @@ public class AliyunOssServiceImpl extends AbstractFileService { @Override protected void uploadFile(MultipartFile file, FileInfo fileInfo,String filePath) throws Exception { - String fileName = UUID.randomUUID().toString()+"."+fileInfo.getName().split("\\.")[1]; - ossClient.putObject(bucketName, filePath+"/"+fileName, file.getInputStream()); - fileInfo.setUrl(domain+"/" +filePath+ "/" + fileName); +// String fileName = UUID.randomUUID().toString()+"."+fileInfo.getName().split("\\.")[1]; + String fileName = fileInfo.getName(); + String keyObjectName = filePath+"/"+fileName; + +// boolean isExist = ossClient.doesObjectExist(bucketName, keyObjectName); +// if (isExist){ +// OSSObject ossObject = ossClient.getObject(bucketName,keyObjectName); +// keyObjectName = filePath+"/"+fileName.split("\\.")[0]+; +// } + + ossClient.putObject(bucketName, keyObjectName, file.getInputStream()); + + fileInfo.setUrl(domain+"/" +keyObjectName); } @Override diff --git a/cloud/getaway/src/main/resources/application.yml b/cloud/getaway/src/main/resources/application.yml index fdb9c82..f6ec630 100644 --- a/cloud/getaway/src/main/resources/application.yml +++ b/cloud/getaway/src/main/resources/application.yml @@ -62,6 +62,13 @@ spring: - Path=/dahua/** filters: - StripPrefix=1 + - id: haikangserver + # uri: lb://dahua + uri: http://121.40.109.21:9898 + predicates: + - Path=/haikang/** + filters: + - StripPrefix=1 # default-filters: # - DedupeResponseHeader=Access-Control-Allow-Origin, RETAIN_UNIQUE # discovery: @@ -85,4 +92,4 @@ ribbon: url: - ignored: /SmartCampusWebApi/**,/authserver/**,/NewSmartCampus/**,/file-center/**,/dahua/** \ No newline at end of file + ignored: /SmartCampusWebApi/**,/authserver/**,/NewSmartCampus/**,/file-center/**,/dahua/**,/haikang/** \ No newline at end of file diff --git a/cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java b/cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java index 6714ec6..c9e8730 100644 --- a/cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java +++ b/cloud/haikang/src/main/java/com/sincere/haikang/SchduleTask.java @@ -44,7 +44,7 @@ public class SchduleTask { /** * 定时任务,取更新的学生信息 */ - @Scheduled(fixedRate = 5000) +// @Scheduled(fixedRate = 5000) public synchronized void getUpdateStudentInfo() { try { diff --git a/cloud/haikang/src/main/java/com/sincere/haikang/async/SendUserAsync.java b/cloud/haikang/src/main/java/com/sincere/haikang/async/SendUserAsync.java index ed952a5..e5a7a77 100644 --- a/cloud/haikang/src/main/java/com/sincere/haikang/async/SendUserAsync.java +++ b/cloud/haikang/src/main/java/com/sincere/haikang/async/SendUserAsync.java @@ -8,13 +8,18 @@ import com.sincere.haikang.dao.DeviceDao; import com.sincere.haikang.utils.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; +import org.springframework.web.client.RestTemplate; import java.io.File; import java.io.FileOutputStream; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; +import java.util.Random; @Component public class SendUserAsync { @@ -141,4 +146,6 @@ public class SendUserAsync { } + + } diff --git a/cloud/haikang/src/main/java/com/sincere/haikang/bean/SmsBean.java b/cloud/haikang/src/main/java/com/sincere/haikang/bean/SmsBean.java new file mode 100644 index 0000000..c7ffffe --- /dev/null +++ b/cloud/haikang/src/main/java/com/sincere/haikang/bean/SmsBean.java @@ -0,0 +1,105 @@ +package com.sincere.haikang.bean; + +import io.swagger.annotations.ApiModel; + +@ApiModel +public class SmsBean { + + private String LoginName = "13095656162"; + private String MessageContent ="你好,五一快乐"; + private String MessageType = "2"; + private String Password = "yxt_123456"; + private String ScheduleTime = ""; + private String SerialNumber = ""; + private String SpCode ="13095656162"; + private String UserNumber=""; + private String f= "1"; + + + public String getLoginName() { + return LoginName; + } + + public void setLoginName(String loginName) { + LoginName = loginName; + } + + public String getMessageContent() { + return MessageContent; + } + + public void setMessageContent(String messageContent) { + MessageContent = messageContent; + } + + public String getMessageType() { + return MessageType; + } + + public void setMessageType(String messageType) { + MessageType = messageType; + } + + public String getPassword() { + return Password; + } + + public void setPassword(String password) { + Password = password; + } + + public String getScheduleTime() { + return ScheduleTime; + } + + public void setScheduleTime(String scheduleTime) { + ScheduleTime = scheduleTime; + } + + public String getSerialNumber() { + return SerialNumber; + } + + public void setSerialNumber(String serialNumber) { + SerialNumber = serialNumber; + } + + public String getSpCode() { + return SpCode; + } + + public void setSpCode(String spCode) { + SpCode = spCode; + } + + public String getUserNumber() { + return UserNumber; + } + + public void setUserNumber(String userNumber) { + UserNumber = userNumber; + } + + public String getF() { + return f; + } + + public void setF(String f) { + this.f = f; + } + + @Override + public String toString() { + return "SmsBean{" + + "LoginName='" + LoginName + '\'' + + ", MessageContent='" + MessageContent + '\'' + + ", MessageType='" + MessageType + '\'' + + ", Password='" + Password + '\'' + + ", ScheduleTime='" + ScheduleTime + '\'' + + ", SerialNumber='" + SerialNumber + '\'' + + ", SpCode='" + SpCode + '\'' + + ", UserNumber='" + UserNumber + '\'' + + ", f='" + f + '\'' + + '}'; + } +} diff --git a/cloud/haikang/src/main/java/com/sincere/haikang/control/SmsControl.java b/cloud/haikang/src/main/java/com/sincere/haikang/control/SmsControl.java index 08375ca..d24ddc1 100644 --- a/cloud/haikang/src/main/java/com/sincere/haikang/control/SmsControl.java +++ b/cloud/haikang/src/main/java/com/sincere/haikang/control/SmsControl.java @@ -1,14 +1,15 @@ package com.sincere.haikang.control; +import com.sincere.haikang.bean.SmsBean; import com.sincere.haikang.bean.StudentBean; import com.sincere.haikang.utils.EncodeUtils; +import com.sincere.haikang.utils.FileUtils; import com.sincere.haikang.utils.SmsHttpUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.boot.actuate.trace.http.HttpTrace; +import org.springframework.util.MultiValueMap; +import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -20,17 +21,38 @@ import java.util.*; @RequestMapping(value = "sms/*") public class SmsControl { - @RequestMapping(value = "sendMsg", method = RequestMethod.GET) + + @RequestMapping(value = "sendMsg", method = RequestMethod.GET,produces="application/json;charset=UTF-8") + @ResponseBody @ApiImplicitParam(name = "ExtendAccessNum",required = false) public String sendMsg(@RequestParam("SpCode") String SpCode, @RequestParam("LoginName") String LoginName, @RequestParam("Password") String Password , @RequestParam("MessageContent") String MessageContent, @RequestParam("MessageType") String MessageType , @RequestParam("UserNumber") String UserNumber, @RequestParam("SerialNumber") String SerialNumber , @RequestParam("ScheduleTime") String ScheduleTime, String ExtendAccessNum , @RequestParam("f") String f) { - + System.out.println("接口请求"); return sendSms(SpCode, LoginName, Password, MessageContent, MessageType, UserNumber, SerialNumber, ScheduleTime, ExtendAccessNum, f); +// return "success"; + } + + @PostMapping(value = "sendMsgs") + public String sendMags(@RequestBody SmsBean smsBean){ + System.out.println("接口请求POST:"+smsBean.toString()); + return sendSms(smsBean.getSpCode(), smsBean.getLoginName(), smsBean.getPassword(), + smsBean.getMessageContent(), smsBean.getMessageType(), smsBean.getUserNumber(), smsBean.getSerialNumber(), + smsBean.getScheduleTime(), "", smsBean.getF()); + } +// @PostMapping(value = "sendMsg") +// public String sendMsg(@RequestBody MultiValueMap multiValueMap){ +// +// String SpCode = multiValueMap. +// +// +// } + + private String sendSms(String spCode, String loginName, String password, String messageContent, String messageType, String userNumber, String serialNumber, String scheduleTime, String extendAccessNum, String f) { String url = "http://ytx.zj165.com:9098/api/send"; Map params = initSmsParams(spCode, loginName, password, messageContent, messageType, userNumber, serialNumber, scheduleTime, extendAccessNum, f); @@ -38,9 +60,12 @@ public class SmsControl { try { result = SmsHttpUtils.doGet(url, params); } catch (IOException e) { + FileUtils.getInstance().writeLogs(String.format("GET短信发送的响应失败【%s】",e.toString()),FileUtils.liantong); e.printStackTrace(); } System.out.println(String.format("GET短信发送的响应报文【%s】",result)+" messageContent:"+messageContent); + + FileUtils.getInstance().writeLogs(String.format("GET短信发送的响应报文【%s】",result),FileUtils.liantong); return result; } diff --git a/cloud/haikang/src/main/java/com/sincere/haikang/utils/FileUtils.java b/cloud/haikang/src/main/java/com/sincere/haikang/utils/FileUtils.java index f138cf8..fe8e1f6 100644 --- a/cloud/haikang/src/main/java/com/sincere/haikang/utils/FileUtils.java +++ b/cloud/haikang/src/main/java/com/sincere/haikang/utils/FileUtils.java @@ -36,6 +36,8 @@ public class FileUtils { public static String yichangtime = "上报异常时间.txt";//学校id记录表 + public static String liantong = "联通短信.txt";//学校id记录表 + public static FileUtils getInstance() { if (null == fileUtils) { synchronized (FileUtils.class) { diff --git a/cloud/haikang/src/main/resources/application.yaml b/cloud/haikang/src/main/resources/application.yaml index 9fd5e84..f5baa74 100644 --- a/cloud/haikang/src/main/resources/application.yaml +++ b/cloud/haikang/src/main/resources/application.yaml @@ -1,5 +1,6 @@ server: port: 9898 + max-http-header-size: 102400 spring: application: diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java index 6be5ce2..11c9cb3 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java @@ -509,7 +509,8 @@ public class CMSServer implements ApplicationRunner { int err = hCEhomeSS.NET_ESS_GetLastError(); System.out.println("NET_ESS_ClientDoUpload失败,错误号:" + err); } else { - url = "http://120.26.116.253:" + 8081 + new String(szUrl).trim(); +// url = "http://120.26.116.253:" + 8081 + new String(szUrl).trim(); + url = "http://114.55.30.100:" + 8081 + new String(szUrl).trim(); // System.err.println("NET_ESS_ClientDoUpload成功!:" + url); } hCEhomeSS.NET_ESS_DestroyClient(client);//释放资源 diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java index e86da9a..60e9674 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java @@ -44,11 +44,6 @@ public class SendUserAsync { //1、检测图片是否合格 boolean check = true; if (check) {//合格 - try { - CompressPic.CompressPic(srcFile, picUrl); - } catch (Exception e) { - e.printStackTrace(); - } //根据设备是5603 还是新设备 String employeeNo = ""; if (deviceId.contains("ymzx")||deviceId.contains("5607")||deviceId.contains("5671")||deviceId.contains("5604")){ diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java index 39a1179..50df6d4 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java @@ -59,6 +59,7 @@ public class UserControl { @RequestParam("endTime") String endTime, @RequestParam("validTimeEnabled") int validTimeEnabled, @RequestParam("userType") String userType) { try { + if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png"); if (new File(filePath.trim()).exists()) { return sendImg(filePath, deviceId, card, name, userType); @@ -74,11 +75,10 @@ public class UserControl { } private boolean sendImg(String filePath, String deviceId, String card, String name, String userType) { - long time = System.currentTimeMillis(); - String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(new Date()); + String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR, 10); - String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(calendar.getTime()); + String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); String targetPath = FileUtils.picPathComp + new File(filePath).getName(); try { @@ -88,10 +88,19 @@ public class UserControl { } else {//单图发送 isPiliang = 1; } + + try { + CompressPic.CompressPic(filePath, targetPath); + } catch (Exception e) { + e.printStackTrace(); + } + + FileUtils.getInstance().writeLogs("startTime:" + startTime + "---endTime:" + endTime, "下发参数"); if (cmsServer.getIsDeviceOnline(deviceId)) + sendUserAsync.sendStuToHaiKang(filePath, targetPath, Long.parseLong(getCard(card), 16) + "", startTime, endTime, 1, name, deviceId, userType, isPiliang); else { - sendUserAsync.uploadImgs(filePath, card, name, deviceId, startTime, endTime, 1, userType); + sendUserAsync.uploadImgs(targetPath, card, name, deviceId, startTime, endTime, 1, userType); } // System.out.println("time:" + (System.currentTimeMillis() - time) / 1000); return true; @@ -118,21 +127,57 @@ public class UserControl { String[] devStrs = devices.split(","); File[] imgStrs = new File(imgPath).listFiles(); + String schoolId = null; + + logger.error("sendImg2Devices:{}",images2Ddevices.toString()); if (null != imgStrs) { for (int i = 0; i < imgStrs.length; i++) { File filePath = imgStrs[i];//图片路径 if (filePath.exists()) { + String studentCode = filePath.getName().split("\\.")[0]; - StudentBean studentBean = userDao.getStudent_NumWitdCode(studentCode); - if (null != studentBean) { - for (int j = 0; j < devStrs.length; j++) { - String devId = devStrs[j]; - sendUserAsync.uploadImgs(filePath.getAbsolutePath(), studentBean.getStudent_num(), studentBean.getName(), devId, startTime, endTime, 1, images2Ddevices.getUserType()); + + String targetPath = FileUtils.picPathComp + filePath.getName(); + + try { + CompressPic.CompressPic(filePath.getAbsolutePath(), targetPath); + } catch (Exception e) { + e.printStackTrace(); + } + /** + * 下发给不同设备 + */ + for (int j = 0; j < devStrs.length; j++) { + String devId = devStrs[j]; + if (schoolId == null) schoolId = userDao.getSchoolIdWithDevId(devId); + + StudentBean studentBean = null; + String card = null; + String name = null; + + if (images2Ddevices.getUserType().equals("1")) {//老师 + studentBean = userDao.getTeacherWithstudentcode(studentCode, schoolId); + card = studentBean.getTeacher_num(); + name = studentBean.getName(); + } else if (images2Ddevices.getUserType().equals("2")) {//学生 + studentBean = userDao.getStudentWithstudentcode(studentCode, schoolId); + card = studentBean.getStudent_num(); + name = studentBean.getName(); + } + + if (null != studentBean) { + if (cmsServer.getIsDeviceOnline(devId)) { + + sendUserAsync.sendStuToHaiKang(filePath.getAbsolutePath(), targetPath, Long.parseLong(getCard(card), 16) + "", startTime, endTime, 1, name, devId, images2Ddevices.getUserType(), 0); + + } else { + sendUserAsync.uploadImgs(targetPath, card, name, devId, startTime, endTime, 1, images2Ddevices.getUserType()); + } + } else { + logger.error("学生对象不存在"); } - } else { - logger.error("学生对象不存在"); } } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java index 5ae2285..67c865f 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java @@ -211,6 +211,6 @@ public interface UserDao { "where num = #{num} and school_id = #{schoolId}") StudentBean getTeacherWithstudentcode(@Param("num") String num,@Param("schoolId")String schoolId); - @Select("select Top(1) * from SZ_V_School_Student where studentcode = #{studentcode}") - StudentBean getStudent_NumWitdCode(@Param("studentcode") String studentcode); + @Select("select school_id from SZ_Attendance where clint_id = #{devId}") + String getSchoolIdWithDevId(@Param("devId") String devId); } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java index 18f34d1..1bc9539 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java @@ -16,7 +16,7 @@ import java.io.InputStream; public class CompressPic { public static String CompressPic(String srcPath, String targetPath) throws Exception { - double cutPercent = 0.1; + double cutPercent = 0.2; File file = new File(srcPath.trim()); FileInputStream fileInputStreamSrc = new FileInputStream(file); BufferedImage bufferedImage = ImageIO.read(fileInputStreamSrc); diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/SendRecoderUtils.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/SendRecoderUtils.java index 1cc61c1..f7f9758 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/SendRecoderUtils.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/SendRecoderUtils.java @@ -23,7 +23,7 @@ public class SendRecoderUtils { * @param userDao */ - public void sendSuccess(SendRecordDao sendRecordDao, String card, String faceUrl, String deviceId, UserDao userDao, String userType) { + public synchronized void sendSuccess(SendRecordDao sendRecordDao, String card, String faceUrl, String deviceId, UserDao userDao, String userType) { // BigInteger bigInteger = new BigInteger(card); long lon = Long.parseLong(card); String resultCard = getCard(String.format("%08x", lon)).toUpperCase(); @@ -43,6 +43,7 @@ public class SendRecoderUtils { break; } if (null != studentBean) { + String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); String schoolName = userDao.getSchoolName(studentBean.getSchool_id() + ""); List sendRecordBeans = sendRecordDao.getSuccessIsExitStu(deviceId, resultCard); @@ -61,8 +62,9 @@ public class SendRecoderUtils { sendRecordDao.addFaceSuccess(customerId, deviceId, resultCard, studentBean.getName(), time, schoolName, faceUrl, studentBean.getSchool_id(), Integer.parseInt(userType), 18); } else { - sendRecordDao.updateFaceSuccess(deviceId, resultCard, time, faceUrl); + sendRecordDao.updateFaceSuccess(deviceId, resultCard, time, faceUrl,studentBean.getName(),customerId); } + FileUtils.getInstance().writeLogs(studentBean.toString()+"\r\n"+resultCard,"下发成功记录"); //删除下发失败表中的数据 sendRecordDao.deleteFaceFail(resultCard, deviceId); } else { @@ -81,7 +83,7 @@ public class SendRecoderUtils { * @param deviceId * @param userDao */ - public void sendFail(SendRecordDao sendRecordDao, String card, String faceUrl, String deviceId, UserDao userDao, String content, String userType) { + public synchronized void sendFail(SendRecordDao sendRecordDao, String card, String faceUrl, String deviceId, UserDao userDao, String content, String userType) { // BigInteger bigInteger = new BigInteger(card); long lon = Long.parseLong(card); String resultCard = getCard(String.format("%08x", lon)).toUpperCase(); diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java index 38df412..1ef5ecd 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java @@ -67,8 +67,8 @@ public interface SendRecordDao { @Select("select * from Face_SendSuccess where deviceID = #{deviceID} and Num = #{Num}") List getSuccessIsExitStu(@Param("deviceID") String deviceId, @Param("Num") String card); - @Update("update Face_SendSuccess set time = #{time},imgPath=#{faceUrl} where deviceID = #{deviceID} and Num =#{Num}") - void updateFaceSuccess(@Param("deviceID") String deviceId, @Param("Num") String card, @Param("time") String time,@Param("faceUrl")String faceUrl); + @Update("update Face_SendSuccess set time = #{time},imgPath= #{faceUrl},Name = #{Name},customerid = #{customerid} where deviceID = #{deviceID} and Num = #{Num}") + 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); @Update("update Face_SendFail set time = #{time},failContent = #{content} where deviceID = #{deviceID} and Num =#{Num}") void updateFaceFail(@Param("deviceID") String deviceId, @Param("Num") String card, @Param("time") String time,@Param("content")String content); diff --git a/cloud/mypulsar/src/main/java/com/example/mypulsar/MyRunnerableInt.java b/cloud/mypulsar/src/main/java/com/example/mypulsar/MyRunnerableInt.java index fae8464..9b49738 100644 --- a/cloud/mypulsar/src/main/java/com/example/mypulsar/MyRunnerableInt.java +++ b/cloud/mypulsar/src/main/java/com/example/mypulsar/MyRunnerableInt.java @@ -10,6 +10,7 @@ import com.example.mypulsar.message.MessageVO; import com.example.mypulsar.mq.AESBase64Utils; import com.example.mypulsar.mq.MessageHandlerTask; import com.example.mypulsar.mq.MqConsumer; +import com.example.mypulsar.task.SchduledTasks; import com.example.mypulsar.utils.ControlUtils; import com.example.mypulsar.utils.PulsarConsumerPoolFactory; import com.example.mypulsar.utils.ThreadPoolFactory; @@ -39,14 +40,6 @@ public class MyRunnerableInt implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { - -// DeviceBean deviceBean = new DeviceBean(); -// deviceBean.setValue("30"); -// deviceBean.setDevId("6c5c38c2e431d01eeei3to"); -// calOpenOrCloseDevWithtemper(deviceBean); - -// System.out.println("running"); -// initPool(); initMqConsumer(); } @@ -306,6 +299,7 @@ public class MyRunnerableInt implements ApplicationRunner { ControlUtils.getInstance(deviceDao).conTemper(calDevContrls, deviceBean); } + } @@ -316,9 +310,11 @@ public class MyRunnerableInt implements ApplicationRunner { */ private void calOpenOrCloseDevWithtemper(DeviceBean deviceBean) { - List calDevContrls = deviceDao.getCalDevContrlWidthDevId(deviceBean.getDevId()); - if (null != calDevContrls && calDevContrls.size() > 0) - ControlUtils.getInstance(deviceDao).conTemper(calDevContrls, deviceBean); + ControlUtils.tempDevices.put(deviceBean.getDevId(), Integer.valueOf(deviceBean.getValue())); + +// List calDevContrls = deviceDao.getCalDevContrlWidthDevId(deviceBean.getDevId()); +// if (null != calDevContrls && calDevContrls.size() > 0) +// ControlUtils.getInstance(deviceDao).conTemper(calDevContrls, deviceBean); } diff --git a/cloud/mypulsar/src/main/java/com/example/mypulsar/MypulsarApplication.java b/cloud/mypulsar/src/main/java/com/example/mypulsar/MypulsarApplication.java index e58583a..4a06fe7 100644 --- a/cloud/mypulsar/src/main/java/com/example/mypulsar/MypulsarApplication.java +++ b/cloud/mypulsar/src/main/java/com/example/mypulsar/MypulsarApplication.java @@ -9,10 +9,12 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; import org.springframework.context.annotation.Bean; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @MapperScan("com.example.mypulsar.dao") @EnableDiscoveryClient +@EnableScheduling public class MypulsarApplication extends SpringBootServletInitializer { diff --git a/cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Result.java b/cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Result.java new file mode 100644 index 0000000..0935478 --- /dev/null +++ b/cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Result.java @@ -0,0 +1,23 @@ +package com.example.mypulsar.bean; + +import java.io.Serializable; + +public class Result implements Serializable { + + private ResultData data; + + public ResultData getData() { + return data; + } + + public void setData(ResultData data) { + this.data = data; + } + + @Override + public String toString() { + return "Result{" + + "data=" + data + + '}'; + } +} diff --git a/cloud/mypulsar/src/main/java/com/example/mypulsar/bean/ResultData.java b/cloud/mypulsar/src/main/java/com/example/mypulsar/bean/ResultData.java new file mode 100644 index 0000000..5cf6e77 --- /dev/null +++ b/cloud/mypulsar/src/main/java/com/example/mypulsar/bean/ResultData.java @@ -0,0 +1,23 @@ +package com.example.mypulsar.bean; + +import java.io.Serializable; + +public class ResultData implements Serializable { + + private boolean online; + + public boolean isOnline() { + return online; + } + + public void setOnline(boolean online) { + this.online = online; + } + + @Override + public String toString() { + return "ResultData{" + + "online=" + online + + '}'; + } +} diff --git a/cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Wl_Attendace.java b/cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Wl_Attendace.java new file mode 100644 index 0000000..62e1dd1 --- /dev/null +++ b/cloud/mypulsar/src/main/java/com/example/mypulsar/bean/Wl_Attendace.java @@ -0,0 +1,34 @@ +package com.example.mypulsar.bean; + +import java.io.Serializable; + +public class Wl_Attendace implements Serializable { + + private String clint_id; + + private String name; + + public String getClint_id() { + return clint_id; + } + + public void setClint_id(String clint_id) { + this.clint_id = clint_id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "Wl_Attendace{" + + "clint_id='" + clint_id + '\'' + + ", name='" + name + '\'' + + '}'; + } +} diff --git a/cloud/mypulsar/src/main/java/com/example/mypulsar/dao/DeviceDao.java b/cloud/mypulsar/src/main/java/com/example/mypulsar/dao/DeviceDao.java index c983541..d8b8008 100644 --- a/cloud/mypulsar/src/main/java/com/example/mypulsar/dao/DeviceDao.java +++ b/cloud/mypulsar/src/main/java/com/example/mypulsar/dao/DeviceDao.java @@ -3,6 +3,7 @@ package com.example.mypulsar.dao; import com.example.mypulsar.bean.CalDevBeContrl; import com.example.mypulsar.bean.CalDevContrl; import com.example.mypulsar.bean.DeviceBean; +import com.example.mypulsar.bean.Wl_Attendace; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; @@ -45,4 +46,34 @@ public interface DeviceDao { @Select("select * from CalDevBeContrl where State = 1 and Id = #{Id}") CalDevBeContrl getCalDevBeControl(@Param("Id") String Id); + + @Select("select * from CalDevContrl where Devid = #{Devid} and Status = 1 and ModelType = 9") + List getTempCalWitdDevid(@Param("Devid") String devId); + + + @Update("update WL_LinkageMode set Field = #{Field} where id = #{id}") + void updateWL_LinkageModeWithId(@Param("id")int id,@Param("Field")String Field); + + @Select("select clint_id\n" + + "from WL_Attendance where school_id = 1085 and clint_type = 12 and state = 1") + List getHWDEvices(int i); + + @Select("select TOP(1) ConValue from CalDevBeContrl where State = 1 and ConDevId = #{ConDevId}") + String getConBeValue(@Param("ConDevId")String ConDevId); + + + @Select("select Top(1) InUserTime from CalDevContrl where Status = 1") + String getInuserTime(); + + @Select("select clint_id from WL_Attendance where State = 1 and school_id = 1085 and clint_type = 12") + List getHWIds(); + + + @Select("select * from WL_Attendance where state = 1 and school_id = 1085") + List getWL_AttendanceIds(); + + + @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") + String getWLName(@Param("clint_id")String clint_id); + } diff --git a/cloud/mypulsar/src/main/java/com/example/mypulsar/task/SchduledTasks.java b/cloud/mypulsar/src/main/java/com/example/mypulsar/task/SchduledTasks.java new file mode 100644 index 0000000..3ba2717 --- /dev/null +++ b/cloud/mypulsar/src/main/java/com/example/mypulsar/task/SchduledTasks.java @@ -0,0 +1,155 @@ +package com.example.mypulsar.task; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.example.mypulsar.bean.Wl_Attendace; +import com.example.mypulsar.dao.DeviceDao; +import com.example.mypulsar.utils.HttpUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.io.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +@Component +public class SchduledTasks { + + @Autowired + DeviceDao deviceDao; + + private Logger logger = LoggerFactory.getLogger(SchduledTasks.class); + + public static Map conDevMap = new HashMap<>();//存储被控制的设备 + + private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("HH:mm"); + SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("HH:mm"); + + private String closeModel = "{\"mode\":\"0\",\"power\":\"0\",\"remote_id\":\"%s\",\"remote_index\":\"11272\",\"temp\":\"26\",\"wind\":\"0\"}"; + + boolean isClose = false; + + @Scheduled(fixedRate = 15000) + public void closeAttend() { + + logger.error("定时任务执行中......" + conDevMap.size()); + + Iterator iterator = conDevMap.entrySet().iterator(); + + while (iterator.hasNext()) { + + + Map.Entry entry = (Map.Entry) iterator.next(); + String conBeDeviceId = (String) entry.getKey(); + + logger.error("在线设备:" + conBeDeviceId + "---在线时间:" + simpleDateFormat.format(entry.getValue())); + + Date date = (Date) entry.getValue(); + System.out.println("更新设备时间差值:" + ((new Date().getTime()) - date.getTime())); + if (((new Date().getTime()) - date.getTime()) > 10 * 60 * 1000) {//大于十分钟后关闭设备 + + String conValue = getRemoteId(deviceDao.getConBeValue(conBeDeviceId)); + String name = deviceDao.getWLName(conBeDeviceId); + HttpUtil.addAirCode(String.format(closeModel, conValue), conBeDeviceId,name); + conDevMap.remove(conBeDeviceId); + } + + } + + int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); + + + System.out.println("关闭设备:" + hour); + + String inuserTime = deviceDao.getInuserTime(); + JSONArray jsonArray = JSON.parseArray(inuserTime); + + if (null==jsonArray)return; + if (jsonArray!=null&&jsonArray.size()==0)return; + JSONObject jsonObject = jsonArray.getJSONObject(0); + + String startTime = jsonObject.getString("StartTime"); + String endTime = jsonObject.getString("EndTime"); + Date startDate = null; + try { + startDate = simpleDateFormat1.parse(startTime); + } catch (ParseException e) { + e.printStackTrace(); + } + Date endDate = null; + try { + endDate = simpleDateFormat1.parse(endTime); + } catch (ParseException e) { + e.printStackTrace(); + } + Date date = null; + try { + date = simpleDateFormat2.parse(new Date().getHours() + ":" + new Date().getMinutes()); + } catch (ParseException e) { + e.printStackTrace(); + } + + long starTime = startDate.getTime(); + long indexTime = date.getTime(); + long entTime = endDate.getTime()+ 10 * 60 * 1000;//延迟十分钟 + + if (!isClose) { + + if (indexTime < starTime || indexTime >= entTime) { + closeAllDevice(); + } + + + } + + if (indexTime < entTime && indexTime >= starTime) { + isClose = false; + } + + + } + + private void closeAllDevice() { + + isClose = true; + List deviceIds = deviceDao.getHWIds(); + System.out.println("关闭设备" + deviceIds.toString()); + for (int i = 0; i < deviceIds.size(); i++) { + String deviceId = deviceIds.get(i).getClint_id(); + String conValue = getRemoteId(deviceDao.getConBeValue(deviceId)); + String devName = deviceIds.get(i).getName(); + + HttpUtil.addAirCode(String.format(closeModel, conValue), deviceId,devName); + } + + } + + /** + * 获取遥控器索引 + * + * @param conValue + */ + private String getRemoteId(String conValue) { + + try { + System.out.println("conValue:"+conValue); + JSONObject jsonObject = JSON.parseObject(conValue); + if (null==jsonObject)return ""; + String remote_id = jsonObject.getString("remote_id"); + return remote_id; + } catch (Exception e) { + e.printStackTrace(); + } + return ""; + } + + + +} diff --git a/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/ControlUtils.java b/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/ControlUtils.java index 13ab8af..52930a3 100644 --- a/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/ControlUtils.java +++ b/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/ControlUtils.java @@ -2,10 +2,12 @@ package com.example.mypulsar.utils; import com.example.mypulsar.bean.*; import com.example.mypulsar.dao.DeviceDao; +import com.example.mypulsar.task.SchduledTasks; import org.apache.pulsar.shade.com.google.gson.Gson; import org.springframework.boot.configurationprocessor.json.JSONArray; import org.springframework.boot.configurationprocessor.json.JSONException; import org.springframework.boot.configurationprocessor.json.JSONObject; +import org.springframework.util.StringUtils; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -19,6 +21,11 @@ public class ControlUtils { private DeviceDao deviceDao; + /** + * 存储温度感应器和对应温度 + */ + public static Map tempDevices = new HashMap<>(); + public static ControlUtils getInstance(DeviceDao deviceDao) { if (null == controlUtils) { synchronized (ControlUtils.class) { @@ -42,7 +49,8 @@ public class ControlUtils { * @param deviceBean 温度传感器对象 */ public void conTemper(List calDevContrls, DeviceBean deviceBean) { - + System.out.println("传感器感应设备:deviceBean:" + deviceBean.toString()); + FileUtils.getInstance().writeLogs(deviceBean.toString()+"\r\n"+calDevContrls.toString(),FileUtils.mypulsar); for (CalDevContrl cal : calDevContrls) { @@ -52,11 +60,12 @@ public class ControlUtils { // System.out.println("inUseTime:"+inUseTime); try { JSONArray jsonArray = new JSONArray(inUseTime); - + FileUtils.getInstance().writeLogs(jsonArray.toString(),FileUtils.mypulsar); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); - int week = jsonObject.getInt("Week"); + String weekStr = jsonObject.getString("Week"); + String[] weeks = weekStr.split(","); String startTime = jsonObject.getString("StartTime"); @@ -65,33 +74,36 @@ public class ControlUtils { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("HH:mm:ss"); - int indexWeek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); - - if (week == indexWeek) { - - Date startDate = simpleDateFormat.parse(startTime); - Date endDate = simpleDateFormat.parse(endTime); - Date date = simpleDateFormat1.parse(new Date().getHours() + ":" + new Date().getMinutes() + ":" + new Date().getSeconds()); - - long starTime = startDate.getTime(); -// System.out.println("startDate:" + starTime); -// System.out.println("endDate:" + endDate.getTime()); -// System.out.println("date:" + date.getTime()); - - if (date.getTime() < endDate.getTime() && date.getTime() > starTime) { - //比较器类型 - int compreType = cal.getCompreType(); - - switch (compreType) { - case 1://固定值 - calCompre(cal,deviceBean); - break; - case 2://当天日期 - - break; + int indexWeek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)-1; + FileUtils.getInstance().writeLogs(weekStr.toString()+"当前周:"+indexWeek,FileUtils.mypulsar); + for (int j = 0; j < weeks.length; j++) { + int week = Integer.parseInt(weeks[j]); + if (week == indexWeek) { + + Date startDate = simpleDateFormat.parse(startTime); + Date endDate = simpleDateFormat.parse(endTime); + Date date = simpleDateFormat1.parse(new Date().getHours() + ":" + new Date().getMinutes() + ":" + new Date().getSeconds()); + + long starTime = startDate.getTime(); + long indexTime = date.getTime(); + long entTime = endDate.getTime(); + System.out.println("时间比对:starTime:" + starTime + "-----indexTime:" + indexTime + "----entTime:" + entTime); + FileUtils.getInstance().writeLogs("开始时间:"+(indexTime < entTime)+"结束时间:"+(indexTime > starTime),FileUtils.mypulsar); + if (indexTime < entTime && indexTime > starTime) { + //比较器类型 + int compreType = cal.getCompreType(); + + switch (compreType) { + case 1://固定值 + calCompre(cal, deviceBean); + break; + case 2://当天日期 + + break; + } } - } + } } // System.out.println("jsonObject:" + jsonObject.toString()); @@ -108,19 +120,26 @@ public class ControlUtils { } /** - * @param cal 联动模板 + * @param cal 人体感应器 * @param deviceBean 控制设备 */ private void calCompre(CalDevContrl cal, DeviceBean deviceBean) { - int thrsoldValue = 0; + FileUtils.getInstance().writeLogs(cal.toString(),"caldevCntrol.txt"); + if (cal.getModelType() == 10) {//人体感应 if (cal.getThreValue().equals("有人")) thrsoldValue = 1; - else thrsoldValue = 0; + else { + thrsoldValue = 0; + if (cal.getThreValue().equals("无人")) return; + //无人的时候不做处理 , 在定时服务中处理 +// return; + } } else { - thrsoldValue = Integer.parseInt(cal.getThreValue());//设定的阈值 + //温度传感器 不直接计算 +// thrsoldValue = Integer.parseInt(cal.getThreValue());//设定的阈值 } int value = Integer.parseInt(deviceBean.getValue());//实际的值 @@ -132,8 +151,13 @@ public class ControlUtils { break; case 2://等于 - if (value == thrsoldValue) - startDevice(cal);//开启联动的设备 + if (value == thrsoldValue)//有人的时候会执行 + { + boolean temp = calTemp(cal.getAssDevice()); + System.out.println("--------------------温度是否达标:" + temp + "-------------"); + if (temp)//温度符合要求 + startDevice(cal);//开启联动的设备 + } break; case 3://小于 @@ -152,6 +176,75 @@ public class ControlUtils { } /** + * 计算温度是否达标 + * + * @param assDevice + */ + private synchronized boolean calTemp(String assDevice) { + if (!StringUtils.isEmpty(assDevice)) { + String[] devices = assDevice.split(","); + FileUtils.getInstance().writeLogs(assDevice+"设备数量:"+devices.length,"tempisOk.txt"); + for (int i = 0; i < devices.length; i++) { + + String device = devices[i]; + FileUtils.getInstance().writeLogs(device,"tempisOk.txt"); + + List calDevContrls = deviceDao.getTempCalWitdDevid(device); + + for (int j = 0; j < calDevContrls.size(); j++) { + String tempDevId = calDevContrls.get(j).getDevid(); + if (tempDevices.containsKey(tempDevId)) {//温度记录了 + + int tempear = tempDevices.get(tempDevId); + + boolean temp = tempIsOk(tempear, calDevContrls.get(j)); + if (temp)return true; + + } else {//沒有記錄溫度按照20度 + boolean temp = tempIsOk(20, calDevContrls.get(j)); + if (temp)return true; + } + + } + + + } + + } + + return false; + } + + private boolean tempIsOk(int tempear, CalDevContrl calDevContrl) { + + FileUtils.getInstance().writeLogs(calDevContrl.toString(),"tempisOk.txt"); + if (calDevContrl.getComPre() != 2) { + System.out.println("溫度比較:" + tempear + " 比較的值:" + calDevContrl.getThreValue() + " 比较方式:" + calDevContrl.getComPre()); + + switch (calDevContrl.getComPre()) { + case 1://小于 + + if (tempear <= Integer.parseInt(calDevContrl.getThreValue())) { + return true; + } + + break; + case 3://大于 + + if (tempear >= Integer.parseInt(calDevContrl.getThreValue())) { + return true; + } + + break; + + } + + } + + return false; + } + + /** * 移除设备 * * @param calDevContrl @@ -194,7 +287,7 @@ public class ControlUtils { for (int i = 0; i < calDevBeContrlList.size(); i++) { CalDevBeContrl calDevBeContrl = calDevBeContrlList.get(i); - System.out.println("控制对象:" + calDevBeContrl.toString()); +// System.out.println("控制对象:" + calDevBeContrl.toString()); String conDevId = calDevBeContrl.getConDevId();//被控制的设备id String conValue = calDevBeContrl.getConValue(); String conCodes = calDevBeContrl.getConCode(); @@ -213,15 +306,19 @@ public class ControlUtils { case 3://排插 HttpUtil.controlDev(conDevId, conCode, conValue); break; - case 7://空调伴侣 - HttpUtil.addAirCode(conValue, conDevId); - break; - case 10://开关 -// HttpUtil.controlDev(conDevId, conCode, conValue); - HttpUtil.addAirCode(conValue, conDevId); + case 9://温度传感器 break; + case 10://人体感应触发空调开关 case 12://万能遥控器 - HttpUtil.addAirCode(conValue, conDevId); + if (SchduledTasks.conDevMap.containsKey(conDevId)) {//设备已开,更新时间 + SchduledTasks.conDevMap.put(conDevId, new Date()); + System.out.println("更新设备时间"); + } else {//开启设备 + SchduledTasks.conDevMap.put(conDevId, new Date()); + System.out.println("开启设备"); + String name = deviceDao.getWLName(conDevId); + HttpUtil.addAirCode(conValue, conDevId,name); + } break; } } diff --git a/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/FileUtils.java b/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/FileUtils.java new file mode 100644 index 0000000..c4e065d --- /dev/null +++ b/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/FileUtils.java @@ -0,0 +1,155 @@ +package com.example.mypulsar.utils; + +import org.springframework.web.multipart.MultipartFile; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * 日志记录、文件操作工具类 + */ +public class FileUtils { + + + public static String studentcode="studentcode.txt"; + public static String addAirCode = "addAirCode.txt"; + private static FileUtils fileUtils; + + private String filePath = "./log/";//日志记录目录 + + public static String picPath = "./picPath/"; + public static String picPathComp = "./picPath/comp/"; + + public static String mypulsar = "mypulsar.txt"; + + public static String devices = "devices.txt";//设备记录 + + public static String sendUserErrTxt = "senduserErr.txt";//用户下发失败记录 + + public static String faceSuccess = "facesuccess.txt";//用户人脸认证成功 + + public static String faceFail = "facefail.txt";//用户人脸认证成功 + + public static String facerecoder = "人脸识别成功记录.txt";//用户人脸认证成功 + + public static String fileName = "文件保存回调.txt";//用户下发失败记录 + + public static String sendUserSucTxt = "senduserSuc.txt";//用户下发成功记录 + + public static String qiandaoSuccess = "qiandaoSuccess.txt";//用户签到成功记录 + public static String sms = "短信账号密码.txt";//用户签到成功记录 + + public static String qiandaoErr = "qiandaoErr.txt";//用户签到失败记录 + + public static String sendNodevice = "没有设备.txt";//设备没有 + + public static String schoolId = "学校id记录.txt";//学校id记录表 + + public static FileUtils getInstance() { + if (null == fileUtils) { + synchronized (FileUtils.class) { + fileUtils = new FileUtils(); + } + } + return fileUtils; + } + + + public FileUtils() { + + File filePa = new File(filePath); + if (!filePa.exists()) filePa.mkdirs(); + + File picPath = new File(this.picPath); + if (!picPath.exists())picPath.mkdirs(); + + File picPathComp = new File(this.picPathComp); + if (!picPathComp.exists())picPathComp.mkdirs(); + + } + + + /** + * @param content 日志内容 + * @param fileName 文件名字 + */ + public void writeLogs(String content, String fileName) { + + String datePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + + File path = new File(filePath+datePath+"/"); + if (!path.exists())path.mkdirs(); + + String time = new SimpleDateFormat("HH").format(new Date()); + File logPath = new File(path, time+"_"+fileName); + + try { +// System.out.println("logPath:" + logPath.getAbsolutePath()); + if (!logPath.exists()) logPath.createNewFile(); + + FileOutputStream fileOutputStream = new FileOutputStream(logPath, true);//true表示文件后面续写 + + String writeContent = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + + " " + content + "\r\n"; + + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8"); + + outputStreamWriter.write(writeContent); + + outputStreamWriter.write("\r\n"); + + outputStreamWriter.close(); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + + } + + + /** + * + * @param file 文件 + * @param path 文件存放路径 + * @param fileName 源文件名 + * @return + */ + public static String upload(MultipartFile file, String path, String fileName){ + + // 生成新的文件名 + //String realPath = path + "/" + FileNameUtils.getFileName(fileName); + + //使用原文件名 + String realPath = path + "/" + fileName; + + File dest = new File(realPath); + + //判断文件父目录是否存在 + if(!dest.getParentFile().exists()){ + dest.getParentFile().mkdir(); + } + + try { + //保存文件 + file.transferTo(dest); + return realPath; + } catch (IllegalStateException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return ""; + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return ""; + } + + } + + +} diff --git a/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/HttpUtil.java b/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/HttpUtil.java index 623799b..43ae238 100644 --- a/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/HttpUtil.java +++ b/cloud/mypulsar/src/main/java/com/example/mypulsar/utils/HttpUtil.java @@ -112,7 +112,7 @@ public class HttpUtil { String responseEntity = restTemplate.postForObject(url, tuYaCommand, String.class); - System.out.println("tuYaCommand:" + tuYaCommand.toString()+"----deviceId:"+deviceId); + System.out.println("tuYaCommand:" + tuYaCommand.toString() + "----deviceId:" + deviceId); System.out.println("responseEntity:" + responseEntity); return responseEntity.equals("1"); } @@ -133,17 +133,27 @@ public class HttpUtil { } - public static String addAirCode(String conValue, String conDevId) { + /** + * 控制设备 + * + * @param conValue 控制指令 + * @param conDevId 被控制设备id + * @param conDevName 设备名称 + * @return + */ + public static String addAirCode(String conValue, String conDevId, String conDevName) { String url = String.format("http://120.26.116.253:5555/TuYa/%s/addAirCode", conDevId); RestTemplate restTemplate = new RestTemplate(); TuYaAirCondition tuYaAirCondition = new TuYaAirCondition(); + String power = ""; try { JSONObject jsonObject = new JSONObject(conValue); + power = jsonObject.getString("power"); tuYaAirCondition.setMode(jsonObject.getString("mode")); - tuYaAirCondition.setPower(jsonObject.getString("power")); + tuYaAirCondition.setPower(power); tuYaAirCondition.setRemote_id(jsonObject.getString("remote_id")); tuYaAirCondition.setWind(jsonObject.getString("wind")); tuYaAirCondition.setTemp(jsonObject.getString("temp")); @@ -154,8 +164,10 @@ public class HttpUtil { e.printStackTrace(); } - System.out.println("url-------------------------------:" + url+" conValue:"+tuYaAirCondition.toString()); + + System.out.println("url-------------------------------:" + url + " conValue:" + tuYaAirCondition.toString()); String response = restTemplate.postForObject(url, tuYaAirCondition, String.class); + FileUtils.getInstance().writeLogs(String.format("%s设备%s--控制%s",power.equals("1")?"成功":"失败",conDevName+"-"+conDevId,response),FileUtils.addAirCode); System.out.println("response----------------------------------:" + response); return response; -- libgit2 0.21.0