Commit 60fd0445b2bc67a76d65ce9bc4d2a0a6ada43791
1 parent
89a4775c
Exists in
master
智能校卫:海康、大华人脸机代码提交
Showing
6 changed files
with
113 additions
and
20 deletions
Show diff stats
cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java
... | ... | @@ -110,16 +110,6 @@ public class UserOperateServiceImpl implements UserOperateService { |
110 | 110 | } |
111 | 111 | } |
112 | 112 | |
113 | - public static void main(String[] args) { | |
114 | - String photo = "http://campus.myjxt.com//f0i5l7e5/0/alluser/20210114/430f64e104ea4a7bb7f78f0e42b3fad8.jpg"; | |
115 | - System.out.println(photo.indexOf("f0i5l7e5")!=-1); | |
116 | - String path = photo.split("f0i5l7e5/")[1]; | |
117 | - path= path.replace("/","\\"); | |
118 | - System.out.println("E:\\wwwhtdocs\\SmartCampus\\f0i5l7e5\\"+path); | |
119 | -// System.out.println(photo.split("f0i5l7e5/")[1]); | |
120 | -// System.out.println(photo.split("f0i5l7e5/")[0]); | |
121 | - } | |
122 | - | |
123 | 113 | @Override |
124 | 114 | public void test6(Integer schoolId, Integer roomId, Integer type, Integer outof, String intime, String clintId, String startTime, String endTime) { |
125 | 115 | List<String> studentIds = userDao.queryStudentIdList(schoolId,roomId); | ... | ... |
cloud/fIle-center/pom.xml
... | ... | @@ -42,6 +42,12 @@ |
42 | 42 | <artifactId>aliyun-sdk-oss</artifactId> |
43 | 43 | <version>2.8.3</version> |
44 | 44 | </dependency> |
45 | + <!-- 常用依赖库--> | |
46 | + <dependency> | |
47 | + <groupId>com.google.code.gson</groupId> | |
48 | + <artifactId>gson</artifactId> | |
49 | + <version>2.8.6</version> | |
50 | + </dependency> | |
45 | 51 | |
46 | 52 | <dependency> |
47 | 53 | <groupId>org.apache.poi</groupId> | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java
... | ... | @@ -26,6 +26,7 @@ import com.sun.jna.Pointer; |
26 | 26 | import lombok.extern.slf4j.Slf4j; |
27 | 27 | import org.apache.http.util.TextUtils; |
28 | 28 | import org.springframework.beans.factory.annotation.Autowired; |
29 | +import org.springframework.beans.factory.annotation.Value; | |
29 | 30 | import org.springframework.boot.ApplicationArguments; |
30 | 31 | import org.springframework.boot.ApplicationRunner; |
31 | 32 | import org.springframework.stereotype.Component; |
... | ... | @@ -67,7 +68,7 @@ public class CMSServer implements ApplicationRunner { |
67 | 68 | //114.55.30.100 |
68 | 69 | //120.26.116.253 |
69 | 70 | // private String ip_cloud = "114.55.30.100"; |
70 | - private String ip_cloud = "120.26.116.253"; | |
71 | + private String ip_cloud = "114.55.30.100"; | |
71 | 72 | |
72 | 73 | private String ip; |
73 | 74 | { | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java
... | ... | @@ -114,4 +114,13 @@ public class UserOperateController { |
114 | 114 | return userOperateService.insertUpdateCard(cardNums); |
115 | 115 | } |
116 | 116 | |
117 | + | |
118 | + @ApiOperation(value = "压缩包上传下发") | |
119 | + @RequestMapping(value = "exportFace", method = RequestMethod.POST) | |
120 | + public Result exportFace(@RequestParam("schoolId") Integer schoolId, | |
121 | + @RequestParam("userType") Integer userType, | |
122 | + @RequestParam("deviceIds") String deviceIds, | |
123 | + @RequestParam("faceSrcPath") String faceSrcPath){ | |
124 | + return userOperateService.exportFace(schoolId,userType,deviceIds,faceSrcPath); | |
125 | + } | |
117 | 126 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java
cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java
... | ... | @@ -21,8 +21,10 @@ import org.springframework.stereotype.Service; |
21 | 21 | import org.springframework.web.multipart.MultipartFile; |
22 | 22 | |
23 | 23 | import java.io.File; |
24 | +import java.io.FileInputStream; | |
24 | 25 | import java.io.FileOutputStream; |
25 | 26 | import java.io.IOException; |
27 | +import java.nio.file.Files; | |
26 | 28 | import java.util.*; |
27 | 29 | |
28 | 30 | /** |
... | ... | @@ -626,15 +628,6 @@ public class UserOperateServiceImpl implements UserOperateService { |
626 | 628 | } |
627 | 629 | } |
628 | 630 | |
629 | - public static void main(String[] args) { | |
630 | - String s = "E:\\wwwhtdocs\\SmartCampus\\face17e5\\School386\\Student\\sxzx2020467.png?v=1601037209723"; | |
631 | - if(s.indexOf("?v=")!=-1){ | |
632 | - System.out.println(1); | |
633 | - String fileName = s.split("\\?")[0]; | |
634 | - System.out.println(fileName); | |
635 | - } | |
636 | - } | |
637 | - | |
638 | 631 | @Override |
639 | 632 | public Result againNoSendOneFace(MultipartFile file, Integer schoolId, String cardNum, Integer userType, String deviceIds) { |
640 | 633 | if(StringUtils.isBlank(cardNum)){ |
... | ... | @@ -740,4 +733,97 @@ public class UserOperateServiceImpl implements UserOperateService { |
740 | 733 | } |
741 | 734 | return new Result(); |
742 | 735 | } |
736 | + | |
737 | + @Override | |
738 | + public Result exportFace(Integer schoolId,Integer userType,String deviceIds,String faceSrcPath) { | |
739 | + File imgPathFile = new File(faceSrcPath);//目录 | |
740 | + File[] imgfiles = imgPathFile.listFiles(); | |
741 | + if(imgfiles.length==0){ | |
742 | + return ResultGenerator.genFailResult("未获取要下发的人脸照片。"); | |
743 | + } | |
744 | + List<StudentBean> sendFaces = new ArrayList<>(); | |
745 | + for (int i = 0; i < imgfiles.length; i++) { | |
746 | + //人脸照片 | |
747 | + File file = imgfiles[i]; | |
748 | + if(!file.isFile()){ | |
749 | + continue; | |
750 | + } | |
751 | + if (file.exists()){ | |
752 | + //原始文件路径 | |
753 | + String srcPath = file.getAbsolutePath(); | |
754 | + //原始文件名 | |
755 | + String fileName = file.getName(); | |
756 | + StudentBean studentBean = new StudentBean(); | |
757 | + if (userType.intValue()==1) { | |
758 | + studentBean = userDao.getTeacherWithstudentcode(fileName.split("\\.")[0],String.valueOf(schoolId)); | |
759 | + }else { | |
760 | + studentBean = userDao.getStudentWithstudentcode(fileName.split("\\.")[0],String.valueOf(schoolId)); | |
761 | + } | |
762 | + String typeName = userType.intValue() ==1 ? "Teacher" : "Student"; | |
763 | + String targetPath = "E:\\wwwhtdocs\\SmartCampus\\face17e50\\School" + schoolId + "\\" + typeName; | |
764 | +// //目标路径 | |
765 | + targetPath = targetPath + "\\" + fileName; | |
766 | + //复制文件 | |
767 | + copy(srcPath,targetPath); | |
768 | + String savePath = "http://campus.myjxt.com//face17e50/School"+ schoolId + "/" + typeName + "/" + fileName; | |
769 | + if(userType.intValue() ==1){ | |
770 | + studentBean.setFace(savePath); | |
771 | + }else { | |
772 | + studentBean.setPhoto(savePath); | |
773 | + } | |
774 | + //savePath | |
775 | + userDao.updateUser(studentBean.getUser_id(),savePath); | |
776 | + sendFaces.add(studentBean); | |
777 | + } | |
778 | + file.delete(); | |
779 | + } | |
780 | + if(StringUtils.isBlank(deviceIds)){ | |
781 | + return ResultGenerator.genFailResult("未选择下发设备"); | |
782 | + } | |
783 | + String[] deviceArr = deviceIds.split(","); | |
784 | + List<String> deviceList = new ArrayList<>(Arrays.asList(deviceArr)); | |
785 | + //异步执行下发 | |
786 | + asyncSendFace(sendFaces,deviceList,schoolId,userType); | |
787 | + int fileSize = sendFaces.size(); | |
788 | + int clintNum = deviceList.size(); | |
789 | + //下发所用时长 | |
790 | + int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); | |
791 | + //下发截止时间 | |
792 | + String dateStr = baseService.getTime(fileSize,clintNum,timeLength); | |
793 | + Map map = new HashMap(); | |
794 | + map.put("timeLength",timeLength); | |
795 | + map.put("afterDate",dateStr); | |
796 | + map.put("fileSize",fileSize); | |
797 | + return ResultGenerator.genSuccessResult(objectMapper.toJson(map)); | |
798 | + } | |
799 | + | |
800 | + public void asyncSendFace(List<StudentBean> sendFaces,List<String> deviceList,Integer schoolId,Integer userType){ | |
801 | + log.info("总共检测到:{},张人脸照片。",sendFaces.size()); | |
802 | + //设备类型 | |
803 | + Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); | |
804 | + if(clintType.intValue()== 18 || clintType.intValue()== 28){ | |
805 | + //发送海康设备:异步执行 | |
806 | + baseService.sendUserFaceByAsyncThread(schoolId,userType,sendFaces,deviceList); | |
807 | + } | |
808 | + } | |
809 | + | |
810 | + private static void copy(String srcPathStr, String desPathStr) { | |
811 | + //获取源文件的名称 | |
812 | + try { | |
813 | + FileInputStream fis = new FileInputStream(srcPathStr);//创建输入流对象 | |
814 | + FileOutputStream fos = new FileOutputStream(desPathStr); //创建输出流对象 | |
815 | + byte datas[] = new byte[1024*8];//创建搬运工具 | |
816 | + int len = 0;//创建长度 | |
817 | + while((len = fis.read(datas))!=-1)//循环读取数据 | |
818 | + { | |
819 | + fos.write(datas,0,len); | |
820 | + } | |
821 | + fis.close();//释放资源 | |
822 | + fis.close();//释放资源 | |
823 | + } | |
824 | + catch (Exception e) | |
825 | + { | |
826 | + e.printStackTrace(); | |
827 | + } | |
828 | + } | |
743 | 829 | } | ... | ... |