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