소스 검색

添加大屏访客预约

liu 2 년 전
부모
커밋
29c72779fb
19개의 변경된 파일465개의 추가작업 그리고 87개의 파일을 삭제
  1. 23 0
      src/main/java/com/template/api/SmartPushConfigControllerAPI.java
  2. 10 0
      src/main/java/com/template/api/SmartVisitorControllerAPI.java
  3. 0 21
      src/main/java/com/template/auto/controller/SmartPushConfigController.java
  4. 92 16
      src/main/java/com/template/controller/HikvisionController.java
  5. 90 26
      src/main/java/com/template/controller/SmartFaceDiscernController.java
  6. 51 0
      src/main/java/com/template/controller/SmartPushConfigController.java
  7. 123 1
      src/main/java/com/template/controller/SmartVisitorController.java
  8. 4 2
      src/main/java/com/template/auto/mapper/SmartPushConfigMapper.java
  9. 31 0
      src/main/java/com/template/model/dto/ParentsScreenDto.java
  10. 0 6
      src/main/java/com/template/model/pojo/SmartFaceDiscern.java
  11. 0 6
      src/main/java/com/template/model/pojo/SmartFaceDiscernTest.java
  12. 1 1
      src/main/java/com/template/auto/model/SmartPushConfig.java
  13. 12 0
      src/main/java/com/template/model/vo/SmartVisitorScreenVo.java
  14. 2 2
      src/main/java/com/template/auto/services/SmartPushConfigService.java
  15. 2 0
      src/main/java/com/template/services/SmartUserService.java
  16. 2 0
      src/main/java/com/template/services/SmartVisitorService.java
  17. 4 4
      src/main/java/com/template/auto/service/impl/SmartPushConfigServiceImpl.java
  18. 12 2
      src/main/java/com/template/services/impl/SmartUserServiceImpl.java
  19. 6 0
      src/main/java/com/template/services/impl/SmartVisitorServiceImpl.java

+ 23 - 0
src/main/java/com/template/api/SmartPushConfigControllerAPI.java

@@ -0,0 +1,23 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartPushConfig;
+import com.template.model.pojo.SmartVisitorRestsConfig;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@RequestMapping("/api/smartPushConfig")
+public interface SmartPushConfigControllerAPI {
+
+    @GetMapping(value = "/list")
+    @ApiOperation(value = "展示推送配置", notes = "展示推送配置", httpMethod = "GET")
+    CommonResult list();
+
+    @PostMapping(value = "/update")
+    @ApiOperation(value = "推送配置修改", notes = "推送配置修改", httpMethod = "POST")
+    CommonResult update(@RequestBody SmartPushConfig smartPushConfig);
+
+}

+ 10 - 0
src/main/java/com/template/api/SmartVisitorControllerAPI.java

@@ -1,6 +1,7 @@
 package com.template.api;
 package com.template.api;
 
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.template.model.dto.ParentsScreenDto;
 import com.template.model.pojo.SmartVisitor;
 import com.template.model.pojo.SmartVisitor;
 import com.template.model.request.otherAppointmentRequest;
 import com.template.model.request.otherAppointmentRequest;
 import com.template.model.request.parentsAppointmentRequest;
 import com.template.model.request.parentsAppointmentRequest;
@@ -139,4 +140,13 @@ public interface SmartVisitorControllerAPI {
     @ApiOperation(value = "其他访问预约审核", notes = "其他访客预约审核", httpMethod = "GET")
     @ApiOperation(value = "其他访问预约审核", notes = "其他访客预约审核", httpMethod = "GET")
     CommonResult restsAudit(@RequestParam int id,@RequestParam int type);
     CommonResult restsAudit(@RequestParam int id,@RequestParam int type);
 
 
+    @PostMapping(value = "/parentsScreen")
+    @ApiOperation(value = "大屏——学生家长预约", notes = "大屏——学生家长预约", httpMethod = "POST")
+    CommonResult parentsScreen(@Validated @RequestBody ParentsScreenDto par,BindingResult bindingResult);
+
+    @GetMapping(value = "/getScreenPage")
+    @ApiOperation(value = "大屏——家长访客预约数据", notes = "大屏——家长访客预约数据", httpMethod = "GET")
+    CommonResult getScreenPage(@RequestParam int currentPage, @RequestParam int pageCount,String phone,String status);
+
+
 }
 }

+ 0 - 21
src/main/java/com/template/auto/controller/SmartPushConfigController.java

@@ -1,21 +0,0 @@
-package com.template.auto.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author ceshi
- * @since 2024-06-05
- */
-@RestController
-@RequestMapping("/auto/smart-push-config")
-public class SmartPushConfigController {
-
-}
-

+ 92 - 16
src/main/java/com/template/controller/HikvisionController.java

@@ -2,20 +2,15 @@ package com.template.controller;
 
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.template.annotation.DESRespondSecret;
 import com.template.annotation.DESRespondSecret;
 import com.template.api.HikvisionAPI;
 import com.template.api.HikvisionAPI;
 import com.template.api.SmartNotificationControllerAPI;
 import com.template.api.SmartNotificationControllerAPI;
 import com.template.common.utils.GetCameraPreviewURL;
 import com.template.common.utils.GetCameraPreviewURL;
 import com.template.common.utils.Message2;
 import com.template.common.utils.Message2;
-import com.template.model.pojo.SmartFaceDiscern;
-import com.template.model.pojo.SmartNotification;
-import com.template.model.pojo.SmartUser;
-import com.template.model.pojo.SmartWarning;
-import com.template.services.SmartFaceDiscernService;
-import com.template.services.SmartNotificationService;
-import com.template.services.SmartUserService;
-import com.template.services.SmartWarningService;
+import com.template.model.pojo.*;
+import com.template.services.*;
 import org.aspectj.weaver.ast.Var;
 import org.aspectj.weaver.ast.Var;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -47,7 +42,8 @@ public class HikvisionController implements HikvisionAPI {
     @Autowired
     @Autowired
     SmartNotificationService smartNotificationService;
     SmartNotificationService smartNotificationService;
 
 
-
+    @Autowired
+    SmartPushConfigService smartPushConfigService;
 
 
     /**
     /**
      * 事件订阅
      * 事件订阅
@@ -237,18 +233,98 @@ public class HikvisionController implements HikvisionAPI {
                     JSONObject reserve_field = jsonObject5.getJSONObject("reserve_field");
                     JSONObject reserve_field = jsonObject5.getJSONObject("reserve_field");
 //                    证件号
 //                    证件号
                     String certificateNumber = reserve_field.getString("certificateNumber");
                     String certificateNumber = reserve_field.getString("certificateNumber");
-                    logger.info("证件号 = " + certificateNumber);
-//                    名字
+//                    logger.info("证件号 = " + certificateNumber);
+//                    名字是学号
                     String name = reserve_field.getString("name");
                     String name = reserve_field.getString("name");
                     logger.info("名字 = " + name);
                     logger.info("名字 = " + name);
 
 
-                    smartFaceDiscern.setName(name);
 
 
 //                   通过身份证,学号查询是谁
 //                   通过身份证,学号查询是谁
-//                    SmartUser one = smartUserService.getCard(certificateNumber);
-//                    if (ObjectUtils.isNotEmpty(one)) {
-//                        smartFaceDiscern.setUserId(one.getId());
-//                    }
+                    SmartUser smartUser = smartUserService.getCard(name);
+                    if (ObjectUtils.isNotEmpty(smartUser)) {
+                        smartFaceDiscern.setUserId(smartUser.getId());
+                        smartFaceDiscern.setName(smartUser.getName());
+                        Integer identityId = smartUser.getIdentityId();
+                        //                        时间格式是 yyyy-MM-dd HH:mm:ss,当前时间格式有问题
+                        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+//                    判断是否是学生
+                        if (2 == identityId) {
+                            //                    获取推送配置
+                            List<SmartPushConfig> pushConfigs = smartPushConfigService.list(new LambdaQueryWrapper<>());
+                            SmartPushConfig smartPushConfig = pushConfigs.get(0);
+                            Integer parentsPush = smartPushConfig.getParentsPush();
+                            Integer chargeTeacherPush = smartPushConfig.getChargeTeacherPush();
+
+                            if (parentsPush == 1) {
+//                        通过学生id找到关联的家长affiliate,并找到公众号,如果openid为空则不传
+                                List<SmartUser> userList = smartUserService.getAffiliateList(smartUser.getId());
+                                if (ObjectUtils.isNotEmpty(userList) && userList.size() > 0) {
+
+                                    for (SmartUser user : userList) {
+                                        String gzhOpenId = user.getGzhOpenId();
+                                        if (ObjectUtils.isNotEmpty(gzhOpenId)) {
+                                            String pushType = "人脸比对";
+
+                                            LocalDateTime date = LocalDateTime.now();
+                                            String format = date.format(dateTimeFormatter1);
+                                            //                    公众号信息推送
+                                            Message2.send(gzhOpenId, pushType, channelName, format);
+
+                                            SmartNotification smartNotification = new SmartNotification();
+                                            smartNotification.setUserId(smartUser.getId());
+                                            smartNotification.setUserName(smartUser.getName());
+                                            smartNotification.setTypeName(pushType);
+                                            smartNotification.setLocation(channelName);
+                                            smartNotification.setImage(bkgUrl);
+                                            smartNotification.setDateTime(happenTime);
+                                            smartNotification.setType(2);
+
+                                            smartNotificationService.save(smartNotification);
+
+                                        }
+
+                                    }
+                                }
+                            }
+
+                            if (1 == chargeTeacherPush) {
+                                Integer schoolClass = smartUser.getSchoolClass();
+//                        通过班级找到对应的班主任
+                                List<SmartUser> userLists = smartUserService.getChargeTeacher(schoolClass);
+                                if (ObjectUtils.isNotEmpty(userLists) && userLists.size() > 0) {
+
+                                    for (SmartUser user : userLists) {
+                                        String gzhOpenId = user.getGzhOpenId();
+                                        if (ObjectUtils.isNotEmpty(gzhOpenId)) {
+                                            String pushType = "人脸比对";
+
+                                            LocalDateTime date = LocalDateTime.now();
+                                            String format = date.format(dateTimeFormatter1);
+                                            //                    公众号信息推送
+                                            Message2.send(gzhOpenId, pushType, channelName, format);
+
+                                            SmartNotification smartNotification = new SmartNotification();
+                                            smartNotification.setUserId(smartUser.getId());
+                                            smartNotification.setUserName(smartUser.getName());
+                                            smartNotification.setTypeName(pushType);
+                                            smartNotification.setLocation(channelName);
+                                            smartNotification.setImage(bkgUrl);
+                                            smartNotification.setDateTime(happenTime);
+                                            smartNotification.setType(2);
+                                            smartNotificationService.save(smartNotification);
+                                        }
+
+                                    }
+                                }
+
+
+                            }
+
+                        }
+                    } else {
+                        smartFaceDiscern.setName(name);
+                        smartFaceDiscern.setUserId(0);
+                    }
                     logger.info("smartFaceDiscern = " + smartFaceDiscern);
                     logger.info("smartFaceDiscern = " + smartFaceDiscern);
 //                    smartFaceDiscernService.save(smartFaceDiscern);
 //                    smartFaceDiscernService.save(smartFaceDiscern);
 
 

+ 90 - 26
src/main/java/com/template/controller/SmartFaceDiscernController.java

@@ -84,6 +84,9 @@ public class SmartFaceDiscernController implements SmartFaceDiscernControllerAPI
     @Autowired
     @Autowired
     SmartAccessService smartAccessService;
     SmartAccessService smartAccessService;
 
 
+    @Autowired
+    SmartPushConfigService smartPushConfigService;
+
     @Override
     @Override
     @DESRespondSecret(validated = true)
     @DESRespondSecret(validated = true)
     public CommonResult track(Integer id, int dateTime) {
     public CommonResult track(Integer id, int dateTime) {
@@ -337,39 +340,100 @@ public class SmartFaceDiscernController implements SmartFaceDiscernControllerAPI
                     smartFaceDiscern.setImage(image);
                     smartFaceDiscern.setImage(image);
                     smartAccessService.save(smartFaceDiscern);
                     smartAccessService.save(smartFaceDiscern);
 
 
+                    Integer identityId = smartUser.getIdentityId();
+//                    判断是否是学生
+                    if (2==identityId) {
+                        //                    获取推送配置
+                        List<SmartPushConfig> pushConfigs = smartPushConfigService.list(new LambdaQueryWrapper<>());
+                        SmartPushConfig smartPushConfig = pushConfigs.get(0);
+                        Integer parentsPush = smartPushConfig.getParentsPush();
+                        Integer chargeTeacherPush = smartPushConfig.getChargeTeacherPush();
+
+                        if (parentsPush == 1) {
 //                        通过学生id找到关联的家长affiliate,并找到公众号,如果openid为空则不传
 //                        通过学生id找到关联的家长affiliate,并找到公众号,如果openid为空则不传
-                    List<SmartUser> userList = smartUserService.getAffiliateList(userId);
-                    if (ObjectUtils.isNotEmpty(userList) && userList.size() > 0) {
-
-                        for (SmartUser user : userList) {
-                            String gzhOpenId = user.getGzhOpenId();
-                            if (ObjectUtils.isNotEmpty(gzhOpenId)) {
-                                String pushType = "";
-                                if (type.contains("进校")) {
-                                    pushType = "进入大门";
-                                } else if (type.contains("出校")) {
-                                    pushType = "离开大门";
+                            List<SmartUser> userList = smartUserService.getAffiliateList(userId);
+                            if (ObjectUtils.isNotEmpty(userList) && userList.size() > 0) {
+
+                                for (SmartUser user : userList) {
+                                    String gzhOpenId = user.getGzhOpenId();
+                                    if (ObjectUtils.isNotEmpty(gzhOpenId)) {
+                                        String pushType = "";
+                                        if (type.contains("进校")) {
+                                            pushType = "进入大门";
+                                        } else if (type.contains("出校")) {
+                                            pushType = "离开大门";
+                                        }else if (type.contains("进地下室")){
+                                            pushType = "进入地下室";
+                                        }else if (type.contains("出地下室")){
+                                            pushType = "离开地下室";
+                                        }
+                                        LocalDateTime date = LocalDateTime.now();
+                                        String format = date.format(dateTimeFormatter1);
+                                        //                    公众号信息推送
+                                        Message2.send(gzhOpenId, pushType, address, format);
+
+                                        SmartNotification smartNotification = new SmartNotification();
+                                        smartNotification.setUserId(smartUser.getId());
+                                        smartNotification.setUserName(smartUser.getName());
+                                        smartNotification.setTypeName(pushType);
+                                        smartNotification.setLocation(address);
+                                        smartNotification.setImage(image);
+                                        smartNotification.setDateTime(time);
+                                        smartNotification.setType(2);
+
+                                        smartNotificationService.save(smartNotification);
+
+                                    }
+
                                 }
                                 }
-                                LocalDateTime date = LocalDateTime.now();
-                                String format = date.format(dateTimeFormatter1);
-                                //                    公众号信息推送
-                                Message2.send(gzhOpenId, pushType, address, format);
-
-                                SmartNotification smartNotification = new SmartNotification();
-                                smartNotification.setUserId(smartUser.getId());
-                                smartNotification.setUserName(smartUser.getName());
-                                smartNotification.setTypeName(pushType);
-                                smartNotification.setLocation(address);
-                                smartNotification.setImage(image);
-                                smartNotification.setDateTime(time);
-                                smartNotification.setType(2);
-
-                                smartNotificationService.save(smartNotification);
+                            }
+                        }
 
 
+                        if (1==chargeTeacherPush) {
+                            Integer schoolClass = smartUser.getSchoolClass();
+//                        通过班级找到对应的班主任
+                            List<SmartUser> userLists = smartUserService.getChargeTeacher(schoolClass);
+                            if (ObjectUtils.isNotEmpty(userLists) && userLists.size() > 0) {
+
+                                for (SmartUser user : userLists) {
+                                    String gzhOpenId = user.getGzhOpenId();
+                                    if (ObjectUtils.isNotEmpty(gzhOpenId)) {
+                                        String pushType = "";
+                                        if (type.contains("进校")) {
+                                            pushType = "进入大门";
+                                        } else if (type.contains("出校")) {
+                                            pushType = "离开大门";
+                                        }else if (type.contains("进地下室")){
+                                            pushType = "进入地下室";
+                                        }else if (type.contains("出地下室")){
+                                            pushType = "离开地下室";
+                                        }
+                                        LocalDateTime date = LocalDateTime.now();
+                                        String format = date.format(dateTimeFormatter1);
+                                        //                    公众号信息推送
+                                        Message2.send(gzhOpenId, pushType, address, format);
+
+                                        SmartNotification smartNotification = new SmartNotification();
+                                        smartNotification.setUserId(smartUser.getId());
+                                        smartNotification.setUserName(smartUser.getName());
+                                        smartNotification.setTypeName(pushType);
+                                        smartNotification.setLocation(address);
+                                        smartNotification.setImage(image);
+                                        smartNotification.setDateTime(time);
+                                        smartNotification.setType(2);
+
+                                        smartNotificationService.save(smartNotification);
+
+                                    }
+
+                                }
                             }
                             }
 
 
+
                         }
                         }
+
                     }
                     }
+
                 }
                 }
             } else {
             } else {
 
 

+ 51 - 0
src/main/java/com/template/controller/SmartPushConfigController.java

@@ -0,0 +1,51 @@
+package com.template.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.template.annotation.DESRespondSecret;
+import com.template.api.SmartPushConfigControllerAPI;
+import com.template.model.pojo.SmartPushConfig;
+import com.template.model.pojo.SmartVisitorRestsConfig;
+import com.template.model.result.CommonResult;
+import com.template.services.SmartPushConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-06-05
+ */
+@RestController
+@DESRespondSecret
+public class SmartPushConfigController implements SmartPushConfigControllerAPI {
+
+    @Autowired
+    SmartPushConfigService smartPushConfigService;
+
+    @Override
+    @DESRespondSecret(validated = false)
+    public CommonResult list() {
+        List<SmartPushConfig> list = smartPushConfigService.list(new LambdaQueryWrapper<>());
+        SmartPushConfig s = list.get(0);
+        return CommonResult.ok(s);
+    }
+
+    @Override
+    @DESRespondSecret(validated = false)
+    public CommonResult update(SmartPushConfig smartPushConfig) {
+        boolean update = smartPushConfigService.updateById(smartPushConfig);
+        if (update) {
+            return CommonResult.ok();
+        }
+        return CommonResult.fail();
+    }
+}
+

+ 123 - 1
src/main/java/com/template/controller/SmartVisitorController.java

@@ -16,6 +16,7 @@ import com.template.common.utils.*;
 import com.template.config.ControlConfig;
 import com.template.config.ControlConfig;
 import com.template.config.ParkConfig;
 import com.template.config.ParkConfig;
 import com.template.config.SeewoConfig;
 import com.template.config.SeewoConfig;
+import com.template.model.dto.ParentsScreenDto;
 import com.template.model.enumModel.*;
 import com.template.model.enumModel.*;
 import com.template.model.pojo.*;
 import com.template.model.pojo.*;
 import com.template.model.request.otherAppointmentRequest;
 import com.template.model.request.otherAppointmentRequest;
@@ -40,6 +41,8 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.net.URLDecoder;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -317,7 +320,7 @@ public class SmartVisitorController implements SmartVisitorControllerAPI {
 
 
         boolean result = smartVisitorService.insertVisitorBatch(svs);
         boolean result = smartVisitorService.insertVisitorBatch(svs);
 
 
-        return result ? CommonResult.ok("预约成功,等待审批通过") : CommonResult.fail("预约失败");
+        return result ? CommonResult.ok("预约成功") : CommonResult.fail("预约失败");
     }
     }
 
 
 
 
@@ -823,6 +826,125 @@ public class SmartVisitorController implements SmartVisitorControllerAPI {
         return CommonResult.ok("审核成功");
         return CommonResult.ok("审核成功");
     }
     }
 
 
+    @Override
+    public CommonResult parentsScreen(ParentsScreenDto par, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            String st = paramUtils.getParamError(bindingResult);
+            return CommonResult.fail(st);
+        }
+
+        //参数判断 判断受访学生信息是否为空
+        if (par.getStudents() == null) {
+            return CommonResult.fail("请选择受访学生");
+        }
+
+        if (par.getStudents().size() <= 0) {
+            return CommonResult.fail("请选择受访学生");
+        }
+
+        //根据用户ID查询相关信息
+        SmartUser su = smartUserService.getSmartById(par.getUserId());
+        if (su == null) {
+            return CommonResult.fail("当前用户信息不合法,无法进行预约!");
+        }
+        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime date = LocalDateTime.now();
+        String startTime = date.format(dateTimeFormatter1);
+
+        String endTime = TimeExchange.getEndOfDayStr(TimeExchange.StringToDate(startTime, "yyyy-MM-dd HH:mm:ss"));
+
+        //要进行家长数据重复判断
+        //那是不是第二次预约的时间不能在那个可访问的时间段内
+        //例如:比如,第一次约了7:00-10:00;那第二次:6:00-7:30 或 8:11-13:00都不行
+        Integer count = smartVisitorService.queryVisitorCount(su.getIdCard(), startTime, endTime);
+        if (count > 0) {
+            return CommonResult.fail("该时间段已预约,请勿重复预约!");
+        }
+
+        List<SmartVisitor> svs = new ArrayList<>();
+        for (AffiliateUserVo student : par.getStudents()) {
+            SmartVisitor sv = new SmartVisitor();
+            sv.setUserId(par.getUserId());
+            sv.setUserName(su.getName());
+            sv.setUserPhone(su.getPhone());
+            sv.setUserNumber(su.getIdCard());
+            sv.setPeerNum(0);
+            sv.setVisitReason(par.getVisitReason());
+//            sv.setStatu(eApproveStatu.Audit.getValue());
+            sv.setVisitorTime(TimeExchange.StringToDate(startTime, "yyyy-MM-dd HH:mm:ss"));
+            sv.setVisitorDeadline(TimeExchange.StringToDate(TimeExchange.AddTimeDesH(sv.getVisitorTime(), 4), "yyyy-MM-dd HH:mm:ss"));
+            sv.setRespondent(student.getId());
+            sv.setResponcode(student.getCardNo());
+            sv.setRespondentName(student.getName());
+            //将第一个受访学生的部门ID带过去
+            sv.setDepartmentId(student.getDepartmentId());
+            sv.setVisitorType(eVisitorType.Parent.getValue());
+
+            //        获取受访者id
+            Integer respondent = sv.getRespondent();
+            SmartUser smartUser = smartUserService.getById(respondent);
+            Integer schoolClass = smartUser.getSchoolClass();
+            SmartVisitorParentsConfig svpc = smartVisitorParentsConfigService.getById(schoolClass);
+            Integer screenAuditConfig = svpc.getScreenAuditConfig();
+            if (1 == screenAuditConfig) {//需要审核
+                sv.setStatu(1);
+            } else {//不需要审核
+                Integer screenPushConfig = svpc.getScreenPushConfig();
+//                判断是否需要推送
+                if (5 == screenPushConfig) {//需要推送
+                    String content = sv.getRespondentName() + "你的家长将于" + TimeExchange.chineseDateTime(sv.getVisitorTime()) + "到校!";
+                    //将预约信息推送到希沃班牌
+                    CommonResult seewo = pushInfo(sv.getUserPhone(), sv.getResponcode(), content);
+                }
+//                核销
+                Integer screenCancelConfig = svpc.getScreenCancelConfig();
+                if (6 == screenCancelConfig) {//需要核销
+                    sv.setStatu(7);
+                } else {//不需要核销
+                    sv.setStatu(9);
+                }
+//                门禁配置
+                Integer accessConfig = svpc.getAccessConfig();
+                if (0 == accessConfig) {
+                    try {
+                        List<SmartDevice> devices = smartDeviceService.queryOnLineDevice();
+                        String visitorNo = getUUIDBits(16);
+                        //region 将访客数据下发到设备
+                        for (SmartDevice device : devices) {
+                            CommonResult<String> insertVisitor = bsInsertVisitor(su, TimeExchange.DateToString(sv.getVisitorTime()), TimeExchange.DateToString(sv.getVisitorDeadline()), device.getNum(), visitorNo);
+                            if (!insertVisitor.isSuccess()) {
+                                throw new Exception(insertVisitor.getMessage());
+                            }
+                            sv.setVisitorsync(sv.getVisitorsync() == null ? insertVisitor.getData() : (sv.getVisitorsync() + "," + insertVisitor.getData()));
+                            sv.setDeviceNum(sv.getDeviceNum() == null ? device.getNum() : (sv.getDeviceNum() + "," + device.getNum()));
+                        }
+                        String code = GetVertifyCode.getRandomNumCode(6);
+                        sv.setVisitorCode(code);
+
+                    } catch (Exception e) {
+                        throw new RuntimeException(e);
+                    }
+                }
+            }
+
+            svs.add(sv);
+        }
+
+
+        boolean result = smartVisitorService.insertVisitorBatch(svs);
+
+        return result ? CommonResult.ok("预约成功") : CommonResult.fail("预约失败");
+
+
+    }
+
+    @Override
+    public CommonResult getScreenPage(int currentPage, int pageCount, String phone,String status) {
+        PageUtils<SmartVisitorScreenVo> page = smartVisitorService.getScreenPage(currentPage, pageCount,phone,status);
+
+        return CommonResult.ok(page);
+    }
+
     /**
     /**
      * 1、学生请假:
      * 1、学生请假:
      * 我们这边调用请假接口之后,把请假数据写到了百胜系统的"学生请假登记"页面中,那到时候学生是通过任意设备都能进出吗?
      * 我们这边调用请假接口之后,把请假数据写到了百胜系统的"学生请假登记"页面中,那到时候学生是通过任意设备都能进出吗?

+ 4 - 2
src/main/java/com/template/auto/mapper/SmartPushConfigMapper.java

@@ -1,7 +1,8 @@
-package com.template.auto.mapper;
+package com.template.mapper;
 
 
-import com.template.auto.model.SmartPushConfig;
+import com.template.model.pojo.SmartPushConfig;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author ceshi
  * @author ceshi
  * @since 2024-06-05
  * @since 2024-06-05
  */
  */
+@Repository
 public interface SmartPushConfigMapper extends BaseMapper<SmartPushConfig> {
 public interface SmartPushConfigMapper extends BaseMapper<SmartPushConfig> {
 
 
 }
 }

+ 31 - 0
src/main/java/com/template/model/dto/ParentsScreenDto.java

@@ -0,0 +1,31 @@
+package com.template.model.dto;
+
+import com.template.model.vo.AffiliateUserVo;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+public class ParentsScreenDto {
+    /**
+     * 用户ID
+     * 根据用户ID把访客姓名、访客手机号、证件号带过来
+     */
+    @NotNull(message = "用户ID不能为空")
+    private Integer userId;
+
+
+    /**
+     * 访问事由
+     */
+    @NotBlank(message = "访问事由不能为空")
+    private String visitReason;
+
+
+    /**
+     * 受访学生信息
+     */
+    private List<AffiliateUserVo> students;
+}

+ 0 - 6
src/main/java/com/template/model/pojo/SmartFaceDiscern.java

@@ -50,12 +50,6 @@ public class SmartFaceDiscern implements Serializable {
     @ApiModelProperty(value = "图片")
     @ApiModelProperty(value = "图片")
     private String image;
     private String image;
 
 
-    @ApiModelProperty(value = "百胜门禁编号")
-    private String idNum;
-
-    @ApiModelProperty(value = "设备sn号")
-    private String sn;
-
     @ApiModelProperty(value = "备注")
     @ApiModelProperty(value = "备注")
     private String remark;
     private String remark;
 
 

+ 0 - 6
src/main/java/com/template/model/pojo/SmartFaceDiscernTest.java

@@ -45,12 +45,6 @@ public class SmartFaceDiscernTest implements Serializable {
     @ApiModelProperty(value = "地点")
     @ApiModelProperty(value = "地点")
     private String location;
     private String location;
 
 
-    @ApiModelProperty(value = "百胜门禁编号")
-    private String idNum;
-
-    @ApiModelProperty(value = "设备sn号")
-    private String sn;
-
     @ApiModelProperty(value = "图片")
     @ApiModelProperty(value = "图片")
     private String image;
     private String image;
 
 

+ 1 - 1
src/main/java/com/template/auto/model/SmartPushConfig.java

@@ -1,4 +1,4 @@
-package com.template.auto.model;
+package com.template.model.pojo;
 
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import java.util.Date;
 import java.util.Date;

+ 12 - 0
src/main/java/com/template/model/vo/SmartVisitorScreenVo.java

@@ -0,0 +1,12 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+@Data
+public class SmartVisitorScreenVo {
+
+    private int id;
+
+
+
+}

+ 2 - 2
src/main/java/com/template/auto/services/SmartPushConfigService.java

@@ -1,6 +1,6 @@
-package com.template.auto.services;
+package com.template.services;
 
 
-import com.template.auto.model.SmartPushConfig;
+import com.template.model.pojo.SmartPushConfig;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 
 /**
 /**

+ 2 - 0
src/main/java/com/template/services/SmartUserService.java

@@ -134,4 +134,6 @@ public interface SmartUserService extends IService<SmartUser> {
      * @return
      * @return
      */
      */
     SmartUser getBsStudentNo(String idNum);
     SmartUser getBsStudentNo(String idNum);
+
+    List<SmartUser> getChargeTeacher(Integer schoolClass);
 }
 }

+ 2 - 0
src/main/java/com/template/services/SmartVisitorService.java

@@ -4,6 +4,7 @@ import com.template.model.pojo.SmartVisitor;
 import com.template.model.pojo.SmartVisitor;
 import com.template.model.pojo.SmartVisitor;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.template.model.result.PageUtils;
 import com.template.model.result.PageUtils;
+import com.template.model.vo.SmartVisitorScreenVo;
 import com.template.model.vo.VisitorPageVo;
 import com.template.model.vo.VisitorPageVo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
@@ -42,4 +43,5 @@ public interface SmartVisitorService extends IService<SmartVisitor> {
 
 
     PageUtils<SmartVisitor> getPage(int currentPage, int pageCount,Integer type, String keyWord, Integer status, String startTime, String endTime, String visitorStartTime, String visitorEndTime);
     PageUtils<SmartVisitor> getPage(int currentPage, int pageCount,Integer type, String keyWord, Integer status, String startTime, String endTime, String visitorStartTime, String visitorEndTime);
 
 
+    PageUtils<SmartVisitorScreenVo> getScreenPage(int currentPage, int pageCount, String phone, String status);
 }
 }

+ 4 - 4
src/main/java/com/template/auto/service/impl/SmartPushConfigServiceImpl.java

@@ -1,8 +1,8 @@
-package com.template.auto.service.impl;
+package com.template.services.impl;
 
 
-import com.template.auto.model.SmartPushConfig;
-import com.template.auto.mapper.SmartPushConfigMapper;
-import com.template.auto.services.SmartPushConfigService;
+import com.template.model.pojo.SmartPushConfig;
+import com.template.mapper.SmartPushConfigMapper;
+import com.template.services.SmartPushConfigService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 

+ 12 - 2
src/main/java/com/template/services/impl/SmartUserServiceImpl.java

@@ -326,8 +326,8 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
     @Override
     @Override
     public SmartUser getCard(String certificateNumber) {
     public SmartUser getCard(String certificateNumber) {
         LambdaQueryWrapper<SmartUser> wrapper=new LambdaQueryWrapper<>();
         LambdaQueryWrapper<SmartUser> wrapper=new LambdaQueryWrapper<>();
-        wrapper.eq(SmartUser::getIdCard,certificateNumber)
-                .or()
+        wrapper/*.eq(SmartUser::getIdCard,certificateNumber)
+                .or()*/
                 .eq(SmartUser::getCardNo,certificateNumber);
                 .eq(SmartUser::getCardNo,certificateNumber);
         SmartUser one = this.getOne(wrapper);
         SmartUser one = this.getOne(wrapper);
 
 
@@ -346,5 +346,15 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
         return one;
         return one;
     }
     }
 
 
+    @Override
+    public List<SmartUser> getChargeTeacher(Integer schoolClass) {
+        LambdaQueryWrapper<SmartUser> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(SmartUser::getSchoolClass,schoolClass)
+                .eq(SmartUser::getDepartmentId,137);
+        List<SmartUser> list = this.list(wrapper);
+
+        return list;
+    }
+
 
 
 }
 }

+ 6 - 0
src/main/java/com/template/services/impl/SmartVisitorServiceImpl.java

@@ -9,6 +9,7 @@ import com.template.model.pojo.SmartVisitor;
 import com.template.model.pojo.SmartVisitor;
 import com.template.model.pojo.SmartVisitor;
 import com.template.mapper.SmartVisitorMapper;
 import com.template.mapper.SmartVisitorMapper;
 import com.template.model.result.PageUtils;
 import com.template.model.result.PageUtils;
+import com.template.model.vo.SmartVisitorScreenVo;
 import com.template.model.vo.VisitorPageVo;
 import com.template.model.vo.VisitorPageVo;
 import com.template.services.SmartVisitorService;
 import com.template.services.SmartVisitorService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -126,4 +127,9 @@ public class SmartVisitorServiceImpl extends ServiceImpl<SmartVisitorMapper, Sma
         IPage<VisitorPageVo> datas = smartVisitorMapper.getPage(page,type,keyWord,status,startTime,endTime,visitorStartTime,visitorEndTime);
         IPage<VisitorPageVo> datas = smartVisitorMapper.getPage(page,type,keyWord,status,startTime,endTime,visitorStartTime,visitorEndTime);
         return new PageUtils(datas);
         return new PageUtils(datas);
     }
     }
+
+    @Override
+    public PageUtils<SmartVisitorScreenVo> getScreenPage(int currentPage, int pageCount, String phone, String status) {
+        return null;
+    }
 }
 }