Commit 8b94a56aa6a35d3010f5502262068ae94975c3a8

Authored by 徐泉
1 parent 09102d07
Exists in master

修改提交

Showing 34 changed files with 405 additions and 195 deletions   Show diff stats
cloud/dahua/pom.xml
@@ -156,35 +156,37 @@ @@ -156,35 +156,37 @@
156 <plugin> 156 <plugin>
157 <groupId>org.springframework.boot</groupId> 157 <groupId>org.springframework.boot</groupId>
158 <artifactId>spring-boot-maven-plugin</artifactId> 158 <artifactId>spring-boot-maven-plugin</artifactId>
  159 + <executions>
  160 + <execution>
  161 + <goals>
  162 + <goal>repackage</goal>
  163 + </goals>
  164 + </execution>
  165 + </executions>
159 <configuration> 166 <configuration>
160 <includeSystemScope>true</includeSystemScope> 167 <includeSystemScope>true</includeSystemScope>
161 <layout>ZIP</layout> 168 <layout>ZIP</layout>
162 -<!-- <includes>-->  
163 -<!-- <include>-->  
164 -<!-- &lt;!&ndash; 排除所有Jar &ndash;&gt;-->  
165 -<!-- <groupId>nothing</groupId>-->  
166 -<!-- <artifactId>nothing</artifactId>-->  
167 -<!-- </include>-->  
168 -<!-- </includes>--> 169 + <includes>
  170 + <include>
  171 + <!-- 排除所有Jar -->
  172 + <groupId>nothing</groupId>
  173 + <artifactId>nothing</artifactId>
  174 + </include>
  175 + </includes>
169 </configuration> 176 </configuration>
170 </plugin> 177 </plugin>
171 -  
172 <plugin> 178 <plugin>
173 <groupId>org.apache.maven.plugins</groupId> 179 <groupId>org.apache.maven.plugins</groupId>
174 <artifactId>maven-dependency-plugin</artifactId> 180 <artifactId>maven-dependency-plugin</artifactId>
175 - <!-- <version>2.2</version>&lt;!&ndash;$NO-MVN-MAN-VER$ &ndash;&gt;-->  
176 <executions> 181 <executions>
177 <execution> 182 <execution>
178 - <id>copy-dependencies</id> 183 + <id>copy</id>
179 <phase>package</phase> 184 <phase>package</phase>
180 <goals> 185 <goals>
181 <goal>copy-dependencies</goal> 186 <goal>copy-dependencies</goal>
182 </goals> 187 </goals>
183 <configuration> 188 <configuration>
184 - <outputDirectory>${project.build.directory}/libs</outputDirectory>  
185 - <overWriteReleases>true</overWriteReleases>  
186 - <overWriteSnapshots>true</overWriteSnapshots>  
187 - <overWriteIfNewer>true</overWriteIfNewer> 189 + <outputDirectory>${project.build.directory}/lib</outputDirectory>
188 </configuration> 190 </configuration>
189 </execution> 191 </execution>
190 </executions> 192 </executions>
cloud/dahua/src/main/java/com/example/dahua/DahuaApplication.java
@@ -37,7 +37,7 @@ import java.util.concurrent.TimeUnit; @@ -37,7 +37,7 @@ import java.util.concurrent.TimeUnit;
37 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class}) 37 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class})
38 @SpringBootApplication 38 @SpringBootApplication
39 @MapperScan("com.example.dahua.dao") 39 @MapperScan("com.example.dahua.dao")
40 -@EnableDiscoveryClient 40 +//@EnableDiscoveryClient
41 @EnableScheduling 41 @EnableScheduling
42 public class DahuaApplication { 42 public class DahuaApplication {
43 43
cloud/dahua/src/main/java/com/example/dahua/MyTask.java
@@ -420,18 +420,19 @@ public class MyTask implements ApplicationRunner { @@ -420,18 +420,19 @@ public class MyTask implements ApplicationRunner {
420 String userId = new String(msg.szUserID).trim(); 420 String userId = new String(msg.szUserID).trim();
421 //开门错误码 421 //开门错误码
422 int messageCode = msg.nErrorCode; 422 int messageCode = msg.nErrorCode;
423 - log.info("设备ID: {}, 开门用户ID: {}, 开门卡号: {}",szSn,userId,card);  
424 //处理心跳 423 //处理心跳
425 saveAttendanceService(szSn,"",0,1); 424 saveAttendanceService(szSn,"",0,1);
  425 + String newCard = "";
426 try { 426 try {
427 if (!StringUtils.isEmpty(card)) { 427 if (!StringUtils.isEmpty(card)) {
428 //根据卡号获取卡身份信息 428 //根据卡号获取卡身份信息
429 CardBean cardBean = myTaskUtil.userDao.getCards(card); 429 CardBean cardBean = myTaskUtil.userDao.getCards(card);
430 if(cardBean ==null){ 430 if(cardBean ==null){
431 - card = cardNo(card);  
432 - cardBean = myTaskUtil.userDao.getCards(card); 431 + newCard = cardNo(card);
  432 + cardBean = myTaskUtil.userDao.getCards(newCard);
433 } 433 }
434 if(cardBean ==null){ 434 if(cardBean ==null){
  435 + log.info("卡号有误!!设备ID: 【{}】,上报卡号: 【{}】",szSn,card);
435 return -1; 436 return -1;
436 } 437 }
437 // 缓存抓拍人脸 438 // 缓存抓拍人脸
@@ -450,6 +451,7 @@ public class MyTask implements ApplicationRunner { @@ -450,6 +451,7 @@ public class MyTask implements ApplicationRunner {
450 if(attendanceBean !=null){ 451 if(attendanceBean !=null){
451 if(!StringUtils.isEmpty(attendanceBean.getSchool_id())){ 452 if(!StringUtils.isEmpty(attendanceBean.getSchool_id())){
452 int schoolId = Integer.parseInt(attendanceBean.getSchool_id()); 453 int schoolId = Integer.parseInt(attendanceBean.getSchool_id());
  454 + String clintName = attendanceBean.getName();
453 //门禁进出类型:1进0出 455 //门禁进出类型:1进0出
454 int eventType = 0; 456 int eventType = 0;
455 if(StringUtils.isEmpty(attendanceBean.getOutOrIn())){ 457 if(StringUtils.isEmpty(attendanceBean.getOutOrIn())){
@@ -460,30 +462,42 @@ public class MyTask implements ApplicationRunner { @@ -460,30 +462,42 @@ public class MyTask implements ApplicationRunner {
460 //刷卡时间 462 //刷卡时间
461 String eventTime = DateUtils.date2String(new Date(), DateUtils.format2); 463 String eventTime = DateUtils.date2String(new Date(), DateUtils.format2);
462 //老师 464 //老师
  465 + TeacherBean teacherBean = null;
463 if (cardBean.getType() == 0) { 466 if (cardBean.getType() == 0) {
464 //老师人脸信息,保存人脸记录表 467 //老师人脸信息,保存人脸记录表
465 - TeacherBean teacherBean = myTaskUtil.userDao.getTeacherWithId(cardBean.getUser_id()); 468 + teacherBean = myTaskUtil.userDao.getTeacherWithId(cardBean.getUser_id());
  469 +// log.info("设备信息【{}】,学生卡信息【{}】",new Gson().toJson(attendanceBean),new Gson().toJson(teacherBean));
466 myTaskUtil.sendRecordDao.addFaceRecoder(szSn, teacherBean.getUser_id(), teacherBean.getName(), snapPicPath,eventType, 470 myTaskUtil.sendRecordDao.addFaceRecoder(szSn, teacherBean.getUser_id(), teacherBean.getName(), snapPicPath,eventType,
467 - eventTime, card,messageCode ==20?EnumSendFaceType.TIME_INTERVAL_ERROR.message:""); 471 + eventTime, card,messageCode ==20?EnumSendFaceType.TIME_INTERVAL_ERROR.message:"",schoolId);
468 } 472 }
469 UserInfoBean userInfoBean = null; 473 UserInfoBean userInfoBean = null;
470 if (cardBean.getType() == 2) { 474 if (cardBean.getType() == 2) {
471 //学生人脸信息,保存人脸记录表 475 //学生人脸信息,保存人脸记录表
472 userInfoBean = myTaskUtil.userDao.getStudentWithid(cardBean.getUser_id()); 476 userInfoBean = myTaskUtil.userDao.getStudentWithid(cardBean.getUser_id());
473 myTaskUtil.sendRecordDao.addFaceRecoder(szSn, userInfoBean.getUser_id(), userInfoBean.getName(), snapPicPath,eventType, 477 myTaskUtil.sendRecordDao.addFaceRecoder(szSn, userInfoBean.getUser_id(), userInfoBean.getName(), snapPicPath,eventType,
474 - eventTime, card,messageCode ==20?EnumSendFaceType.TIME_INTERVAL_ERROR.message:""); 478 + eventTime, card,messageCode ==20?EnumSendFaceType.TIME_INTERVAL_ERROR.message:"",schoolId);
475 } 479 }
476 -  
477 - // TODO 考勤记录  
478 //刷卡结果,1表示成功, 0表示失败 480 //刷卡结果,1表示成功, 0表示失败
479 int status = msg.bStatus; 481 int status = msg.bStatus;
480 - 482 + String result = status == 1 ? "开门成功" : "开门失败";
  483 + String openMsg = eventType ==1 ? "进" : "出" ;
481 if(szSn.startsWith("ytj")) { 484 if(szSn.startsWith("ytj")) {
  485 + log.info("出入信息:学校【{}】,开门方向:【{}】",schoolId,status);
482 // 艺校考勤OA 486 // 艺校考勤OA
483 if(schoolId == 12 && status ==1){ 487 if(schoolId == 12 && status ==1){
484 - int intOrOut = eventType ==1? 1 : 2;  
485 - sendRecordToSXYX(userInfoBean.getName(),userInfoBean.getUser_id(),intOrOut,eventTime); 488 + int intOrOut = eventType ==1 ? 1 : 2;
  489 + if(userInfoBean !=null){
  490 + log.info("【{}】出入信息:方向【{}】,开门结果【{}】",userInfoBean.getName(),openMsg,result);
  491 + sendRecordToSXYX(userInfoBean.getName(),userInfoBean.getUser_id(),intOrOut,eventTime,"");
  492 + }
  493 + if(teacherBean != null){
  494 + sendRecordToSXYX(teacherBean.getName(),teacherBean.getUser_id(),intOrOut,eventTime,getScene(clintName));
  495 + }
486 }else{ 496 }else{
  497 +// if(schoolId == 489){
  498 +// eventTime = DateUtils.date2String(DateUtils.getDateByTime(-5,new Date()), DateUtils.format2);
  499 +//// log.info("设备ID: {},刷卡结果:{},开门方向: {}, 开门用户: {}, 开门卡号: {}",szSn,result,openMsg,userInfoBean.getName(),userInfoBean.getStudent_num());
  500 +// }
487 //保存考勤记录 501 //保存考勤记录
488 kaoQinRecord(status, eventType, card, szSn, eventTime,lAnalyzerHandle); 502 kaoQinRecord(status, eventType, card, szSn, eventTime,lAnalyzerHandle);
489 } 503 }
@@ -499,6 +513,19 @@ public class MyTask implements ApplicationRunner { @@ -499,6 +513,19 @@ public class MyTask implements ApplicationRunner {
499 } 513 }
500 } 514 }
501 515
  516 + private static String getScene(String sceneName){
  517 + if(sceneName.contains("B")){
  518 + return "B";
  519 + }
  520 + if(sceneName.contains("C")){
  521 + return "C";
  522 + }
  523 + if(sceneName.contains("D")){
  524 + return "D";
  525 + }
  526 + return "";
  527 + }
  528 +
502 /** 529 /**
503 * 根据ip和port获取设备id 530 * 根据ip和port获取设备id
504 * 531 *
@@ -771,7 +798,7 @@ public class MyTask implements ApplicationRunner { @@ -771,7 +798,7 @@ public class MyTask implements ApplicationRunner {
771 return true; 798 return true;
772 } 799 }
773 800
774 - public static void sendRecordToSXYX(String name,String userId,int intOrOut,String eventTime) { 801 + public static void sendRecordToSXYX(String name,String userId,int intOrOut,String eventTime,String scene) {
775 try { 802 try {
776 String api = "http://yixiao.198.hmkj.com.cn/index.php/Attend/send"; 803 String api = "http://yixiao.198.hmkj.com.cn/index.php/Attend/send";
777 RestTemplate restTemplate = new RestTemplate(); 804 RestTemplate restTemplate = new RestTemplate();
@@ -780,14 +807,15 @@ public class MyTask implements ApplicationRunner { @@ -780,14 +807,15 @@ public class MyTask implements ApplicationRunner {
780 map.add("xuehao", userId); 807 map.add("xuehao", userId);
781 map.add("time", eventTime); 808 map.add("time", eventTime);
782 map.add("state", intOrOut); 809 map.add("state", intOrOut);
  810 + map.add("loudong", scene);
783 HttpHeaders headers = new HttpHeaders(); 811 HttpHeaders headers = new HttpHeaders();
784 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); 812 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
785 HttpEntity<MultiValueMap<String, Object>> param = new HttpEntity<>(map, headers); 813 HttpEntity<MultiValueMap<String, Object>> param = new HttpEntity<>(map, headers);
786 ResponseEntity<String> response = restTemplate.postForEntity(api, param, String.class); 814 ResponseEntity<String> response = restTemplate.postForEntity(api, param, String.class);
787 String body = response.getBody(); 815 String body = response.getBody();
788 - log.info("请求艺校OA,返回信息: " + body); 816 + log.info("请求艺校OA,用户名称【{}】,返回信息【{}】 ",name,body);
789 } catch (Exception e) { 817 } catch (Exception e) {
790 - sendRecordToSXYX(name,userId,intOrOut,eventTime); 818 + sendRecordToSXYX(name,userId,intOrOut,eventTime,scene);
791 } 819 }
792 } 820 }
793 } 821 }
cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask2.java
@@ -217,7 +217,7 @@ public class SendUserInfoTask2 { @@ -217,7 +217,7 @@ public class SendUserInfoTask2 {
217 log.error("学生类型【{}】无对应权限通道。",studentType); 217 log.error("学生类型【{}】无对应权限通道。",studentType);
218 channel = getAuthChannelByClassId(Integer.parseInt(schoolId),Integer.parseInt(classId),deviceId); 218 channel = getAuthChannelByClassId(Integer.parseInt(schoolId),Integer.parseInt(classId),deviceId);
219 } 219 }
220 - if(StringUtils.isEmpty(channel)){ 220 + if(StringUtils.isEmpty(channel) && !schoolId.equals("1485")){
221 //设备不在线 221 //设备不在线
222 sendRecordBean.setFailType(EnumSendFaceType.AUTH_NOT_SET.code); 222 sendRecordBean.setFailType(EnumSendFaceType.AUTH_NOT_SET.code);
223 sendRecordBean.setFailContent(EnumSendFaceType.AUTH_NOT_SET.message); 223 sendRecordBean.setFailContent(EnumSendFaceType.AUTH_NOT_SET.message);
cloud/dahua/src/main/java/com/example/dahua/control/UserOperateController.java
@@ -124,4 +124,20 @@ public class UserOperateController { @@ -124,4 +124,20 @@ public class UserOperateController {
124 public Result sendFaceByThread(@RequestBody YxSendFaceDto sendFaceDto) { 124 public Result sendFaceByThread(@RequestBody YxSendFaceDto sendFaceDto) {
125 return userOperateService.sendYxUserFace(sendFaceDto); 125 return userOperateService.sendYxUserFace(sendFaceDto);
126 } 126 }
  127 +
  128 + @ApiOperation(value = "下方指定卡号")
  129 + @RequestMapping(value = "sendCard", method = RequestMethod.POST)
  130 + public void exportFace(@RequestParam("cardNum") String cardNum,@RequestParam("schoolId") Integer schoolId,
  131 + @RequestParam("deviceIds") String deviceIds){
  132 + userOperateService.sendCard(cardNum,schoolId,deviceIds);
  133 + }
  134 +// @ApiOperation(value = "按班级指定下发")
  135 +// @RequestMapping(value = "sendFaceByRoomId", method = RequestMethod.POST)
  136 +// public void exportFace(@RequestParam("schoolId") Integer schoolId,
  137 +// @RequestParam(value = "classIds",required = false) String classIds,
  138 +// @RequestParam(value = "deviceIds",required = false) String deviceIds){
  139 +//// userOperateService.sendFaceByRoomId(schoolId,classIds,deviceIds);
  140 +// r
  141 +// }
  142 +
127 } 143 }
cloud/dahua/src/main/java/com/example/dahua/service/UserOperateService.java
@@ -38,4 +38,6 @@ public interface UserOperateService { @@ -38,4 +38,6 @@ public interface UserOperateService {
38 * @return 38 * @return
39 */ 39 */
40 Result sendYxUserFace(YxSendFaceDto sendFaceDto); 40 Result sendYxUserFace(YxSendFaceDto sendFaceDto);
  41 +
  42 + void sendCard(String cardNum,Integer schoolId,String deviceIds);
41 } 43 }
cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java
@@ -19,6 +19,7 @@ import com.example.dahua.utils.DateUtils; @@ -19,6 +19,7 @@ import com.example.dahua.utils.DateUtils;
19 import com.example.dahua.utils.HttpUtils; 19 import com.example.dahua.utils.HttpUtils;
20 import com.example.dahua.xiananDao.SearchMapper; 20 import com.example.dahua.xiananDao.SearchMapper;
21 import com.example.dahua.xiananDao.SendRecordDao; 21 import com.example.dahua.xiananDao.SendRecordDao;
  22 +import com.google.gson.Gson;
22 import lombok.extern.slf4j.Slf4j; 23 import lombok.extern.slf4j.Slf4j;
23 import org.springframework.beans.BeanUtils; 24 import org.springframework.beans.BeanUtils;
24 import org.springframework.beans.factory.annotation.Autowired; 25 import org.springframework.beans.factory.annotation.Autowired;
@@ -301,4 +302,26 @@ public class UserOperateServiceImpl implements UserOperateService { @@ -301,4 +302,26 @@ public class UserOperateServiceImpl implements UserOperateService {
301 sendFace(dtoList,deviceList,schoolId,2); 302 sendFace(dtoList,deviceList,schoolId,2);
302 return ResultGenerator.genSuccessResult(); 303 return ResultGenerator.genSuccessResult();
303 } 304 }
  305 +
  306 + @Override
  307 + public void sendCard(String cardNum, Integer schoolId, String deviceIds) {
  308 + //下发设备集合
  309 + String[] deviceArr = deviceIds.split(",");
  310 + List<String> deviceList= new ArrayList<>(Arrays.asList(deviceArr));
  311 + if(deviceList.size()<1){
  312 + return;
  313 + }
  314 + deviceList.stream().forEach(s -> {
  315 + //登录设备
  316 + NetSDKLib.LLong loginHandleLong = MyTask.lLongSendMap.get(s);
  317 + StudentBean studentBean = userDao.getStudentWithCard(cardNum,schoolId);
  318 + log.info("学生信息: {},设备信息: {}",new Gson().toJson(studentBean),loginHandleLong);
  319 + if(studentBean !=null && loginHandleLong != null){
  320 + String userId = studentBean.getUser_id();
  321 + //修改用户信息
  322 + int bUserFlags = GateModule2.addCardForMore(userId,cardNum,loginHandleLong,1);
  323 + log.info("下发结果:" + bUserFlags);
  324 + }
  325 + });
  326 + }
304 } 327 }
cloud/dahua/src/main/java/com/example/dahua/utils/DateUtils.java
@@ -82,4 +82,9 @@ public class DateUtils { @@ -82,4 +82,9 @@ public class DateUtils {
82 return cal.getTime(); 82 return cal.getTime();
83 } 83 }
84 84
  85 + public static void main(String[] args) {
  86 + System.out.println(getDateByTime(3,new Date()));
  87 + System.out.println(getDateByTime(-3,new Date()));
  88 + }
  89 +
85 } 90 }
cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java
@@ -40,7 +40,8 @@ public class HttpUtils { @@ -40,7 +40,8 @@ public class HttpUtils {
40 return false; 40 return false;
41 } 41 }
42 String targPath = FilePath.picPathComp + studentCode + ".jpg"; 42 String targPath = FilePath.picPathComp + studentCode + ".jpg";
43 - String url = "http://121.40.109.21:8991/file/uploadImg"; 43 +// String url = "http://121.40.109.21:8991/file/uploadImg";
  44 + String url = "http://116.62.155.137:8991/file/uploadImg";
44 MultiValueMap<String, Object> multivaluedMap = new LinkedMultiValueMap<>(); 45 MultiValueMap<String, Object> multivaluedMap = new LinkedMultiValueMap<>();
45 HttpHeaders headers = new HttpHeaders(); 46 HttpHeaders headers = new HttpHeaders();
46 RestTemplate restTemplate = new RestTemplate(); 47 RestTemplate restTemplate = new RestTemplate();
@@ -88,8 +89,8 @@ public class HttpUtils { @@ -88,8 +89,8 @@ public class HttpUtils {
88 89
89 String targetPath = FilePath.picPathComp + studentCode + FilePath.fileSuffix; 90 String targetPath = FilePath.picPathComp + studentCode + FilePath.fileSuffix;
90 91
91 - String url = "http://121.40.109.21:8991/operate/sendUserAndImg";  
92 - //String url = "http://localhost:8991/file/uploadImg"; 92 +// String url = "http://121.40.109.21:8991/operate/sendUserAndImg";
  93 + String url = "http://116.62.155.137:8991/operate/sendUserAndImg";
93 94
94 MultiValueMap<String, Object> multivaluedMap = new LinkedMultiValueMap<>(); 95 MultiValueMap<String, Object> multivaluedMap = new LinkedMultiValueMap<>();
95 HttpHeaders headers = new HttpHeaders(); 96 HttpHeaders headers = new HttpHeaders();
@@ -148,7 +149,7 @@ public class HttpUtils { @@ -148,7 +149,7 @@ public class HttpUtils {
148 } 149 }
149 150
150 public static void deleteFace(Integer schoolId) { 151 public static void deleteFace(Integer schoolId) {
151 - String url = "http://121.40.109.21:8991/operate/deleteFailFace?schoolId=" + schoolId; 152 + String url = "http://116.62.155.137:8991/operate/deleteFailFace?schoolId=" + schoolId;
152 RestTemplate restTemplate = new RestTemplate(); 153 RestTemplate restTemplate = new RestTemplate();
153 ResponseEntity<Boolean> result = restTemplate.getForEntity(url, Boolean.class); 154 ResponseEntity<Boolean> result = restTemplate.getForEntity(url, Boolean.class);
154 System.out.println("发生请求21服务删除人脸,请求地址: +" + url+ "返回信息: "+ result.getBody()); 155 System.out.println("发生请求21服务删除人脸,请求地址: +" + url+ "返回信息: "+ result.getBody());
@@ -160,8 +161,8 @@ public class HttpUtils { @@ -160,8 +161,8 @@ public class HttpUtils {
160 * @return 161 * @return
161 */ 162 */
162 public static boolean sendPermission(PermissionBean permissionBean) { 163 public static boolean sendPermission(PermissionBean permissionBean) {
163 - String url = "http://121.40.109.21:8991/file/sendPermission";  
164 -// String url = "http://localhost:8991/file/sendPermission"; 164 +// String url = "http://121.40.109.21:8991/file/sendPermission";
  165 + String url = "http://116.62.155.137:8991/file/sendPermission";
165 RestTemplate restTemplate = new RestTemplate(); 166 RestTemplate restTemplate = new RestTemplate();
166 167
167 HttpHeaders headers = new HttpHeaders(); 168 HttpHeaders headers = new HttpHeaders();
@@ -185,11 +186,8 @@ public class HttpUtils { @@ -185,11 +186,8 @@ public class HttpUtils {
185 public static void sendPermission2HK(PermissionFaceBean permissionFaceBean) { 186 public static void sendPermission2HK(PermissionFaceBean permissionFaceBean) {
186 String url = "http://114.55.30.100:8089/facereco/sendPermiss"; 187 String url = "http://114.55.30.100:8089/facereco/sendPermiss";
187 PermissionBean permissionBean = permissionFaceBean.getPermissionBean(); 188 PermissionBean permissionBean = permissionFaceBean.getPermissionBean();
188 -  
189 if (null!=permissionBean){ 189 if (null!=permissionBean){
190 -  
191 PermissionHKBean permissionHKBean = new PermissionHKBean(); 190 PermissionHKBean permissionHKBean = new PermissionHKBean();
192 -  
193 permissionHKBean.setDeviceIds(permissionBean.getDeviceIds()); 191 permissionHKBean.setDeviceIds(permissionBean.getDeviceIds());
194 permissionHKBean.setSchoolId(permissionFaceBean.getSchoolId()+""); 192 permissionHKBean.setSchoolId(permissionFaceBean.getSchoolId()+"");
195 permissionHKBean.setUserType("2"); 193 permissionHKBean.setUserType("2");
@@ -208,8 +206,6 @@ public class HttpUtils { @@ -208,8 +206,6 @@ public class HttpUtils {
208 ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); 206 ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class);
209 207
210 System.out.println("海康设备下发权限:" + responseEntity.getBody()); 208 System.out.println("海康设备下发权限:" + responseEntity.getBody());
211 -  
212 } 209 }
213 -  
214 } 210 }
215 } 211 }
cloud/dahua/src/main/java/com/example/dahua/xiananDao/SendRecordDao.java
@@ -73,10 +73,10 @@ public interface SendRecordDao { @@ -73,10 +73,10 @@ public interface SendRecordDao {
73 @Select("select * from Face_SendFail where schoolId = #{schoolId} and userType = #{userType} and deviceID = #{deviceID}") 73 @Select("select * from Face_SendFail where schoolId = #{schoolId} and userType = #{userType} and deviceID = #{deviceID}")
74 List<SendRecordBean> getFaceFails(@Param("userType") int userType, @Param("schoolId") int schoolId, @Param("deviceID") String deviceID); 74 List<SendRecordBean> getFaceFails(@Param("userType") int userType, @Param("schoolId") int schoolId, @Param("deviceID") String deviceID);
75 75
76 - @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp})") 76 + @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp},#{schoolId})")
77 void addFaceRecoder(@Param("deviceId") String deviceId, @Param("user_id") String user_id, @Param("name") String name, 77 void addFaceRecoder(@Param("deviceId") String deviceId, @Param("user_id") String user_id, @Param("name") String name,
78 @Param("imgurl") String imgurl, @Param("inOrOut") int inOrOut, @Param("time") String time, 78 @Param("imgurl") String imgurl, @Param("inOrOut") int inOrOut, @Param("time") String time,
79 - @Param("cardNum") String cardNum,@Param("temp")String temp); 79 + @Param("cardNum") String cardNum,@Param("temp")String temp,@Param("schoolId")int schoolId);
80 80
81 @Select("select DISTINCT deviceID from Face_SendFail where schoolId = #{schoolId} ") 81 @Select("select DISTINCT deviceID from Face_SendFail where schoolId = #{schoolId} ")
82 List<String> getDeviceIds(@Param("schoolId") String schoolId); 82 List<String> getDeviceIds(@Param("schoolId") String schoolId);
cloud/dahua/src/main/resources/bootstrap.yml
@@ -18,23 +18,23 @@ spring: @@ -18,23 +18,23 @@ spring:
18 # show-details: always 18 # show-details: always
19 19
20 #eureka client配置 20 #eureka client配置
21 -eureka:  
22 - client:  
23 - serviceUrl: 21 +#eureka:
  22 +# client:
  23 +# serviceUrl:
24 # defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ 24 # defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
25 - defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ 25 +# defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/
26 #http://134.224.249.33:1111/eureka/ 正式库 26 #http://134.224.249.33:1111/eureka/ 正式库
27 #http://134.224.249.33:1111/eureka/ 测试库 27 #http://134.224.249.33:1111/eureka/ 测试库
28 #http://127.0.0.1:8761/eureka,http://127.0.0.1:8762/eureka 28 #http://127.0.0.1:8761/eureka,http://127.0.0.1:8762/eureka
29 - registry-fetch-interval-seconds: 5  
30 - instance-info-replication-interval-seconds: 10 29 +# registry-fetch-interval-seconds: 5
  30 +# instance-info-replication-interval-seconds: 10
31 instance: 31 instance:
32 # prefer-ip-address: false 32 # prefer-ip-address: false
33 - instance-id: ${spring.application.name} 33 +# instance-id: ${spring.application.name}
34 # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}} #固定端口 34 # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}} #固定端口
35 # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${randomServerPort.value[5000,5005]}} #随机端口 35 # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${randomServerPort.value[5000,5005]}} #随机端口
36 - lease-renewal-interval-in-seconds: 10 #每隔几秒告诉eureka服务器我还存活,用于心跳检测  
37 - lease-expiration-duration-in-seconds: 10 #如果心跳检测一直没有发送,10秒后会从eureka服务器中将此服务剔除 36 +# lease-renewal-interval-in-seconds: 10 #每隔几秒告诉eureka服务器我还存活,用于心跳检测
  37 +# lease-expiration-duration-in-seconds: 10 #如果心跳检测一直没有发送,10秒后会从eureka服务器中将此服务剔除
38 # status-page-url: http://${spring.cloud.client.ip-address}:${server.port}/doc.html # ${server.port}为该服务的端口号 38 # status-page-url: http://${spring.cloud.client.ip-address}:${server.port}/doc.html # ${server.port}为该服务的端口号
39 - hostname: localhost 39 +# hostname: localhost
40 # status-page-url: http://${spring.cloud.client.ip-address}:${randomServerPort.value[5000,5005]}/document.html # ${server.port}为该服务的端口号 40 # status-page-url: http://${spring.cloud.client.ip-address}:${randomServerPort.value[5000,5005]}/document.html # ${server.port}为该服务的端口号
41 \ No newline at end of file 41 \ No newline at end of file
cloud/dahua/src/main/resources/logback-spring.xml
@@ -8,7 +8,10 @@ @@ -8,7 +8,10 @@
8 <!--<include resource="org/springframework/boot/logging/logback/defaults.xml" />--> 8 <!--<include resource="org/springframework/boot/logging/logback/defaults.xml" />-->
9 9
10 <!--日志文件存储的基础路径: ${user.home} 为当前服务器用户主目录--> 10 <!--日志文件存储的基础路径: ${user.home} 为当前服务器用户主目录-->
11 - <property name="LOG_PATH" value="E:/dahua-logs"/> 11 + <!--100-->
  12 + <property name="LOG_PATH" value="E:\dahua\logs"/>
  13 + <!--137-->
  14 + <!--<property name="LOG_PATH" value="C:\workspace\dahua\logs"/>-->
12 15
13 <!--日志文件基础名称--> 16 <!--日志文件基础名称-->
14 <property name="BASE_FILE_NAME" value="dahua"/> 17 <property name="BASE_FILE_NAME" value="dahua"/>
cloud/fIle-center/pom.xml
@@ -89,7 +89,22 @@ @@ -89,7 +89,22 @@
89 </includes> 89 </includes>
90 </configuration> 90 </configuration>
91 </plugin> 91 </plugin>
92 - 92 + <plugin>
  93 + <groupId>org.apache.maven.plugins</groupId>
  94 + <artifactId>maven-dependency-plugin</artifactId>
  95 + <executions>
  96 + <execution>
  97 + <id>copy</id>
  98 + <phase>package</phase>
  99 + <goals>
  100 + <goal>copy-dependencies</goal>
  101 + </goals>
  102 + <configuration>
  103 + <outputDirectory>${project.build.directory}/lib</outputDirectory>
  104 + </configuration>
  105 + </execution>
  106 + </executions>
  107 + </plugin>
93 </plugins> 108 </plugins>
94 <finalName>file-center</finalName> 109 <finalName>file-center</finalName>
95 </build> 110 </build>
cloud/fIle-center/src/main/java/com/sincere/file/FileApplication.java
@@ -6,7 +6,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @@ -6,7 +6,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 import org.springframework.cloud.netflix.eureka.EnableEurekaClient; 6 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
7 import org.springframework.context.annotation.Configuration; 7 import org.springframework.context.annotation.Configuration;
8 8
9 -@EnableDiscoveryClient 9 +//@EnableDiscoveryClient
10 @SpringBootApplication 10 @SpringBootApplication
11 public class FileApplication { 11 public class FileApplication {
12 12
cloud/fIle-center/src/main/resources/bootstrap.yml
@@ -22,23 +22,23 @@ spring: @@ -22,23 +22,23 @@ spring:
22 # show-details: always 22 # show-details: always
23 23
24 #eureka client配置 24 #eureka client配置
25 -eureka:  
26 - client:  
27 - serviceUrl:  
28 - # defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/  
29 - defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/  
30 - #http://134.224.249.33:1111/eureka/ 正式库  
31 - #http://134.224.249.33:1111/eureka/ 测试库  
32 - #http://127.0.0.1:8761/eureka,http://127.0.0.1:8762/eureka  
33 - registry-fetch-interval-seconds: 5  
34 - instance-info-replication-interval-seconds: 10  
35 - instance:  
36 - # prefer-ip-address: false  
37 - instance-id: ${spring.application.name}  
38 - # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}} #固定端口  
39 - # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${randomServerPort.value[5000,5005]}} #随机端口  
40 - lease-renewal-interval-in-seconds: 10 #每隔几秒告诉eureka服务器我还存活,用于心跳检测  
41 - lease-expiration-duration-in-seconds: 10 #如果心跳检测一直没有发送,10秒后会从eureka服务器中将此服务剔除  
42 - # status-page-url: http://${spring.cloud.client.ip-address}:${server.port}/doc.html # ${server.port}为该服务的端口号  
43 - hostname: 121.40.30.78  
44 -# status-page-url: http://${spring.cloud.client.ip-address}:${randomServerPort.value[5000,5005]}/document.html # ${server.port}为该服务的端口号  
45 \ No newline at end of file 25 \ No newline at end of file
  26 +#eureka:
  27 +# client:
  28 +# serviceUrl:
  29 +# # defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
  30 +# defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/
  31 +# #http://134.224.249.33:1111/eureka/ 正式库
  32 +# #http://134.224.249.33:1111/eureka/ 测试库
  33 +# #http://127.0.0.1:8761/eureka,http://127.0.0.1:8762/eureka
  34 +# registry-fetch-interval-seconds: 5
  35 +# instance-info-replication-interval-seconds: 10
  36 +# instance:
  37 +# # prefer-ip-address: false
  38 +# instance-id: ${spring.application.name}
  39 +# # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}} #固定端口
  40 +# # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${randomServerPort.value[5000,5005]}} #随机端口
  41 +# lease-renewal-interval-in-seconds: 10 #每隔几秒告诉eureka服务器我还存活,用于心跳检测
  42 +# lease-expiration-duration-in-seconds: 10 #如果心跳检测一直没有发送,10秒后会从eureka服务器中将此服务剔除
  43 +# # status-page-url: http://${spring.cloud.client.ip-address}:${server.port}/doc.html # ${server.port}为该服务的端口号
  44 +# hostname: 121.40.30.78
  45 +## status-page-url: http://${spring.cloud.client.ip-address}:${randomServerPort.value[5000,5005]}/document.html # ${server.port}为该服务的端口号
46 \ No newline at end of file 46 \ No newline at end of file
cloud/haikangface/pom.xml
@@ -169,42 +169,37 @@ @@ -169,42 +169,37 @@
169 <plugin> 169 <plugin>
170 <groupId>org.springframework.boot</groupId> 170 <groupId>org.springframework.boot</groupId>
171 <artifactId>spring-boot-maven-plugin</artifactId> 171 <artifactId>spring-boot-maven-plugin</artifactId>
  172 + <executions>
  173 + <execution>
  174 + <goals>
  175 + <goal>repackage</goal>
  176 + </goals>
  177 + </execution>
  178 + </executions>
172 <configuration> 179 <configuration>
173 <includeSystemScope>true</includeSystemScope> 180 <includeSystemScope>true</includeSystemScope>
174 <layout>ZIP</layout> 181 <layout>ZIP</layout>
175 -<!-- <includes>-->  
176 -<!-- <include>-->  
177 -<!-- &lt;!&ndash; 排除所有Jar &ndash;&gt;-->  
178 -<!-- <groupId>nothing</groupId>-->  
179 -<!-- <artifactId>nothing</artifactId>-->  
180 -<!-- </include>-->  
181 -<!-- </includes>-->  
182 - </configuration>  
183 - </plugin>  
184 - <!--添加maven配置跳过测试-->  
185 - <plugin>  
186 - <groupId>org.apache.maven.plugins</groupId>  
187 - <artifactId>maven-surefire-plugin</artifactId>  
188 - <configuration>  
189 - <skipTests>true</skipTests> 182 + <includes>
  183 + <include>
  184 + <!-- 排除所有Jar -->
  185 + <groupId>nothing</groupId>
  186 + <artifactId>nothing</artifactId>
  187 + </include>
  188 + </includes>
190 </configuration> 189 </configuration>
191 </plugin> 190 </plugin>
192 <plugin> 191 <plugin>
193 <groupId>org.apache.maven.plugins</groupId> 192 <groupId>org.apache.maven.plugins</groupId>
194 <artifactId>maven-dependency-plugin</artifactId> 193 <artifactId>maven-dependency-plugin</artifactId>
195 - <!-- <version>2.2</version>&lt;!&ndash;$NO-MVN-MAN-VER$ &ndash;&gt;-->  
196 <executions> 194 <executions>
197 <execution> 195 <execution>
198 - <id>copy-dependencies</id> 196 + <id>copy</id>
199 <phase>package</phase> 197 <phase>package</phase>
200 <goals> 198 <goals>
201 <goal>copy-dependencies</goal> 199 <goal>copy-dependencies</goal>
202 </goals> 200 </goals>
203 <configuration> 201 <configuration>
204 - <outputDirectory>${project.build.directory}/libs</outputDirectory>  
205 - <overWriteReleases>true</overWriteReleases>  
206 - <overWriteSnapshots>true</overWriteSnapshots>  
207 - <overWriteIfNewer>true</overWriteIfNewer> 202 + <outputDirectory>${project.build.directory}/lib</outputDirectory>
208 </configuration> 203 </configuration>
209 </execution> 204 </execution>
210 </executions> 205 </executions>
cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java
@@ -64,10 +64,10 @@ public class CMSServer implements ApplicationRunner { @@ -64,10 +64,10 @@ public class CMSServer implements ApplicationRunner {
64 // 存储设备登录句柄 64 // 存储设备登录句柄
65 static Map<String, NativeLong> map = new HashMap<>(); 65 static Map<String, NativeLong> map = new HashMap<>();
66 66
67 - //114.55.30.100  
68 - //120.26.116.253  
69 -// private String ip_cloud = "114.55.30.100";  
70 private String ip_cloud = "114.55.30.100"; 67 private String ip_cloud = "114.55.30.100";
  68 + private String strPath = "E://EhomePicServer/";
  69 +// private String ip_cloud = "120.26.116.253";
  70 +// private String strPath = "D://EhomePicServer/";
71 71
72 private String ip; 72 private String ip;
73 { 73 {
@@ -299,7 +299,6 @@ public class CMSServer implements ApplicationRunner { @@ -299,7 +299,6 @@ public class CMSServer implements ApplicationRunner {
299 //文件保存回调函数(下载) 299 //文件保存回调函数(下载)
300 public class PSS_Storage_Callback implements HCEHomeSS.EHomeSSStorageCallBack { 300 public class PSS_Storage_Callback implements HCEHomeSS.EHomeSSStorageCallBack {
301 public boolean invoke(NativeLong iHandle, String pFileName, Pointer pFileBuf, int dwFileLen, Pointer pFilePath, Pointer pUser) { 301 public boolean invoke(NativeLong iHandle, String pFileName, Pointer pFileBuf, int dwFileLen, Pointer pFilePath, Pointer pUser) {
302 - String strPath = "E://EhomePicServer/";  
303 //若此目录不存在,则创建之 302 //若此目录不存在,则创建之
304 File myPath = new File(strPath); 303 File myPath = new File(strPath);
305 if (!myPath.exists()) { 304 if (!myPath.exists()) {
@@ -340,7 +339,7 @@ public class CMSServer implements ApplicationRunner { @@ -340,7 +339,7 @@ public class CMSServer implements ApplicationRunner {
340 deviceId = isQJFileName.substring(start, end); 339 deviceId = isQJFileName.substring(start, end);
341 } 340 }
342 //发送看板 341 //发送看板
343 - sendUserInfoToKB(strFilePathFile, deviceId); 342 +// sendUserInfoToKB(strFilePathFile, deviceId);
344 } 343 }
345 } catch (FileNotFoundException e) { 344 } catch (FileNotFoundException e) {
346 log.error("处理人脸机抓拍文件异常,错误信息:{}",e); 345 log.error("处理人脸机抓拍文件异常,错误信息:{}",e);
@@ -353,6 +352,10 @@ public class CMSServer implements ApplicationRunner { @@ -353,6 +352,10 @@ public class CMSServer implements ApplicationRunner {
353 } 352 }
354 } 353 }
355 354
  355 + public static void main(String[] args) {
  356 + System.out.println(StringUtils.isNotBlank("944"));
  357 + }
  358 +
356 private AlarmUtils alarmUtils;//报警工具类 359 private AlarmUtils alarmUtils;//报警工具类
357 /** 360 /**
358 * 报警监听回调 361 * 报警监听回调
@@ -375,7 +378,7 @@ public class CMSServer implements ApplicationRunner { @@ -375,7 +378,7 @@ public class CMSServer implements ApplicationRunner {
375 @Override 378 @Override
376 public void callBack(String minorType, String deviceID, String cardNo, String time, String picDataUrlId, String currTemperature) { 379 public void callBack(String minorType, String deviceID, String cardNo, String time, String picDataUrlId, String currTemperature) {
377 saveAttendance(deviceID); 380 saveAttendance(deviceID);
378 - AttendanceBean attendanceBean = deviceDao.selectDevice(deviceID); 381 + AttendanceBean attendanceBean = deviceDao.selectDeviceInfo(deviceID);
379 int outOrIn = attendanceBean.getOutOrIn(); 382 int outOrIn = attendanceBean.getOutOrIn();
380 String schoolId = attendanceBean.getSchool_id(); 383 String schoolId = attendanceBean.getSchool_id();
381 switch (minorType) { 384 switch (minorType) {
@@ -385,6 +388,9 @@ public class CMSServer implements ApplicationRunner { @@ -385,6 +388,9 @@ public class CMSServer implements ApplicationRunner {
385 saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn); 388 saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn);
386 //944柯桥实验幼儿园,海康一体机考勤签到 389 //944柯桥实验幼儿园,海康一体机考勤签到
387 if(StringUtils.isNotBlank(schoolId)){ 390 if(StringUtils.isNotBlank(schoolId)){
  391 + if(Integer.parseInt(schoolId)== 944){
  392 + log.info("柯桥实验考勤:考勤卡号:{} "+ cardNo);
  393 + }
388 if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){ 394 if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){
389 kaoQinRecord(outOrIn,cardNo,deviceID,time); 395 kaoQinRecord(outOrIn,cardNo,deviceID,time);
390 } 396 }
@@ -402,6 +408,9 @@ public class CMSServer implements ApplicationRunner { @@ -402,6 +408,9 @@ public class CMSServer implements ApplicationRunner {
402 saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn); 408 saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn);
403 //944柯桥实验幼儿园,海康一体机考勤签到 409 //944柯桥实验幼儿园,海康一体机考勤签到
404 if(StringUtils.isNotBlank(schoolId)){ 410 if(StringUtils.isNotBlank(schoolId)){
  411 + if(Integer.parseInt(schoolId)== 944){
  412 + log.info("柯桥实验考勤:考勤卡号:{} "+ cardNo);
  413 + }
405 if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){ 414 if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){
406 kaoQinRecord(outOrIn,cardNo,deviceID,time); 415 kaoQinRecord(outOrIn,cardNo,deviceID,time);
407 } 416 }
@@ -412,6 +421,9 @@ public class CMSServer implements ApplicationRunner { @@ -412,6 +421,9 @@ public class CMSServer implements ApplicationRunner {
412 saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn); 421 saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn);
413 //944柯桥实验幼儿园,海康一体机考勤签到 422 //944柯桥实验幼儿园,海康一体机考勤签到
414 if(StringUtils.isNotBlank(schoolId)){ 423 if(StringUtils.isNotBlank(schoolId)){
  424 + if(Integer.parseInt(schoolId)== 944){
  425 + log.info("柯桥实验考勤:考勤卡号:{} "+ cardNo);
  426 + }
415 if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){ 427 if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){
416 kaoQinRecord(outOrIn,cardNo,deviceID,time); 428 kaoQinRecord(outOrIn,cardNo,deviceID,time);
417 } 429 }
@@ -444,9 +456,9 @@ public class CMSServer implements ApplicationRunner { @@ -444,9 +456,9 @@ public class CMSServer implements ApplicationRunner {
444 checkIn.setCheckTime(eventTime); 456 checkIn.setCheckTime(eventTime);
445 sendRecordDao.checkIn(checkIn); 457 sendRecordDao.checkIn(checkIn);
446 if (checkIn.getIsSuccess() == 1) { 458 if (checkIn.getIsSuccess() == 1) {
447 - log.info("考勤成功: checkIn: {}, 方向:{}", JsonUtils.nonDefaultMapper().toJson(checkIn),outOrIn == 1 ? "门" : "出门"); 459 + log.info("柯桥实验幼儿园考勤成功: checkIn: {}, 方向:{}", JsonUtils.nonDefaultMapper().toJson(checkIn),outOrIn == 1 ? "门" : "出门");
448 } else { 460 } else {
449 - log.info("考勤失败: checkIn: {}, 方向:{}",JsonUtils.nonDefaultMapper().toJson(checkIn),outOrIn == 1 ? "进门" : "出门"); 461 + log.info("柯桥实验幼儿园考勤失败: checkIn: {}, 方向:{}",JsonUtils.nonDefaultMapper().toJson(checkIn),outOrIn == 1 ? "进门" : "出门");
450 } 462 }
451 } 463 }
452 464
@@ -494,7 +506,7 @@ public class CMSServer implements ApplicationRunner { @@ -494,7 +506,7 @@ public class CMSServer implements ApplicationRunner {
494 } 506 }
495 //记录签到成功的流水 507 //记录签到成功的流水
496 sendRecordDao.addFaceRecoder(face_recoder.getDeviceId(), face_recoder.getUser_id(), face_recoder.getName(), 508 sendRecordDao.addFaceRecoder(face_recoder.getDeviceId(), face_recoder.getUser_id(), face_recoder.getName(),
497 - face_recoder.getImgurl(), face_recoder.getInOrOut(), face_recoder.getTime(), face_recoder.getCardNum(), currTemperature); 509 + face_recoder.getImgurl(), face_recoder.getInOrOut(), face_recoder.getTime(), face_recoder.getCardNum(), currTemperature,schoolId);
498 } else { 510 } else {
499 //教师点名 511 //教师点名
500 isTeacher(cardNo, deviceID,null); 512 isTeacher(cardNo, deviceID,null);
cloud/haikangface/src/main/java/com/sincere/haikangface/HaikangfaceApplication.java
@@ -13,8 +13,8 @@ import org.springframework.scheduling.annotation.EnableAsync; @@ -13,8 +13,8 @@ import org.springframework.scheduling.annotation.EnableAsync;
13 13
14 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class}) 14 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class})
15 @SpringBootApplication 15 @SpringBootApplication
16 -@EnableDiscoveryClient  
17 -@EnableFeignClients(basePackages = "com.sincere.haikangface.fegin") 16 +//@EnableDiscoveryClient
  17 +//@EnableFeignClients(basePackages = "com.sincere.haikangface.fegin")
18 @EnableAsync 18 @EnableAsync
19 public class HaikangfaceApplication { 19 public class HaikangfaceApplication {
20 20
cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java
@@ -9,7 +9,6 @@ import com.sincere.haikangface.bean.StudentBean; @@ -9,7 +9,6 @@ import com.sincere.haikangface.bean.StudentBean;
9 import com.sincere.haikangface.bean.face.PermissionBean; 9 import com.sincere.haikangface.bean.face.PermissionBean;
10 import com.sincere.haikangface.bean.face.UserAndPermission; 10 import com.sincere.haikangface.bean.face.UserAndPermission;
11 import com.sincere.haikangface.dao.UserDao; 11 import com.sincere.haikangface.dao.UserDao;
12 -import com.sincere.haikangface.fegin.HaikangfaceFegin;  
13 import com.sincere.haikangface.service.impl.BaseService; 12 import com.sincere.haikangface.service.impl.BaseService;
14 import com.sincere.haikangface.utils.CompressPic; 13 import com.sincere.haikangface.utils.CompressPic;
15 import com.sincere.haikangface.utils.FileUtils; 14 import com.sincere.haikangface.utils.FileUtils;
@@ -41,8 +40,8 @@ public class UserControl { @@ -41,8 +40,8 @@ public class UserControl {
41 @Autowired 40 @Autowired
42 UserDao userDao; 41 UserDao userDao;
43 42
44 - @Autowired  
45 - HaikangfaceFegin haikangfaceFegin; 43 +// @Autowired
  44 +// HaikangfaceFegin haikangfaceFegin;
46 45
47 @Autowired 46 @Autowired
48 CMSServer cmsServer; 47 CMSServer cmsServer;
cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java
@@ -101,8 +101,9 @@ public class UserOperateController { @@ -101,8 +101,9 @@ public class UserOperateController {
101 public Result sendFaceForNoSend(@RequestParam("schoolId") Integer schoolId,@RequestParam("userType") Integer userType, 101 public Result sendFaceForNoSend(@RequestParam("schoolId") Integer schoolId,@RequestParam("userType") Integer userType,
102 @RequestParam(value = "studentType",required = false) Integer studentType, 102 @RequestParam(value = "studentType",required = false) Integer studentType,
103 @RequestParam(value = "sex",required = false) String sex, 103 @RequestParam(value = "sex",required = false) String sex,
104 - @RequestParam(value = "deviceIds",required = false) String deviceIds) {  
105 - return userOperateService.sendFaceForNoSend(schoolId,studentType,sex,userType,deviceIds); 104 + @RequestParam(value = "deviceIds",required = false) String deviceIds,
  105 + @RequestParam(value = "groupId",required = false) Integer groupId) {
  106 + return userOperateService.sendFaceForNoSend(schoolId,studentType,sex,userType,deviceIds,groupId);
106 } 107 }
107 108
108 @ApiOperation(value = "补发单个人脸至指定设备2.0") 109 @ApiOperation(value = "补发单个人脸至指定设备2.0")
@@ -139,6 +140,14 @@ public class UserOperateController { @@ -139,6 +140,14 @@ public class UserOperateController {
139 return userOperateService.sendFaceByClassId(schoolId,classIds,deviceIds,studentType,sex,isCheck); 140 return userOperateService.sendFaceByClassId(schoolId,classIds,deviceIds,studentType,sex,isCheck);
140 } 141 }
141 142
  143 + @ApiOperation(value = "根据宿舍分组下发")
  144 + @RequestMapping(value = "sendFaceByGroupId", method = RequestMethod.POST)
  145 + public Result sendFaceByThread(@RequestParam("schoolId") Integer schoolId,
  146 + @RequestParam("groupId") Integer groupId,
  147 + @RequestParam(value = "deviceIds",required = false) String deviceIds) {
  148 + return userOperateService.sendFaceByGroupId(schoolId,groupId,deviceIds);
  149 + }
  150 +
142 @ApiOperation(value = "删除指定学校下人脸照片") 151 @ApiOperation(value = "删除指定学校下人脸照片")
143 @RequestMapping(value = "deleteBySchoolId", method = RequestMethod.POST) 152 @RequestMapping(value = "deleteBySchoolId", method = RequestMethod.POST)
144 public Result exportFace(@RequestParam("schoolId") Integer schoolId, 153 public Result exportFace(@RequestParam("schoolId") Integer schoolId,
@@ -146,7 +155,6 @@ public class UserOperateController { @@ -146,7 +155,6 @@ public class UserOperateController {
146 return userOperateService.deleteFaceBySchoolId(schoolId,deviceIds); 155 return userOperateService.deleteFaceBySchoolId(schoolId,deviceIds);
147 } 156 }
148 157
149 - @ApiOperation(value = "删除指定学校下无效人脸")  
150 @RequestMapping(value = "checkFaceSend", method = RequestMethod.GET) 158 @RequestMapping(value = "checkFaceSend", method = RequestMethod.GET)
151 public void checkFaceSend(){ 159 public void checkFaceSend(){
152 userOperateService.checkFaceSend(); 160 userOperateService.checkFaceSend();
cloud/haikangface/src/main/java/com/sincere/haikangface/dao/DeviceDao.java
@@ -28,6 +28,9 @@ public interface DeviceDao { @@ -28,6 +28,9 @@ public interface DeviceDao {
28 @Select("select clint_id from SZ_Attendance where clint_id = #{clint_id}") 28 @Select("select clint_id from SZ_Attendance where clint_id = #{clint_id}")
29 AttendanceBean selectDevice(@Param("clint_id") String clint_id); 29 AttendanceBean selectDevice(@Param("clint_id") String clint_id);
30 30
  31 + @Select("select * from SZ_Attendance where clint_id = #{clint_id}")
  32 + AttendanceBean selectDeviceInfo(@Param("clint_id") String clint_id);
  33 +
31 // @Select("select * from SZ_Attendance where IsKaoqin = #{IsKaoqin}") 34 // @Select("select * from SZ_Attendance where IsKaoqin = #{IsKaoqin}")
32 // List<SZ_AttendanceDto> getAttensWithIsKaoqin(@Param("IsKaoqin")int IsKaoqin); 35 // List<SZ_AttendanceDto> getAttensWithIsKaoqin(@Param("IsKaoqin")int IsKaoqin);
33 36
cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java
@@ -264,7 +264,7 @@ public interface UserDao { @@ -264,7 +264,7 @@ public interface UserDao {
264 264
265 List<StudentBean> getStudentList(@Param("schoolId") Integer schoolId,@Param("studentType")Integer studentType,@Param("sex") List<Integer> sex); 265 List<StudentBean> getStudentList(@Param("schoolId") Integer schoolId,@Param("studentType")Integer studentType,@Param("sex") List<Integer> sex);
266 266
267 - List<StudentBean> getStudentCardGroup(@Param("schoolId") Integer schoolId,@Param("studentType")Integer studentType,@Param("sex") String sex,@Param("groupId")Integer groupId); 267 + List<StudentBean> getStudentCardGroup(@Param("schoolId") Integer schoolId,@Param("studentType")Integer studentType,@Param("sexList") List<Integer> sexList,@Param("groupId")Integer groupId);
268 268
269 List<StudentBean> getTeacherList(@Param("schoolId") Integer schoolId); 269 List<StudentBean> getTeacherList(@Param("schoolId") Integer schoolId);
270 270
@@ -294,4 +294,8 @@ public interface UserDao { @@ -294,4 +294,8 @@ public interface UserDao {
294 void updateStudent(@Param("id") Integer id); 294 void updateStudent(@Param("id") Integer id);
295 295
296 List<SaveStudentBak> selectStudentList(); 296 List<SaveStudentBak> selectStudentList();
  297 +
  298 + List<Integer> getRoomBySchoolId(@Param("schoolId") Integer schoolId,@Param("groupId") Integer groupId);
  299 +
  300 + List<StudentBean> getStudentByRoomIds(@Param("schoolId") Integer schoolId,@Param("pIdList") List<Integer> pIdList);
297 } 301 }
cloud/haikangface/src/main/java/com/sincere/haikangface/fegin/HaikangfaceFegin.java
1 -package com.sincere.haikangface.fegin;  
2 -  
3 -//import com.sincere.common.dto.smartCampus.SZ_AttendanceDto;  
4 -  
5 -import org.springframework.cloud.openfeign.FeignClient;  
6 -import org.springframework.web.bind.annotation.RequestBody;  
7 -import org.springframework.web.bind.annotation.RequestMapping;  
8 -import org.springframework.web.bind.annotation.RequestMethod;  
9 -import org.springframework.web.bind.annotation.RequestParam;  
10 -  
11 -import java.util.List;  
12 -  
13 -@FeignClient("smartCampusSearch")  
14 -public interface HaikangfaceFegin {  
15 -  
16 -// @RequestMapping(method = RequestMethod.GET,value = "attendance/selectAttendaceWithId")  
17 -// SZ_AttendanceDto selectAttendaceWithId(@RequestParam("clint_id") String clint_id); 1 +//package com.sincere.haikangface.fegin;
18 // 2 //
19 -// @RequestMapping(method = RequestMethod.GET,value = "attendance/getAttensWithIsKaoqin")  
20 -// List<SZ_AttendanceDto> getAttensWithIsKaoqin(@RequestParam("IsKaoqin") int isKaoqin);  
21 -  
22 -} 3 +////import com.sincere.common.dto.smartCampus.SZ_AttendanceDto;
  4 +//
  5 +//import org.springframework.cloud.openfeign.FeignClient;
  6 +//import org.springframework.web.bind.annotation.RequestBody;
  7 +//import org.springframework.web.bind.annotation.RequestMapping;
  8 +//import org.springframework.web.bind.annotation.RequestMethod;
  9 +//import org.springframework.web.bind.annotation.RequestParam;
  10 +//
  11 +//import java.util.List;
  12 +//
  13 +//@FeignClient("smartCampusSearch")
  14 +//public interface HaikangfaceFegin {
  15 +//
  16 +//// @RequestMapping(method = RequestMethod.GET,value = "attendance/selectAttendaceWithId")
  17 +//// SZ_AttendanceDto selectAttendaceWithId(@RequestParam("clint_id") String clint_id);
  18 +////
  19 +//// @RequestMapping(method = RequestMethod.GET,value = "attendance/getAttensWithIsKaoqin")
  20 +//// List<SZ_AttendanceDto> getAttensWithIsKaoqin(@RequestParam("IsKaoqin") int isKaoqin);
  21 +//
  22 +//}
cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java
@@ -91,7 +91,7 @@ public interface UserOperateService { @@ -91,7 +91,7 @@ public interface UserOperateService {
91 * @param deviceIds 91 * @param deviceIds
92 * @return 92 * @return
93 */ 93 */
94 - Result sendFaceForNoSend(Integer schoolId,Integer studentType,String sex,Integer userType,String deviceIds); 94 + Result sendFaceForNoSend(Integer schoolId,Integer studentType,String sex,Integer userType,String deviceIds,Integer groupId);
95 95
96 /** 96 /**
97 * 补发单个人脸至指定设备 97 * 补发单个人脸至指定设备
@@ -131,6 +131,8 @@ public interface UserOperateService { @@ -131,6 +131,8 @@ public interface UserOperateService {
131 */ 131 */
132 Result sendFaceByClassId(Integer schoolId,String classIds,String deviceIds,Integer studentType,String sex,Integer isCheck); 132 Result sendFaceByClassId(Integer schoolId,String classIds,String deviceIds,Integer studentType,String sex,Integer isCheck);
133 133
  134 + Result sendFaceByGroupId(Integer schoolId,Integer groupId,String deviceIds);
  135 +
134 /** 136 /**
135 * 删除指定学校下的人脸 137 * 删除指定学校下的人脸
136 * @param schoolId 138 * @param schoolId
cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/BaseService.java
@@ -2,7 +2,6 @@ package com.sincere.haikangface.service.impl; @@ -2,7 +2,6 @@ package com.sincere.haikangface.service.impl;
2 2
3 3
4 import com.google.common.util.concurrent.ThreadFactoryBuilder; 4 import com.google.common.util.concurrent.ThreadFactoryBuilder;
5 -import com.google.gson.Gson;  
6 import com.sincere.haikangface.CMSServer; 5 import com.sincere.haikangface.CMSServer;
7 import com.sincere.haikangface.async.AsyncTask; 6 import com.sincere.haikangface.async.AsyncTask;
8 import com.sincere.haikangface.async.SendUserAsync; 7 import com.sincere.haikangface.async.SendUserAsync;
@@ -15,7 +14,6 @@ import com.sincere.haikangface.enums.EnumSzBusinessType; @@ -15,7 +14,6 @@ import com.sincere.haikangface.enums.EnumSzBusinessType;
15 import com.sincere.haikangface.utils.CompressPic; 14 import com.sincere.haikangface.utils.CompressPic;
16 import com.sincere.haikangface.utils.DateUtils; 15 import com.sincere.haikangface.utils.DateUtils;
17 import com.sincere.haikangface.utils.FileUtils; 16 import com.sincere.haikangface.utils.FileUtils;
18 -import com.sincere.haikangface.utils.HttpUtil;  
19 import com.sincere.haikangface.xiananDao.SendRecordDao; 17 import com.sincere.haikangface.xiananDao.SendRecordDao;
20 import lombok.extern.slf4j.Slf4j; 18 import lombok.extern.slf4j.Slf4j;
21 import org.apache.commons.lang3.StringUtils; 19 import org.apache.commons.lang3.StringUtils;
@@ -28,8 +26,6 @@ import java.io.File; @@ -28,8 +26,6 @@ import java.io.File;
28 import java.text.SimpleDateFormat; 26 import java.text.SimpleDateFormat;
29 import java.util.*; 27 import java.util.*;
30 import java.util.concurrent.*; 28 import java.util.concurrent.*;
31 -import java.util.function.Function;  
32 -import java.util.function.Predicate;  
33 import java.util.stream.Collectors; 29 import java.util.stream.Collectors;
34 30
35 /** 31 /**
@@ -518,13 +514,35 @@ public class BaseService { @@ -518,13 +514,35 @@ public class BaseService {
518 * @return 514 * @return
519 */ 515 */
520 public List<StudentBean> getStudentListByGroup(Integer schoolId,Integer studentType,String sex,Integer groupId) { 516 public List<StudentBean> getStudentListByGroup(Integer schoolId,Integer studentType,String sex,Integer groupId) {
521 - List<StudentBean> students = userDao.getStudentCardGroup(schoolId,studentType,sex,groupId); 517 + List<Integer> sexList = new ArrayList<>();
  518 + if(StringUtils.isNotBlank(sex)){
  519 + String[] msg = sex.split(",");
  520 + for(String s : msg){
  521 + sexList.add(Integer.valueOf(s));
  522 + }
  523 + }
  524 + List<StudentBean> students = userDao.getStudentCardGroup(schoolId,studentType,sexList,groupId);
522 //去重重复数据 525 //去重重复数据
523 List<StudentBean> studentList = students.stream().collect(Collectors.collectingAndThen( 526 List<StudentBean> studentList = students.stream().collect(Collectors.collectingAndThen(
524 Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); 527 Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new));
525 return studentList; 528 return studentList;
526 } 529 }
527 530
  531 +
  532 + public List<StudentBean> getStudentListByGroupId(Integer schoolId,Integer groupId) {
  533 + List<Integer> rooms = userDao.getRoomBySchoolId(schoolId,groupId);
  534 + if(!CollectionUtils.isEmpty(rooms)) {
  535 + List<Integer> pIdlIst = rooms.stream().distinct().collect(Collectors.toList());
  536 + List<StudentBean> studentBeans = userDao.getStudentByRoomIds(schoolId,pIdlIst);
  537 + //去重重复数据
  538 + List<StudentBean> studentList = studentBeans.stream().collect(Collectors.collectingAndThen(
  539 + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new));
  540 + return studentList;
  541 + }
  542 + return null;
  543 + }
  544 +
  545 +
528 /** 546 /**
529 * 获取学校下的老师数据信息 547 * 获取学校下的老师数据信息
530 * @param schoolId 548 * @param schoolId
cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java
@@ -304,15 +304,24 @@ public class UserOperateServiceImpl implements UserOperateService { @@ -304,15 +304,24 @@ public class UserOperateServiceImpl implements UserOperateService {
304 if (userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId ==null) { 304 if (userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId ==null) {
305 studentBeanList = baseService.getStudentList(schoolId,studentType,sex); 305 studentBeanList = baseService.getStudentList(schoolId,studentType,sex);
306 }else if(userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId !=null){ 306 }else if(userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId !=null){
307 - sex = sex.split(",")[0];  
308 studentBeanList = baseService.getStudentListByGroup(schoolId,studentType,sex,groupId); 307 studentBeanList = baseService.getStudentListByGroup(schoolId,studentType,sex,groupId);
309 } 308 }
310 log.info("统计共有下发用户数量:{}",studentBeanList.size()); 309 log.info("统计共有下发用户数量:{}",studentBeanList.size());
311 //设备类型 310 //设备类型
312 Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); 311 Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0));
313 if(clintType.intValue()== 22 || clintType.intValue()== 29){ 312 if(clintType.intValue()== 22 || clintType.intValue()== 29){
314 - //发送大华设备  
315 - HttpUtil.uploadDHImg(String.valueOf(schoolId),userType,sendFaceDto.getsNos(),studentType,sex); 313 + if(groupId ==null){
  314 + //发送大华设备
  315 + HttpUtil.uploadDHImg(String.valueOf(schoolId),userType,sendFaceDto.getsNos(),studentType,sex);
  316 + }else{
  317 + Integer finalUserType = userType;
  318 + studentBeanList.stream().forEach(s->{
  319 + String userId = s.getUser_id();
  320 + deviceList.stream().forEach(deviceId ->{
  321 + this.againSendFace(userId,deviceId, finalUserType);
  322 + });
  323 + });
  324 + }
316 } 325 }
317 if(clintType.intValue()== 18 || clintType.intValue()== 28){ 326 if(clintType.intValue()== 18 || clintType.intValue()== 28){
318 //发送海康设备:异步执行 327 //发送海康设备:异步执行
@@ -618,7 +627,7 @@ public class UserOperateServiceImpl implements UserOperateService { @@ -618,7 +627,7 @@ public class UserOperateServiceImpl implements UserOperateService {
618 } 627 }
619 628
620 @Override 629 @Override
621 - public Result sendFaceForNoSend(Integer schoolId,Integer studentType,String sex,Integer userType,String deviceIds) { 630 + public Result sendFaceForNoSend(Integer schoolId,Integer studentType,String sex,Integer userType,String deviceIds,Integer groupId) {
622 //若未传下发,则下发该学校下所有设备 631 //若未传下发,则下发该学校下所有设备
623 //下发设备集合 632 //下发设备集合
624 List<String> idLists = null; 633 List<String> idLists = null;
@@ -628,18 +637,21 @@ public class UserOperateServiceImpl implements UserOperateService { @@ -628,18 +637,21 @@ public class UserOperateServiceImpl implements UserOperateService {
628 String[] deviceArr = deviceIds.split(","); 637 String[] deviceArr = deviceIds.split(",");
629 idLists= new ArrayList<>(Arrays.asList(deviceArr)); 638 idLists= new ArrayList<>(Arrays.asList(deviceArr));
630 } 639 }
  640 + if(CollectionUtils.isEmpty(idLists)){
  641 + log.warn("该学校下未查询到下发设备");
  642 + return ResultGenerator.genFailResult("该学校下未查询到下发设备");
  643 + }
  644 +
631 //下发用户集合 645 //下发用户集合
632 List<StudentBean> list = null; 646 List<StudentBean> list = null;
633 - if(userType.intValue() ==2){ 647 + if (userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId ==null) {
634 list = baseService.getStudentList(schoolId,studentType,sex); 648 list = baseService.getStudentList(schoolId,studentType,sex);
  649 + }else if(userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId !=null){
  650 + list = baseService.getStudentListByGroup(schoolId,studentType,sex,groupId);
635 } 651 }
636 - if(userType.intValue()==1){ 652 + if(userType.intValue()==EnumSzBusinessType.EnumUserType.TEACHER.code){
637 list = baseService.getTeacherList(schoolId); 653 list = baseService.getTeacherList(schoolId);
638 } 654 }
639 - if(StringUtils.isBlank(deviceIds)){  
640 - log.warn("该学校下未查询到下发设备");  
641 - return ResultGenerator.genFailResult("该学校下未查询到下发设备");  
642 - }  
643 //异步执行下发 655 //异步执行下发
644 sendFaceForNoSend(schoolId,userType,list,idLists); 656 sendFaceForNoSend(schoolId,userType,list,idLists);
645 int fileSize = list.size(); 657 int fileSize = list.size();
@@ -657,7 +669,7 @@ public class UserOperateServiceImpl implements UserOperateService { @@ -657,7 +669,7 @@ public class UserOperateServiceImpl implements UserOperateService {
657 669
658 670
659 @Async 671 @Async
660 - protected void sendFaceForNoSend(Integer schoolId,Integer userType,List<StudentBean> studentList,List<String> deviceIds){ 672 + public void sendFaceForNoSend(Integer schoolId,Integer userType,List<StudentBean> studentList,List<String> deviceIds){
661 log.info("统计共有:"+studentList.size()+"张卡,"+deviceIds.size()+"台设备." ); 673 log.info("统计共有:"+studentList.size()+"张卡,"+deviceIds.size()+"台设备." );
662 for(StudentBean studentBean : studentList){ 674 for(StudentBean studentBean : studentList){
663 for(String sno : deviceIds){ 675 for(String sno : deviceIds){
@@ -999,6 +1011,42 @@ public class UserOperateServiceImpl implements UserOperateService { @@ -999,6 +1011,42 @@ public class UserOperateServiceImpl implements UserOperateService {
999 } 1011 }
1000 1012
1001 @Override 1013 @Override
  1014 + public Result sendFaceByGroupId(Integer schoolId,Integer groupId,String deviceIds) {
  1015 + //下发设备集合
  1016 + List<String> deviceList = new ArrayList<>();
  1017 + if(StringUtils.isBlank(deviceIds)){
  1018 + deviceList = deviceDao.selectDeviceBySchoolId(schoolId);
  1019 + }else{
  1020 + String[] deviceArr = deviceIds.split(",");
  1021 + deviceList= new ArrayList<>(Arrays.asList(deviceArr));
  1022 + }
  1023 + //根据类型获取下发用户信息
  1024 + List<StudentBean> studentBeanList = baseService.getStudentListByGroupId(schoolId,groupId);
  1025 + log.info("统计共有下发用户数量:{}",studentBeanList.size());
  1026 + //设备类型
  1027 + Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0));
  1028 +// if(clintType.intValue()== 22 || clintType.intValue()== 29){
  1029 +// //发送大华设备
  1030 +// HttpUtil.uploadDHImgByClassId(String.valueOf(schoolId),deviceIds);
  1031 +// }
  1032 + if(clintType.intValue()== 18 || clintType.intValue()== 28){
  1033 + //发送海康设备:异步执行
  1034 + baseService.sendUserFaceByAsyncThread(schoolId,2,studentBeanList,deviceList);
  1035 + }
  1036 + int fileSize = studentBeanList.size();
  1037 + int clintNum = deviceList.size();
  1038 + //下发所用时长
  1039 + int timeLength = new Double(clintNum * fileSize * 0.06).intValue();
  1040 + //下发截止时间
  1041 + String dateStr = baseService.getTime(fileSize,clintNum,timeLength);
  1042 + Map map = new HashMap();
  1043 + map.put("timeLength",timeLength);
  1044 + map.put("afterDate",dateStr);
  1045 + map.put("fileSize",fileSize);
  1046 + return ResultGenerator.genSuccessResult(objectMapper.toJson(map));
  1047 + }
  1048 +
  1049 + @Override
1002 public Result deleteFaceBySchoolId(Integer schoolId, String deviceIds) { 1050 public Result deleteFaceBySchoolId(Integer schoolId, String deviceIds) {
1003 //下发设备集合 1051 //下发设备集合
1004 List<String> deviceList = null; 1052 List<String> deviceList = null;
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java
@@ -114,7 +114,6 @@ public class HttpUtil { @@ -114,7 +114,6 @@ public class HttpUtil {
114 } 114 }
115 try{ 115 try{
116 String url = "http://120.26.116.253:8089/file/uploadImg"; 116 String url = "http://120.26.116.253:8089/file/uploadImg";
117 -// String url = "http://127.0.0.1:8089/file/uploadImg";  
118 RestTemplate restTemplate = new RestTemplate(); 117 RestTemplate restTemplate = new RestTemplate();
119 HttpHeaders headers = new HttpHeaders(); 118 HttpHeaders headers = new HttpHeaders();
120 MediaType mediaType = MediaType.parseMediaType(MediaType.MULTIPART_FORM_DATA_VALUE); 119 MediaType mediaType = MediaType.parseMediaType(MediaType.MULTIPART_FORM_DATA_VALUE);
@@ -249,8 +248,7 @@ public class HttpUtil { @@ -249,8 +248,7 @@ public class HttpUtil {
249 */ 248 */
250 public static void sendDHPermission(PermissionDHBean permissionBean) { 249 public static void sendDHPermission(PermissionDHBean permissionBean) {
251 try{ 250 try{
252 - String url = "http://121.40.109.21:8991/file/sendPermission";  
253 -// String url = "http://127.0.0.1:8991/file/sendPermission"; 251 + String url = "http://116.62.155.137:8991/file/sendPermission";
254 RestTemplate restTemplate = new RestTemplate(); 252 RestTemplate restTemplate = new RestTemplate();
255 HttpHeaders headers = new HttpHeaders(); 253 HttpHeaders headers = new HttpHeaders();
256 MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE); 254 MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE);
@@ -289,7 +287,6 @@ public class HttpUtil { @@ -289,7 +287,6 @@ public class HttpUtil {
289 */ 287 */
290 public static void uploadDHImg(String schoolId,Integer userType,String deviceIds,Integer studentType,String sex) { 288 public static void uploadDHImg(String schoolId,Integer userType,String deviceIds,Integer studentType,String sex) {
291 String api = "http://114.55.30.100:8991/operate/sendUserFaces"; 289 String api = "http://114.55.30.100:8991/operate/sendUserFaces";
292 -// String api = "http://127.0.0.1:8991/user/sendFaces";  
293 try { 290 try {
294 String url = String.format(api +"?schoolId=%s&userType=%s&deviceIds=%s&studentType=%s&sex=%s",schoolId,userType,deviceIds,studentType,sex); 291 String url = String.format(api +"?schoolId=%s&userType=%s&deviceIds=%s&studentType=%s&sex=%s",schoolId,userType,deviceIds,studentType,sex);
295 RestTemplate restTemplate = new RestTemplate(); 292 RestTemplate restTemplate = new RestTemplate();
@@ -319,7 +316,7 @@ public class HttpUtil { @@ -319,7 +316,7 @@ public class HttpUtil {
319 * @param deviceId 316 * @param deviceId
320 */ 317 */
321 public static void deleteDHFace(Integer schoolId,String cardNum,String deviceId) { 318 public static void deleteDHFace(Integer schoolId,String cardNum,String deviceId) {
322 - String api = "http://121.40.109.21:8991/operate/deleteFaceByCard"; 319 + String api = "http://116.62.155.137:8991/operate/deleteFaceByCard";
323 try { 320 try {
324 String url = String.format(api +"?schoolId=%s&cardNum=%s&deviceId=%s",schoolId,cardNum,deviceId); 321 String url = String.format(api +"?schoolId=%s&cardNum=%s&deviceId=%s",schoolId,cardNum,deviceId);
325 RestTemplate restTemplate = new RestTemplate(); 322 RestTemplate restTemplate = new RestTemplate();
cloud/haikangface/src/main/java/com/sincere/haikangface/xiananDao/SendRecordDao.java
@@ -36,10 +36,10 @@ public interface SendRecordDao { @@ -36,10 +36,10 @@ public interface SendRecordDao {
36 @Select("select a.deviceID,a.Num,a.Name from Face_SendFail a inner join Face_SendSuccess b on a.deviceID = b.deviceID where a.schoolId = 1030 and a.num = b.Num") 36 @Select("select a.deviceID,a.Num,a.Name from Face_SendFail a inner join Face_SendSuccess b on a.deviceID = b.deviceID where a.schoolId = 1030 and a.num = b.Num")
37 List<SendRecordBean> getSuccessAndFail(); 37 List<SendRecordBean> getSuccessAndFail();
38 38
39 - @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp})") 39 + @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp},#{schoolId})")
40 void addFaceRecoder(@Param("deviceId") String deviceId, @Param("user_id") String user_id, @Param("name") String name, 40 void addFaceRecoder(@Param("deviceId") String deviceId, @Param("user_id") String user_id, @Param("name") String name,
41 @Param("imgurl") String imgurl, @Param("inOrOut") int inOrOut, @Param("time") String time, 41 @Param("imgurl") String imgurl, @Param("inOrOut") int inOrOut, @Param("time") String time,
42 - @Param("cardNum") String cardNum, @Param("temp") String currTemperature); 42 + @Param("cardNum") String cardNum, @Param("temp") String currTemperature,@Param("schoolId") int schoolId);
43 43
44 @Insert("insert into SZ_AttendanceRecordsSS201911 values(#{user_id},#{school_id},#{customerId},#{usertype},#{card_num},#{card_type},#{outof},#{intime},#{cid}," + 44 @Insert("insert into SZ_AttendanceRecordsSS201911 values(#{user_id},#{school_id},#{customerId},#{usertype},#{card_num},#{card_type},#{outof},#{intime},#{cid}," +
45 "#{func_no},#{head_image},#{classId},#{s},#{attendance_id},#{name},#{mobile},#{class_name},#{sex},#{student_type},#{systime})") 45 "#{func_no},#{head_image},#{classId},#{s},#{attendance_id},#{name},#{mobile},#{class_name},#{sex},#{student_type},#{systime})")
cloud/haikangface/src/main/resources/application.yaml
@@ -38,14 +38,14 @@ ribbon: @@ -38,14 +38,14 @@ ribbon:
38 ReadTimeout: 50000 38 ReadTimeout: 50000
39 ConnectTimeout: 5000 39 ConnectTimeout: 5000
40 40
41 -eureka:  
42 - instance:  
43 - hostname: localhost  
44 - lease-expiration-duration-in-seconds: 60  
45 - lease-renewal-interval-in-seconds: 10  
46 - client:  
47 - service-url:  
48 - defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ 41 +#eureka:
  42 +# instance:
  43 +# hostname: localhost
  44 +# lease-expiration-duration-in-seconds: 60
  45 +# lease-renewal-interval-in-seconds: 10
  46 +# client:
  47 +# service-url:
  48 +# defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/
49 # defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ 49 # defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
50 50
51 mybatis: 51 mybatis:
cloud/haikangface/src/main/resources/mapper/usermapper.xml
@@ -102,8 +102,19 @@ @@ -102,8 +102,19 @@
102 </select> 102 </select>
103 103
104 <select id="getStudentCardGroup" resultType="com.sincere.haikangface.bean.StudentBean"> 104 <select id="getStudentCardGroup" resultType="com.sincere.haikangface.bean.StudentBean">
105 - select * from SZ_V_School_Student where sex = #{sex} and student_type = #{studentType} and  
106 - class_id in(select DISTINCT ClassId from SZ_OneCardGrouping where Pid = #{groupId} and state = 1) 105 + select * from SZ_V_School_Student where school_id = #{schoolId}
  106 + <if test="studentType != null">
  107 + and student_type = #{studentType}
  108 + </if>
  109 + <if test="sexList != null and sexList.size() >0">
  110 + and sex in
  111 + <foreach item="item" collection="sexList" separator="," open="(" close=")" index="">
  112 + #{item}
  113 + </foreach>
  114 + </if>
  115 + <if test="groupId != null">
  116 + and class_id in(select DISTINCT ClassId from SZ_OneCardGrouping where Pid = #{groupId} and state = 1)
  117 + </if>
107 </select> 118 </select>
108 119
109 <select id="getTeacherList" resultType="com.sincere.haikangface.bean.StudentBean"> 120 <select id="getTeacherList" resultType="com.sincere.haikangface.bean.StudentBean">
@@ -188,4 +199,26 @@ @@ -188,4 +199,26 @@
188 <update id="updateStudent" parameterType="java.lang.Integer"> 199 <update id="updateStudent" parameterType="java.lang.Integer">
189 update sz_student_bak set status = 1 where id = #{id} 200 update sz_student_bak set status = 1 where id = #{id}
190 </update> 201 </update>
  202 +
  203 + <select id="getRoomBySchoolId" resultType="java.lang.Integer">
  204 + select Id from ss_room where schoolId = #{schoolId} and pId = #{groupId}
  205 + </select>
  206 +
  207 + <select id="getStudentByRoomIds" resultType="com.sincere.haikangface.bean.StudentBean">
  208 + SELECT
  209 + ssu.*
  210 + from SS_RoomNumber ssr
  211 + LEFT JOIN SZ_V_School_Student ssu ON ssr.studentId = ssu.student_id
  212 + <where>
  213 + <if test="schoolId != null">
  214 + and ssr.schoolId = #{schoolId}
  215 + </if>
  216 + <if test="pIdList != null and pIdList.size()>0">
  217 + and ssr.Pid in
  218 + <foreach item="item" collection="pIdList" open="(" separator="," close=")" index="">
  219 + #{item}
  220 + </foreach>
  221 + </if>
  222 + </where>
  223 + </select>
191 </mapper> 224 </mapper>
@@ -27,24 +27,24 @@ @@ -27,24 +27,24 @@
27 <modules> 27 <modules>
28 <module>server1</module> 28 <module>server1</module>
29 <module>server2</module> 29 <module>server2</module>
30 - <module>autho</module> 30 +<!-- <module>autho</module>-->
31 <module>common</module> 31 <module>common</module>
32 - <module>getaway</module>  
33 - <!--<module>haikang</module>-->  
34 -<!-- <module>dahua</module>-->  
35 - <!-- <module>consumer</module>-->  
36 -<!-- <module>haikangface</module>-->  
37 - <!-- <module>search_independence</module>-->  
38 - <!-- <module>search_smartCampus</module>-->  
39 - <!-- <module>search_xiaoan</module>--> 32 + <module>dahua</module>
  33 + <module>haikangface</module>
  34 +<!-- <module>quartz</module>-->
  35 +<!-- <module>getaway</module>-->
  36 +<!-- <module>haikang</module>-->
  37 +<!-- <module>consumer</module>-->
  38 +<!-- <module>search_independence</module>-->
  39 +<!-- <module>search_smartCampus</module>-->
  40 +<!-- <module>search_xiaoan</module>-->
40 <!-- <module>mypulsar</module>--> 41 <!-- <module>mypulsar</module>-->
41 - <!-- <module>weigeng</module>-->  
42 - <!-- <module>independence</module>-->  
43 - <module>quartz</module>  
44 -<!-- <module>zkAttendance</module>-->  
45 - <module>user_search</module> 42 +<!-- <module>weigeng</module>-->
  43 +<!-- <module>independence</module>-->
  44 +<!-- <module>zkAttendance</module>-->
  45 +<!-- <module>user_search</module>-->
46 <module>fIle-center</module> 46 <module>fIle-center</module>
47 - <module>RibbonConsume</module> 47 +<!-- <module>RibbonConsume</module>-->
48 </modules> 48 </modules>
49 49
50 <dependencies> 50 <dependencies>
cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java
@@ -23,7 +23,7 @@ public class SyncJob { @@ -23,7 +23,7 @@ public class SyncJob {
23 YXYReadService yxyReadService ; 23 YXYReadService yxyReadService ;
24 24
25 @Scheduled(cron = "30 1 22 * * ? ") 25 @Scheduled(cron = "30 1 22 * * ? ")
26 -// @Scheduled(cron = "* 20 9 * * ? ") 26 +// @Scheduled(fixedDelay = 120 * 60 * 1000)
27 public void Sync(){ 27 public void Sync(){
28 //翼校通的同步 之后还有钉钉的同步等等 28 //翼校通的同步 之后还有钉钉的同步等等
29 yxyReadService.sync(); 29 yxyReadService.sync();
cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java
@@ -112,7 +112,8 @@ public class YXYReadService { @@ -112,7 +112,8 @@ public class YXYReadService {
112 logger.info("------------------当天更新完成"); 112 logger.info("------------------当天更新完成");
113 try{ 113 try{
114 String today = DateUtils.getToday(DateUtils.format1)+" 22:00:00" ; 114 String today = DateUtils.getToday(DateUtils.format1)+" 22:00:00" ;
115 - int number = Integer.parseInt(readFileContent("D:\\cloud\\config.txt")); 115 +// int number = Integer.parseInt(readFileContent("E:\\cloud\\config.txt"));
  116 + int number = 300000;
116 logger.info("开始执行删除同步数据------:时间:"+today); 117 logger.info("开始执行删除同步数据------:时间:"+today);
117 int count = yxyService.selectCount(today); 118 int count = yxyService.selectCount(today);
118 logger.info("跑批总数:count: "+ count); 119 logger.info("跑批总数:count: "+ count);
cloud/quartz/src/main/resources/application.yaml
@@ -32,12 +32,12 @@ mybatis: @@ -32,12 +32,12 @@ mybatis:
32 ribbon: 32 ribbon:
33 ReadTimeout: 50000 33 ReadTimeout: 50000
34 ConnectTimeout: 5000 34 ConnectTimeout: 5000
35 -eureka:  
36 - instance:  
37 - hostname: localhost  
38 - lease-expiration-duration-in-seconds: 60  
39 - lease-renewal-interval-in-seconds: 10  
40 - client:  
41 - service-url:  
42 - defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ 35 +#eureka:
  36 +# instance:
  37 +# hostname: localhost
  38 +# lease-expiration-duration-in-seconds: 60
  39 +# lease-renewal-interval-in-seconds: 10
  40 +# client:
  41 +# service-url:
  42 +# defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/
43 43