diff --git a/cloud/dahua/pom.xml b/cloud/dahua/pom.xml index 809ccb4..763242c 100644 --- a/cloud/dahua/pom.xml +++ b/cloud/dahua/pom.xml @@ -156,35 +156,37 @@ org.springframework.boot spring-boot-maven-plugin + + + + repackage + + + true ZIP - - - - - - - + + + + nothing + nothing + + - org.apache.maven.plugins maven-dependency-plugin - - copy-dependencies + copy package copy-dependencies - ${project.build.directory}/libs - true - true - true + ${project.build.directory}/lib 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 87340b6..ab67650 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/DahuaApplication.java +++ b/cloud/dahua/src/main/java/com/example/dahua/DahuaApplication.java @@ -37,7 +37,7 @@ import java.util.concurrent.TimeUnit; @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class}) @SpringBootApplication @MapperScan("com.example.dahua.dao") -@EnableDiscoveryClient +//@EnableDiscoveryClient @EnableScheduling public class DahuaApplication { 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 3562fd6..ddba9a9 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/MyTask.java +++ b/cloud/dahua/src/main/java/com/example/dahua/MyTask.java @@ -420,18 +420,19 @@ public class MyTask implements ApplicationRunner { String userId = new String(msg.szUserID).trim(); //开门错误码 int messageCode = msg.nErrorCode; - log.info("设备ID: {}, 开门用户ID: {}, 开门卡号: {}",szSn,userId,card); //处理心跳 saveAttendanceService(szSn,"",0,1); + String newCard = ""; try { if (!StringUtils.isEmpty(card)) { //根据卡号获取卡身份信息 CardBean cardBean = myTaskUtil.userDao.getCards(card); if(cardBean ==null){ - card = cardNo(card); - cardBean = myTaskUtil.userDao.getCards(card); + newCard = cardNo(card); + cardBean = myTaskUtil.userDao.getCards(newCard); } if(cardBean ==null){ + log.info("卡号有误!!设备ID: 【{}】,上报卡号: 【{}】",szSn,card); return -1; } // 缓存抓拍人脸 @@ -450,6 +451,7 @@ public class MyTask implements ApplicationRunner { if(attendanceBean !=null){ if(!StringUtils.isEmpty(attendanceBean.getSchool_id())){ int schoolId = Integer.parseInt(attendanceBean.getSchool_id()); + String clintName = attendanceBean.getName(); //门禁进出类型:1进0出 int eventType = 0; if(StringUtils.isEmpty(attendanceBean.getOutOrIn())){ @@ -460,30 +462,42 @@ public class MyTask implements ApplicationRunner { //刷卡时间 String eventTime = DateUtils.date2String(new Date(), DateUtils.format2); //老师 + TeacherBean teacherBean = null; if (cardBean.getType() == 0) { //老师人脸信息,保存人脸记录表 - TeacherBean teacherBean = myTaskUtil.userDao.getTeacherWithId(cardBean.getUser_id()); + teacherBean = myTaskUtil.userDao.getTeacherWithId(cardBean.getUser_id()); +// log.info("设备信息【{}】,学生卡信息【{}】",new Gson().toJson(attendanceBean),new Gson().toJson(teacherBean)); myTaskUtil.sendRecordDao.addFaceRecoder(szSn, teacherBean.getUser_id(), teacherBean.getName(), snapPicPath,eventType, - eventTime, card,messageCode ==20?EnumSendFaceType.TIME_INTERVAL_ERROR.message:""); + eventTime, card,messageCode ==20?EnumSendFaceType.TIME_INTERVAL_ERROR.message:"",schoolId); } UserInfoBean userInfoBean = null; if (cardBean.getType() == 2) { //学生人脸信息,保存人脸记录表 userInfoBean = myTaskUtil.userDao.getStudentWithid(cardBean.getUser_id()); myTaskUtil.sendRecordDao.addFaceRecoder(szSn, userInfoBean.getUser_id(), userInfoBean.getName(), snapPicPath,eventType, - eventTime, card,messageCode ==20?EnumSendFaceType.TIME_INTERVAL_ERROR.message:""); + eventTime, card,messageCode ==20?EnumSendFaceType.TIME_INTERVAL_ERROR.message:"",schoolId); } - - // TODO 考勤记录 //刷卡结果,1表示成功, 0表示失败 int status = msg.bStatus; - + String result = status == 1 ? "开门成功" : "开门失败"; + String openMsg = eventType ==1 ? "进" : "出" ; if(szSn.startsWith("ytj")) { + log.info("出入信息:学校【{}】,开门方向:【{}】",schoolId,status); // 艺校考勤OA if(schoolId == 12 && status ==1){ - int intOrOut = eventType ==1? 1 : 2; - sendRecordToSXYX(userInfoBean.getName(),userInfoBean.getUser_id(),intOrOut,eventTime); + int intOrOut = eventType ==1 ? 1 : 2; + if(userInfoBean !=null){ + log.info("【{}】出入信息:方向【{}】,开门结果【{}】",userInfoBean.getName(),openMsg,result); + sendRecordToSXYX(userInfoBean.getName(),userInfoBean.getUser_id(),intOrOut,eventTime,""); + } + if(teacherBean != null){ + sendRecordToSXYX(teacherBean.getName(),teacherBean.getUser_id(),intOrOut,eventTime,getScene(clintName)); + } }else{ +// if(schoolId == 489){ +// eventTime = DateUtils.date2String(DateUtils.getDateByTime(-5,new Date()), DateUtils.format2); +//// log.info("设备ID: {},刷卡结果:{},开门方向: {}, 开门用户: {}, 开门卡号: {}",szSn,result,openMsg,userInfoBean.getName(),userInfoBean.getStudent_num()); +// } //保存考勤记录 kaoQinRecord(status, eventType, card, szSn, eventTime,lAnalyzerHandle); } @@ -499,6 +513,19 @@ public class MyTask implements ApplicationRunner { } } + private static String getScene(String sceneName){ + if(sceneName.contains("B")){ + return "B"; + } + if(sceneName.contains("C")){ + return "C"; + } + if(sceneName.contains("D")){ + return "D"; + } + return ""; + } + /** * 根据ip和port获取设备id * @@ -771,7 +798,7 @@ public class MyTask implements ApplicationRunner { return true; } - public static void sendRecordToSXYX(String name,String userId,int intOrOut,String eventTime) { + public static void sendRecordToSXYX(String name,String userId,int intOrOut,String eventTime,String scene) { try { String api = "http://yixiao.198.hmkj.com.cn/index.php/Attend/send"; RestTemplate restTemplate = new RestTemplate(); @@ -780,14 +807,15 @@ public class MyTask implements ApplicationRunner { map.add("xuehao", userId); map.add("time", eventTime); map.add("state", intOrOut); + map.add("loudong", scene); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); HttpEntity> param = new HttpEntity<>(map, headers); ResponseEntity response = restTemplate.postForEntity(api, param, String.class); String body = response.getBody(); - log.info("请求艺校OA,返回信息: " + body); + log.info("请求艺校OA,用户名称【{}】,返回信息【{}】 ",name,body); } catch (Exception e) { - sendRecordToSXYX(name,userId,intOrOut,eventTime); + sendRecordToSXYX(name,userId,intOrOut,eventTime,scene); } } } diff --git a/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask2.java b/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask2.java index dc2d288..4aef892 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask2.java +++ b/cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask2.java @@ -217,7 +217,7 @@ public class SendUserInfoTask2 { log.error("学生类型【{}】无对应权限通道。",studentType); channel = getAuthChannelByClassId(Integer.parseInt(schoolId),Integer.parseInt(classId),deviceId); } - if(StringUtils.isEmpty(channel)){ + if(StringUtils.isEmpty(channel) && !schoolId.equals("1485")){ //设备不在线 sendRecordBean.setFailType(EnumSendFaceType.AUTH_NOT_SET.code); sendRecordBean.setFailContent(EnumSendFaceType.AUTH_NOT_SET.message); diff --git a/cloud/dahua/src/main/java/com/example/dahua/control/UserOperateController.java b/cloud/dahua/src/main/java/com/example/dahua/control/UserOperateController.java index 8b7f595..b83b03c 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/control/UserOperateController.java +++ b/cloud/dahua/src/main/java/com/example/dahua/control/UserOperateController.java @@ -124,4 +124,20 @@ public class UserOperateController { public Result sendFaceByThread(@RequestBody YxSendFaceDto sendFaceDto) { return userOperateService.sendYxUserFace(sendFaceDto); } + + @ApiOperation(value = "下方指定卡号") + @RequestMapping(value = "sendCard", method = RequestMethod.POST) + public void exportFace(@RequestParam("cardNum") String cardNum,@RequestParam("schoolId") Integer schoolId, + @RequestParam("deviceIds") String deviceIds){ + userOperateService.sendCard(cardNum,schoolId,deviceIds); + } +// @ApiOperation(value = "按班级指定下发") +// @RequestMapping(value = "sendFaceByRoomId", method = RequestMethod.POST) +// public void exportFace(@RequestParam("schoolId") Integer schoolId, +// @RequestParam(value = "classIds",required = false) String classIds, +// @RequestParam(value = "deviceIds",required = false) String deviceIds){ +//// userOperateService.sendFaceByRoomId(schoolId,classIds,deviceIds); +// r +// } + } diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/UserOperateService.java b/cloud/dahua/src/main/java/com/example/dahua/service/UserOperateService.java index e610e7b..22dbc5a 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/service/UserOperateService.java +++ b/cloud/dahua/src/main/java/com/example/dahua/service/UserOperateService.java @@ -38,4 +38,6 @@ public interface UserOperateService { * @return */ Result sendYxUserFace(YxSendFaceDto sendFaceDto); + + void sendCard(String cardNum,Integer schoolId,String deviceIds); } diff --git a/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java b/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java index 2922239..b7d071a 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java +++ b/cloud/dahua/src/main/java/com/example/dahua/service/imp/UserOperateServiceImpl.java @@ -19,6 +19,7 @@ import com.example.dahua.utils.DateUtils; import com.example.dahua.utils.HttpUtils; import com.example.dahua.xiananDao.SearchMapper; import com.example.dahua.xiananDao.SendRecordDao; +import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -301,4 +302,26 @@ public class UserOperateServiceImpl implements UserOperateService { sendFace(dtoList,deviceList,schoolId,2); return ResultGenerator.genSuccessResult(); } + + @Override + public void sendCard(String cardNum, Integer schoolId, String deviceIds) { + //下发设备集合 + String[] deviceArr = deviceIds.split(","); + List deviceList= new ArrayList<>(Arrays.asList(deviceArr)); + if(deviceList.size()<1){ + return; + } + deviceList.stream().forEach(s -> { + //登录设备 + NetSDKLib.LLong loginHandleLong = MyTask.lLongSendMap.get(s); + StudentBean studentBean = userDao.getStudentWithCard(cardNum,schoolId); + log.info("学生信息: {},设备信息: {}",new Gson().toJson(studentBean),loginHandleLong); + if(studentBean !=null && loginHandleLong != null){ + String userId = studentBean.getUser_id(); + //修改用户信息 + int bUserFlags = GateModule2.addCardForMore(userId,cardNum,loginHandleLong,1); + log.info("下发结果:" + bUserFlags); + } + }); + } } diff --git a/cloud/dahua/src/main/java/com/example/dahua/utils/DateUtils.java b/cloud/dahua/src/main/java/com/example/dahua/utils/DateUtils.java index 3387063..6e3307c 100644 --- a/cloud/dahua/src/main/java/com/example/dahua/utils/DateUtils.java +++ b/cloud/dahua/src/main/java/com/example/dahua/utils/DateUtils.java @@ -82,4 +82,9 @@ public class DateUtils { return cal.getTime(); } + public static void main(String[] args) { + System.out.println(getDateByTime(3,new Date())); + System.out.println(getDateByTime(-3,new Date())); + } + } 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 855bc7b..8397a92 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 @@ -40,7 +40,8 @@ public class HttpUtils { return false; } String targPath = FilePath.picPathComp + studentCode + ".jpg"; - String url = "http://121.40.109.21:8991/file/uploadImg"; +// String url = "http://121.40.109.21:8991/file/uploadImg"; + String url = "http://116.62.155.137:8991/file/uploadImg"; MultiValueMap multivaluedMap = new LinkedMultiValueMap<>(); HttpHeaders headers = new HttpHeaders(); RestTemplate restTemplate = new RestTemplate(); @@ -88,8 +89,8 @@ public class HttpUtils { String targetPath = FilePath.picPathComp + studentCode + FilePath.fileSuffix; - String url = "http://121.40.109.21:8991/operate/sendUserAndImg"; - //String url = "http://localhost:8991/file/uploadImg"; +// String url = "http://121.40.109.21:8991/operate/sendUserAndImg"; + String url = "http://116.62.155.137:8991/operate/sendUserAndImg"; MultiValueMap multivaluedMap = new LinkedMultiValueMap<>(); HttpHeaders headers = new HttpHeaders(); @@ -148,7 +149,7 @@ public class HttpUtils { } public static void deleteFace(Integer schoolId) { - String url = "http://121.40.109.21:8991/operate/deleteFailFace?schoolId=" + schoolId; + String url = "http://116.62.155.137:8991/operate/deleteFailFace?schoolId=" + schoolId; RestTemplate restTemplate = new RestTemplate(); ResponseEntity result = restTemplate.getForEntity(url, Boolean.class); System.out.println("发生请求21服务删除人脸,请求地址: +" + url+ "返回信息: "+ result.getBody()); @@ -160,8 +161,8 @@ public class HttpUtils { * @return */ public static boolean sendPermission(PermissionBean permissionBean) { - String url = "http://121.40.109.21:8991/file/sendPermission"; -// String url = "http://localhost:8991/file/sendPermission"; +// String url = "http://121.40.109.21:8991/file/sendPermission"; + String url = "http://116.62.155.137:8991/file/sendPermission"; RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); @@ -185,11 +186,8 @@ public class HttpUtils { public static void sendPermission2HK(PermissionFaceBean permissionFaceBean) { String url = "http://114.55.30.100:8089/facereco/sendPermiss"; PermissionBean permissionBean = permissionFaceBean.getPermissionBean(); - if (null!=permissionBean){ - PermissionHKBean permissionHKBean = new PermissionHKBean(); - permissionHKBean.setDeviceIds(permissionBean.getDeviceIds()); permissionHKBean.setSchoolId(permissionFaceBean.getSchoolId()+""); permissionHKBean.setUserType("2"); @@ -208,8 +206,6 @@ public class HttpUtils { ResponseEntity responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); System.out.println("海康设备下发权限:" + responseEntity.getBody()); - } - } } 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 38a91b9..a7b2891 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 @@ -73,10 +73,10 @@ public interface SendRecordDao { @Select("select * from Face_SendFail where schoolId = #{schoolId} and userType = #{userType} and deviceID = #{deviceID}") List getFaceFails(@Param("userType") int userType, @Param("schoolId") int schoolId, @Param("deviceID") String deviceID); - @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp})") + @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp},#{schoolId})") 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,@Param("temp")String temp); + @Param("cardNum") String cardNum,@Param("temp")String temp,@Param("schoolId")int schoolId); @Select("select DISTINCT deviceID from Face_SendFail where schoolId = #{schoolId} ") List getDeviceIds(@Param("schoolId") String schoolId); diff --git a/cloud/dahua/src/main/resources/bootstrap.yml b/cloud/dahua/src/main/resources/bootstrap.yml index 577db97..404f6f4 100644 --- a/cloud/dahua/src/main/resources/bootstrap.yml +++ b/cloud/dahua/src/main/resources/bootstrap.yml @@ -18,23 +18,23 @@ spring: # show-details: always #eureka client配置 -eureka: - client: - serviceUrl: +#eureka: +# client: +# serviceUrl: # defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ - defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ +# defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ #http://134.224.249.33:1111/eureka/ 正式库 #http://134.224.249.33:1111/eureka/ 测试库 #http://127.0.0.1:8761/eureka,http://127.0.0.1:8762/eureka - registry-fetch-interval-seconds: 5 - instance-info-replication-interval-seconds: 10 +# registry-fetch-interval-seconds: 5 +# instance-info-replication-interval-seconds: 10 instance: # prefer-ip-address: false - instance-id: ${spring.application.name} +# instance-id: ${spring.application.name} # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}} #固定端口 # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${randomServerPort.value[5000,5005]}} #随机端口 - lease-renewal-interval-in-seconds: 10 #每隔几秒告诉eureka服务器我还存活,用于心跳检测 - lease-expiration-duration-in-seconds: 10 #如果心跳检测一直没有发送,10秒后会从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: localhost +# 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/main/resources/logback-spring.xml b/cloud/dahua/src/main/resources/logback-spring.xml index fdeee89..294230b 100644 --- a/cloud/dahua/src/main/resources/logback-spring.xml +++ b/cloud/dahua/src/main/resources/logback-spring.xml @@ -8,7 +8,10 @@ - + + + + diff --git a/cloud/fIle-center/pom.xml b/cloud/fIle-center/pom.xml index 7848d9c..b29fea4 100644 --- a/cloud/fIle-center/pom.xml +++ b/cloud/fIle-center/pom.xml @@ -89,7 +89,22 @@ - + + org.apache.maven.plugins + maven-dependency-plugin + + + copy + package + + copy-dependencies + + + ${project.build.directory}/lib + + + + file-center diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/FileApplication.java b/cloud/fIle-center/src/main/java/com/sincere/file/FileApplication.java index 58eac03..de2358e 100644 --- a/cloud/fIle-center/src/main/java/com/sincere/file/FileApplication.java +++ b/cloud/fIle-center/src/main/java/com/sincere/file/FileApplication.java @@ -6,7 +6,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.context.annotation.Configuration; -@EnableDiscoveryClient +//@EnableDiscoveryClient @SpringBootApplication public class FileApplication { diff --git a/cloud/fIle-center/src/main/resources/bootstrap.yml b/cloud/fIle-center/src/main/resources/bootstrap.yml index bf07120..da02965 100644 --- a/cloud/fIle-center/src/main/resources/bootstrap.yml +++ b/cloud/fIle-center/src/main/resources/bootstrap.yml @@ -22,23 +22,23 @@ spring: # show-details: always #eureka client配置 -eureka: - client: - serviceUrl: - # defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ - defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ - #http://134.224.249.33:1111/eureka/ 正式库 - #http://134.224.249.33:1111/eureka/ 测试库 - #http://127.0.0.1:8761/eureka,http://127.0.0.1:8762/eureka - registry-fetch-interval-seconds: 5 - instance-info-replication-interval-seconds: 10 - instance: - # prefer-ip-address: false - instance-id: ${spring.application.name} - # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}} #固定端口 - # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${randomServerPort.value[5000,5005]}} #随机端口 - 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: 121.40.30.78 -# status-page-url: http://${spring.cloud.client.ip-address}:${randomServerPort.value[5000,5005]}/document.html # ${server.port}为该服务的端口号 \ No newline at end of file +#eureka: +# client: +# serviceUrl: +# # defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ +# defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ +# #http://134.224.249.33:1111/eureka/ 正式库 +# #http://134.224.249.33:1111/eureka/ 测试库 +# #http://127.0.0.1:8761/eureka,http://127.0.0.1:8762/eureka +# registry-fetch-interval-seconds: 5 +# instance-info-replication-interval-seconds: 10 +# instance: +# # prefer-ip-address: false +# instance-id: ${spring.application.name} +# # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}} #固定端口 +# # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${randomServerPort.value[5000,5005]}} #随机端口 +# 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: 121.40.30.78 +## 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/haikangface/pom.xml b/cloud/haikangface/pom.xml index 24a2ec3..5c12df6 100644 --- a/cloud/haikangface/pom.xml +++ b/cloud/haikangface/pom.xml @@ -169,42 +169,37 @@ org.springframework.boot spring-boot-maven-plugin + + + + repackage + + + true ZIP - - - - - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - true + + + + nothing + nothing + + org.apache.maven.plugins maven-dependency-plugin - - copy-dependencies + copy package copy-dependencies - ${project.build.directory}/libs - true - true - true + ${project.build.directory}/lib 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 8aa8e5a..6857d4a 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java @@ -64,10 +64,10 @@ public class CMSServer implements ApplicationRunner { // 存储设备登录句柄 static Map map = new HashMap<>(); - //114.55.30.100 - //120.26.116.253 -// private String ip_cloud = "114.55.30.100"; private String ip_cloud = "114.55.30.100"; + private String strPath = "E://EhomePicServer/"; +// private String ip_cloud = "120.26.116.253"; +// private String strPath = "D://EhomePicServer/"; private String ip; { @@ -299,7 +299,6 @@ public class CMSServer implements ApplicationRunner { //文件保存回调函数(下载) public class PSS_Storage_Callback implements HCEHomeSS.EHomeSSStorageCallBack { public boolean invoke(NativeLong iHandle, String pFileName, Pointer pFileBuf, int dwFileLen, Pointer pFilePath, Pointer pUser) { - String strPath = "E://EhomePicServer/"; //若此目录不存在,则创建之 File myPath = new File(strPath); if (!myPath.exists()) { @@ -340,7 +339,7 @@ public class CMSServer implements ApplicationRunner { deviceId = isQJFileName.substring(start, end); } //发送看板 - sendUserInfoToKB(strFilePathFile, deviceId); +// sendUserInfoToKB(strFilePathFile, deviceId); } } catch (FileNotFoundException e) { log.error("处理人脸机抓拍文件异常,错误信息:{}",e); @@ -353,6 +352,10 @@ public class CMSServer implements ApplicationRunner { } } + public static void main(String[] args) { + System.out.println(StringUtils.isNotBlank("944")); + } + private AlarmUtils alarmUtils;//报警工具类 /** * 报警监听回调 @@ -375,7 +378,7 @@ public class CMSServer implements ApplicationRunner { @Override public void callBack(String minorType, String deviceID, String cardNo, String time, String picDataUrlId, String currTemperature) { saveAttendance(deviceID); - AttendanceBean attendanceBean = deviceDao.selectDevice(deviceID); + AttendanceBean attendanceBean = deviceDao.selectDeviceInfo(deviceID); int outOrIn = attendanceBean.getOutOrIn(); String schoolId = attendanceBean.getSchool_id(); switch (minorType) { @@ -385,6 +388,9 @@ public class CMSServer implements ApplicationRunner { saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn); //944柯桥实验幼儿园,海康一体机考勤签到 if(StringUtils.isNotBlank(schoolId)){ + if(Integer.parseInt(schoolId)== 944){ + log.info("柯桥实验考勤:考勤卡号:{} "+ cardNo); + } if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){ kaoQinRecord(outOrIn,cardNo,deviceID,time); } @@ -402,6 +408,9 @@ public class CMSServer implements ApplicationRunner { saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn); //944柯桥实验幼儿园,海康一体机考勤签到 if(StringUtils.isNotBlank(schoolId)){ + if(Integer.parseInt(schoolId)== 944){ + log.info("柯桥实验考勤:考勤卡号:{} "+ cardNo); + } if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){ kaoQinRecord(outOrIn,cardNo,deviceID,time); } @@ -412,6 +421,9 @@ public class CMSServer implements ApplicationRunner { saveFaceRecoder(deviceID, cardNo, time, picDataUrlId, currTemperature,outOrIn); //944柯桥实验幼儿园,海康一体机考勤签到 if(StringUtils.isNotBlank(schoolId)){ + if(Integer.parseInt(schoolId)== 944){ + log.info("柯桥实验考勤:考勤卡号:{} "+ cardNo); + } if(Integer.parseInt(schoolId)== 944 && !StringUtils.isEmpty(cardNo) && isNumeric(cardNo)){ kaoQinRecord(outOrIn,cardNo,deviceID,time); } @@ -444,9 +456,9 @@ public class CMSServer implements ApplicationRunner { checkIn.setCheckTime(eventTime); sendRecordDao.checkIn(checkIn); if (checkIn.getIsSuccess() == 1) { - log.info("考勤成功: checkIn: {}, 方向:{}", JsonUtils.nonDefaultMapper().toJson(checkIn),outOrIn == 1 ? "门" : "出门"); + log.info("柯桥实验幼儿园考勤成功: checkIn: {}, 方向:{}", JsonUtils.nonDefaultMapper().toJson(checkIn),outOrIn == 1 ? "门" : "出门"); } else { - log.info("考勤失败: checkIn: {}, 方向:{}",JsonUtils.nonDefaultMapper().toJson(checkIn),outOrIn == 1 ? "进门" : "出门"); + log.info("柯桥实验幼儿园考勤失败: checkIn: {}, 方向:{}",JsonUtils.nonDefaultMapper().toJson(checkIn),outOrIn == 1 ? "进门" : "出门"); } } @@ -494,7 +506,7 @@ public class CMSServer implements ApplicationRunner { } //记录签到成功的流水 sendRecordDao.addFaceRecoder(face_recoder.getDeviceId(), face_recoder.getUser_id(), face_recoder.getName(), - face_recoder.getImgurl(), face_recoder.getInOrOut(), face_recoder.getTime(), face_recoder.getCardNum(), currTemperature); + face_recoder.getImgurl(), face_recoder.getInOrOut(), face_recoder.getTime(), face_recoder.getCardNum(), currTemperature,schoolId); } else { //教师点名 isTeacher(cardNo, deviceID,null); diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/HaikangfaceApplication.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/HaikangfaceApplication.java index 51d88c4..acef905 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/HaikangfaceApplication.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/HaikangfaceApplication.java @@ -13,8 +13,8 @@ import org.springframework.scheduling.annotation.EnableAsync; @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class}) @SpringBootApplication -@EnableDiscoveryClient -@EnableFeignClients(basePackages = "com.sincere.haikangface.fegin") +//@EnableDiscoveryClient +//@EnableFeignClients(basePackages = "com.sincere.haikangface.fegin") @EnableAsync public class HaikangfaceApplication { 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 90ef43c..9505592 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 @@ -9,7 +9,6 @@ import com.sincere.haikangface.bean.StudentBean; import com.sincere.haikangface.bean.face.PermissionBean; import com.sincere.haikangface.bean.face.UserAndPermission; import com.sincere.haikangface.dao.UserDao; -import com.sincere.haikangface.fegin.HaikangfaceFegin; import com.sincere.haikangface.service.impl.BaseService; import com.sincere.haikangface.utils.CompressPic; import com.sincere.haikangface.utils.FileUtils; @@ -41,8 +40,8 @@ public class UserControl { @Autowired UserDao userDao; - @Autowired - HaikangfaceFegin haikangfaceFegin; +// @Autowired +// HaikangfaceFegin haikangfaceFegin; @Autowired CMSServer cmsServer; diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java index e544c37..5335f15 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserOperateController.java @@ -101,8 +101,9 @@ public class UserOperateController { public Result sendFaceForNoSend(@RequestParam("schoolId") Integer schoolId,@RequestParam("userType") Integer userType, @RequestParam(value = "studentType",required = false) Integer studentType, @RequestParam(value = "sex",required = false) String sex, - @RequestParam(value = "deviceIds",required = false) String deviceIds) { - return userOperateService.sendFaceForNoSend(schoolId,studentType,sex,userType,deviceIds); + @RequestParam(value = "deviceIds",required = false) String deviceIds, + @RequestParam(value = "groupId",required = false) Integer groupId) { + return userOperateService.sendFaceForNoSend(schoolId,studentType,sex,userType,deviceIds,groupId); } @ApiOperation(value = "补发单个人脸至指定设备2.0") @@ -139,6 +140,14 @@ public class UserOperateController { return userOperateService.sendFaceByClassId(schoolId,classIds,deviceIds,studentType,sex,isCheck); } + @ApiOperation(value = "根据宿舍分组下发") + @RequestMapping(value = "sendFaceByGroupId", method = RequestMethod.POST) + public Result sendFaceByThread(@RequestParam("schoolId") Integer schoolId, + @RequestParam("groupId") Integer groupId, + @RequestParam(value = "deviceIds",required = false) String deviceIds) { + return userOperateService.sendFaceByGroupId(schoolId,groupId,deviceIds); + } + @ApiOperation(value = "删除指定学校下人脸照片") @RequestMapping(value = "deleteBySchoolId", method = RequestMethod.POST) public Result exportFace(@RequestParam("schoolId") Integer schoolId, @@ -146,7 +155,6 @@ public class UserOperateController { return userOperateService.deleteFaceBySchoolId(schoolId,deviceIds); } - @ApiOperation(value = "删除指定学校下无效人脸") @RequestMapping(value = "checkFaceSend", method = RequestMethod.GET) public void checkFaceSend(){ userOperateService.checkFaceSend(); diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/DeviceDao.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/DeviceDao.java index c00b3eb..64240b8 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/DeviceDao.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/dao/DeviceDao.java @@ -28,6 +28,9 @@ public interface DeviceDao { @Select("select clint_id from SZ_Attendance where clint_id = #{clint_id}") AttendanceBean selectDevice(@Param("clint_id") String clint_id); + @Select("select * from SZ_Attendance where clint_id = #{clint_id}") + AttendanceBean selectDeviceInfo(@Param("clint_id") String clint_id); + // @Select("select * from SZ_Attendance where IsKaoqin = #{IsKaoqin}") // List getAttensWithIsKaoqin(@Param("IsKaoqin")int IsKaoqin); 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 3632aea..ab8818c 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 @@ -264,7 +264,7 @@ public interface UserDao { List getStudentList(@Param("schoolId") Integer schoolId,@Param("studentType")Integer studentType,@Param("sex") List sex); - List getStudentCardGroup(@Param("schoolId") Integer schoolId,@Param("studentType")Integer studentType,@Param("sex") String sex,@Param("groupId")Integer groupId); + List getStudentCardGroup(@Param("schoolId") Integer schoolId,@Param("studentType")Integer studentType,@Param("sexList") List sexList,@Param("groupId")Integer groupId); List getTeacherList(@Param("schoolId") Integer schoolId); @@ -294,4 +294,8 @@ public interface UserDao { void updateStudent(@Param("id") Integer id); List selectStudentList(); + + List getRoomBySchoolId(@Param("schoolId") Integer schoolId,@Param("groupId") Integer groupId); + + List getStudentByRoomIds(@Param("schoolId") Integer schoolId,@Param("pIdList") List pIdList); } diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/fegin/HaikangfaceFegin.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/fegin/HaikangfaceFegin.java index 85747ee..ab444cd 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/fegin/HaikangfaceFegin.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/fegin/HaikangfaceFegin.java @@ -1,22 +1,22 @@ -package com.sincere.haikangface.fegin; - -//import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; - -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; - -import java.util.List; - -@FeignClient("smartCampusSearch") -public interface HaikangfaceFegin { - -// @RequestMapping(method = RequestMethod.GET,value = "attendance/selectAttendaceWithId") -// SZ_AttendanceDto selectAttendaceWithId(@RequestParam("clint_id") String clint_id); +//package com.sincere.haikangface.fegin; // -// @RequestMapping(method = RequestMethod.GET,value = "attendance/getAttensWithIsKaoqin") -// List getAttensWithIsKaoqin(@RequestParam("IsKaoqin") int isKaoqin); - -} +////import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; +// +//import org.springframework.cloud.openfeign.FeignClient; +//import org.springframework.web.bind.annotation.RequestBody; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RequestMethod; +//import org.springframework.web.bind.annotation.RequestParam; +// +//import java.util.List; +// +//@FeignClient("smartCampusSearch") +//public interface HaikangfaceFegin { +// +//// @RequestMapping(method = RequestMethod.GET,value = "attendance/selectAttendaceWithId") +//// SZ_AttendanceDto selectAttendaceWithId(@RequestParam("clint_id") String clint_id); +//// +//// @RequestMapping(method = RequestMethod.GET,value = "attendance/getAttensWithIsKaoqin") +//// List getAttensWithIsKaoqin(@RequestParam("IsKaoqin") int isKaoqin); +// +//} diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java index cf3b72f..81e55d4 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/UserOperateService.java @@ -91,7 +91,7 @@ public interface UserOperateService { * @param deviceIds * @return */ - Result sendFaceForNoSend(Integer schoolId,Integer studentType,String sex,Integer userType,String deviceIds); + Result sendFaceForNoSend(Integer schoolId,Integer studentType,String sex,Integer userType,String deviceIds,Integer groupId); /** * 补发单个人脸至指定设备 @@ -131,6 +131,8 @@ public interface UserOperateService { */ Result sendFaceByClassId(Integer schoolId,String classIds,String deviceIds,Integer studentType,String sex,Integer isCheck); + Result sendFaceByGroupId(Integer schoolId,Integer groupId,String deviceIds); + /** * 删除指定学校下的人脸 * @param schoolId diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/BaseService.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/BaseService.java index 3284f7c..4ac211b 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/BaseService.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/BaseService.java @@ -2,7 +2,6 @@ package com.sincere.haikangface.service.impl; import com.google.common.util.concurrent.ThreadFactoryBuilder; -import com.google.gson.Gson; import com.sincere.haikangface.CMSServer; import com.sincere.haikangface.async.AsyncTask; import com.sincere.haikangface.async.SendUserAsync; @@ -15,7 +14,6 @@ import com.sincere.haikangface.enums.EnumSzBusinessType; import com.sincere.haikangface.utils.CompressPic; import com.sincere.haikangface.utils.DateUtils; import com.sincere.haikangface.utils.FileUtils; -import com.sincere.haikangface.utils.HttpUtil; import com.sincere.haikangface.xiananDao.SendRecordDao; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -28,8 +26,6 @@ import java.io.File; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.*; -import java.util.function.Function; -import java.util.function.Predicate; import java.util.stream.Collectors; /** @@ -518,13 +514,35 @@ public class BaseService { * @return */ public List getStudentListByGroup(Integer schoolId,Integer studentType,String sex,Integer groupId) { - List students = userDao.getStudentCardGroup(schoolId,studentType,sex,groupId); + List sexList = new ArrayList<>(); + if(StringUtils.isNotBlank(sex)){ + String[] msg = sex.split(","); + for(String s : msg){ + sexList.add(Integer.valueOf(s)); + } + } + List students = userDao.getStudentCardGroup(schoolId,studentType,sexList,groupId); //去重重复数据 List studentList = students.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); return studentList; } + + public List getStudentListByGroupId(Integer schoolId,Integer groupId) { + List rooms = userDao.getRoomBySchoolId(schoolId,groupId); + if(!CollectionUtils.isEmpty(rooms)) { + List pIdlIst = rooms.stream().distinct().collect(Collectors.toList()); + List studentBeans = userDao.getStudentByRoomIds(schoolId,pIdlIst); + //去重重复数据 + List studentList = studentBeans.stream().collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StudentBean::getStudent_num))), ArrayList::new)); + return studentList; + } + return null; + } + + /** * 获取学校下的老师数据信息 * @param schoolId diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java index 3c5bfdd..73cbbc7 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/service/impl/UserOperateServiceImpl.java @@ -304,15 +304,24 @@ public class UserOperateServiceImpl implements UserOperateService { if (userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId ==null) { studentBeanList = baseService.getStudentList(schoolId,studentType,sex); }else if(userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId !=null){ - sex = sex.split(",")[0]; studentBeanList = baseService.getStudentListByGroup(schoolId,studentType,sex,groupId); } log.info("统计共有下发用户数量:{}",studentBeanList.size()); //设备类型 Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); if(clintType.intValue()== 22 || clintType.intValue()== 29){ - //发送大华设备 - HttpUtil.uploadDHImg(String.valueOf(schoolId),userType,sendFaceDto.getsNos(),studentType,sex); + if(groupId ==null){ + //发送大华设备 + HttpUtil.uploadDHImg(String.valueOf(schoolId),userType,sendFaceDto.getsNos(),studentType,sex); + }else{ + Integer finalUserType = userType; + studentBeanList.stream().forEach(s->{ + String userId = s.getUser_id(); + deviceList.stream().forEach(deviceId ->{ + this.againSendFace(userId,deviceId, finalUserType); + }); + }); + } } if(clintType.intValue()== 18 || clintType.intValue()== 28){ //发送海康设备:异步执行 @@ -618,7 +627,7 @@ public class UserOperateServiceImpl implements UserOperateService { } @Override - public Result sendFaceForNoSend(Integer schoolId,Integer studentType,String sex,Integer userType,String deviceIds) { + public Result sendFaceForNoSend(Integer schoolId,Integer studentType,String sex,Integer userType,String deviceIds,Integer groupId) { //若未传下发,则下发该学校下所有设备 //下发设备集合 List idLists = null; @@ -628,18 +637,21 @@ public class UserOperateServiceImpl implements UserOperateService { String[] deviceArr = deviceIds.split(","); idLists= new ArrayList<>(Arrays.asList(deviceArr)); } + if(CollectionUtils.isEmpty(idLists)){ + log.warn("该学校下未查询到下发设备"); + return ResultGenerator.genFailResult("该学校下未查询到下发设备"); + } + //下发用户集合 List list = null; - if(userType.intValue() ==2){ + if (userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId ==null) { list = baseService.getStudentList(schoolId,studentType,sex); + }else if(userType == EnumSzBusinessType.EnumUserType.STUDENT.code && groupId !=null){ + list = baseService.getStudentListByGroup(schoolId,studentType,sex,groupId); } - if(userType.intValue()==1){ + if(userType.intValue()==EnumSzBusinessType.EnumUserType.TEACHER.code){ list = baseService.getTeacherList(schoolId); } - if(StringUtils.isBlank(deviceIds)){ - log.warn("该学校下未查询到下发设备"); - return ResultGenerator.genFailResult("该学校下未查询到下发设备"); - } //异步执行下发 sendFaceForNoSend(schoolId,userType,list,idLists); int fileSize = list.size(); @@ -657,7 +669,7 @@ public class UserOperateServiceImpl implements UserOperateService { @Async - protected void sendFaceForNoSend(Integer schoolId,Integer userType,List studentList,List deviceIds){ + public void sendFaceForNoSend(Integer schoolId,Integer userType,List studentList,List deviceIds){ log.info("统计共有:"+studentList.size()+"张卡,"+deviceIds.size()+"台设备." ); for(StudentBean studentBean : studentList){ for(String sno : deviceIds){ @@ -999,6 +1011,42 @@ public class UserOperateServiceImpl implements UserOperateService { } @Override + public Result sendFaceByGroupId(Integer schoolId,Integer groupId,String deviceIds) { + //下发设备集合 + List deviceList = new ArrayList<>(); + if(StringUtils.isBlank(deviceIds)){ + deviceList = deviceDao.selectDeviceBySchoolId(schoolId); + }else{ + String[] deviceArr = deviceIds.split(","); + deviceList= new ArrayList<>(Arrays.asList(deviceArr)); + } + //根据类型获取下发用户信息 + List studentBeanList = baseService.getStudentListByGroupId(schoolId,groupId); + log.info("统计共有下发用户数量:{}",studentBeanList.size()); + //设备类型 + Integer clintType = userDao.getClintTypeByDeviceId(deviceList.get(0)); +// if(clintType.intValue()== 22 || clintType.intValue()== 29){ +// //发送大华设备 +// HttpUtil.uploadDHImgByClassId(String.valueOf(schoolId),deviceIds); +// } + if(clintType.intValue()== 18 || clintType.intValue()== 28){ + //发送海康设备:异步执行 + baseService.sendUserFaceByAsyncThread(schoolId,2,studentBeanList,deviceList); + } + int fileSize = studentBeanList.size(); + int clintNum = deviceList.size(); + //下发所用时长 + int timeLength = new Double(clintNum * fileSize * 0.06).intValue(); + //下发截止时间 + String dateStr = baseService.getTime(fileSize,clintNum,timeLength); + Map map = new HashMap(); + map.put("timeLength",timeLength); + map.put("afterDate",dateStr); + map.put("fileSize",fileSize); + return ResultGenerator.genSuccessResult(objectMapper.toJson(map)); + } + + @Override public Result deleteFaceBySchoolId(Integer schoolId, String deviceIds) { //下发设备集合 List deviceList = null; diff --git a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java index bd08264..a39dd90 100644 --- a/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java +++ b/cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java @@ -114,7 +114,6 @@ public class HttpUtil { } try{ String url = "http://120.26.116.253:8089/file/uploadImg"; -// String url = "http://127.0.0.1:8089/file/uploadImg"; RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); MediaType mediaType = MediaType.parseMediaType(MediaType.MULTIPART_FORM_DATA_VALUE); @@ -249,8 +248,7 @@ public class HttpUtil { */ public static void sendDHPermission(PermissionDHBean permissionBean) { try{ - String url = "http://121.40.109.21:8991/file/sendPermission"; -// String url = "http://127.0.0.1:8991/file/sendPermission"; + String url = "http://116.62.155.137:8991/file/sendPermission"; RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); MediaType mediaType = MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE); @@ -289,7 +287,6 @@ public class HttpUtil { */ public static void uploadDHImg(String schoolId,Integer userType,String deviceIds,Integer studentType,String sex) { String api = "http://114.55.30.100:8991/operate/sendUserFaces"; -// String api = "http://127.0.0.1:8991/user/sendFaces"; try { String url = String.format(api +"?schoolId=%s&userType=%s&deviceIds=%s&studentType=%s&sex=%s",schoolId,userType,deviceIds,studentType,sex); RestTemplate restTemplate = new RestTemplate(); @@ -319,7 +316,7 @@ public class HttpUtil { * @param deviceId */ public static void deleteDHFace(Integer schoolId,String cardNum,String deviceId) { - String api = "http://121.40.109.21:8991/operate/deleteFaceByCard"; + String api = "http://116.62.155.137:8991/operate/deleteFaceByCard"; try { String url = String.format(api +"?schoolId=%s&cardNum=%s&deviceId=%s",schoolId,cardNum,deviceId); RestTemplate restTemplate = new RestTemplate(); 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 f5fa17f..11253c7 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 @@ -36,10 +36,10 @@ public interface SendRecordDao { @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") List getSuccessAndFail(); - @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp})") + @Insert("insert into Face_Recoder values(#{deviceId},#{user_id},#{name},#{imgurl},#{inOrOut},#{time},#{cardNum},#{temp},#{schoolId})") 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, @Param("temp") String currTemperature); + @Param("cardNum") String cardNum, @Param("temp") String currTemperature,@Param("schoolId") int schoolId); @Insert("insert into SZ_AttendanceRecordsSS201911 values(#{user_id},#{school_id},#{customerId},#{usertype},#{card_num},#{card_type},#{outof},#{intime},#{cid}," + "#{func_no},#{head_image},#{classId},#{s},#{attendance_id},#{name},#{mobile},#{class_name},#{sex},#{student_type},#{systime})") diff --git a/cloud/haikangface/src/main/resources/application.yaml b/cloud/haikangface/src/main/resources/application.yaml index 6a95634..ac282f1 100644 --- a/cloud/haikangface/src/main/resources/application.yaml +++ b/cloud/haikangface/src/main/resources/application.yaml @@ -38,14 +38,14 @@ ribbon: ReadTimeout: 50000 ConnectTimeout: 5000 -eureka: - instance: - hostname: localhost - lease-expiration-duration-in-seconds: 60 - lease-renewal-interval-in-seconds: 10 - client: - service-url: - defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ +#eureka: +# instance: +# hostname: localhost +# lease-expiration-duration-in-seconds: 60 +# lease-renewal-interval-in-seconds: 10 +# client: +# service-url: +# defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ # defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ mybatis: diff --git a/cloud/haikangface/src/main/resources/mapper/usermapper.xml b/cloud/haikangface/src/main/resources/mapper/usermapper.xml index d6b5b58..a2e4a67 100644 --- a/cloud/haikangface/src/main/resources/mapper/usermapper.xml +++ b/cloud/haikangface/src/main/resources/mapper/usermapper.xml @@ -102,8 +102,19 @@ + select Id from ss_room where schoolId = #{schoolId} and pId = #{groupId} + + + diff --git a/cloud/pom.xml b/cloud/pom.xml index c394d46..3ede0bb 100644 --- a/cloud/pom.xml +++ b/cloud/pom.xml @@ -27,24 +27,24 @@ server1 server2 - autho + common - getaway - - - - - - - + dahua + haikangface + + + + + + + - - - quartz - - user_search + + + + fIle-center - RibbonConsume + diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java index dbd7d5a..51d1894 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java @@ -23,7 +23,7 @@ public class SyncJob { YXYReadService yxyReadService ; @Scheduled(cron = "30 1 22 * * ? ") -// @Scheduled(cron = "* 20 9 * * ? ") +// @Scheduled(fixedDelay = 120 * 60 * 1000) public void Sync(){ //翼校通的同步 之后还有钉钉的同步等等 yxyReadService.sync(); diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java index 1eb2b98..8b1a6d8 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java @@ -112,7 +112,8 @@ public class YXYReadService { logger.info("------------------当天更新完成"); try{ String today = DateUtils.getToday(DateUtils.format1)+" 22:00:00" ; - int number = Integer.parseInt(readFileContent("D:\\cloud\\config.txt")); +// int number = Integer.parseInt(readFileContent("E:\\cloud\\config.txt")); + int number = 300000; logger.info("开始执行删除同步数据------:时间:"+today); int count = yxyService.selectCount(today); logger.info("跑批总数:count: "+ count); diff --git a/cloud/quartz/src/main/resources/application.yaml b/cloud/quartz/src/main/resources/application.yaml index 19b14e8..3c4d8c9 100644 --- a/cloud/quartz/src/main/resources/application.yaml +++ b/cloud/quartz/src/main/resources/application.yaml @@ -32,12 +32,12 @@ mybatis: ribbon: ReadTimeout: 50000 ConnectTimeout: 5000 -eureka: - instance: - hostname: localhost - lease-expiration-duration-in-seconds: 60 - lease-renewal-interval-in-seconds: 10 - client: - service-url: - defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ +#eureka: +# instance: +# hostname: localhost +# lease-expiration-duration-in-seconds: 60 +# lease-renewal-interval-in-seconds: 10 +# client: +# service-url: +# defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ -- libgit2 0.21.0