فهرست منبع

Merge branch 'master' of https://e.coding.net/chuanghaikeji/smartCampus/backend_code

夏文涛 2 سال پیش
والد
کامیت
64a8c09c8f
24فایلهای تغییر یافته به همراه624 افزوده شده و 60 حذف شده
  1. 5 0
      src/main/java/com/template/api/SmartAttendanceControllerAPI.java
  2. 7 0
      src/main/java/com/template/api/SmartCoordControllerAPI.java
  3. 10 0
      src/main/java/com/template/api/SmartUserControllerAPI.java
  4. 1 1
      src/main/java/com/template/controller/ScheduleController.java
  5. 13 0
      src/main/java/com/template/controller/SmartAttendanceController.java
  6. 21 0
      src/main/java/com/template/controller/SmartCoordController.java
  7. 100 31
      src/main/java/com/template/controller/SmartFaceDiscernController.java
  8. 52 0
      src/main/java/com/template/controller/SmartUserController.java
  9. 4 4
      src/main/java/com/template/mapper/SmartAttendanceMapper.java
  10. 18 0
      src/main/java/com/template/mapper/SmartCoordMapper.java
  11. 15 6
      src/main/java/com/template/mapper/SmartUserMapper.java
  12. 70 0
      src/main/java/com/template/model/pojo/SmartCoord.java
  13. 29 0
      src/main/java/com/template/model/vo/AckDetailVo.java
  14. 29 0
      src/main/java/com/template/model/vo/SelectTrackVo.java
  15. 28 0
      src/main/java/com/template/model/vo/StatisticsCampusManageVo.java
  16. 4 4
      src/main/java/com/template/services/SmartAttendanceService.java
  17. 17 0
      src/main/java/com/template/services/SmartCoordService.java
  18. 10 0
      src/main/java/com/template/services/SmartUserService.java
  19. 8 5
      src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java
  20. 29 0
      src/main/java/com/template/services/impl/SmartCoordServiceImpl.java
  21. 29 0
      src/main/java/com/template/services/impl/SmartUserServiceImpl.java
  22. 16 0
      src/main/resources/mapper/template/SmartAttendanceMapper.xml
  23. 5 0
      src/main/resources/mapper/template/SmartCoordMapper.xml
  24. 104 9
      src/main/resources/mapper/template/SmartUserMapper.xml

+ 5 - 0
src/main/java/com/template/api/SmartAttendanceControllerAPI.java

@@ -122,4 +122,9 @@ public interface SmartAttendanceControllerAPI {
     @ApiOperation(value = "班级考勤统计", notes = "班级考勤统计", httpMethod = "GET")
     CommonResult classHistoricalAttendance(@RequestParam String dateTime,@RequestParam int currentPage, @RequestParam int pageCount,String className);
 
+
+    @GetMapping(value = "/ackDetail")
+    @ApiOperation(value = "个人请假详情", notes = "个人请假详情", httpMethod = "GET")
+    CommonResult ackDetail(@RequestParam Integer userId,@RequestParam String dateTime);
+
 }

+ 7 - 0
src/main/java/com/template/api/SmartCoordControllerAPI.java

@@ -0,0 +1,7 @@
+package com.template.api;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@RequestMapping("/api/smartCoord")
+public interface SmartCoordControllerAPI {
+}

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

@@ -260,4 +260,14 @@ public interface SmartUserControllerAPI {
     @ApiOperation(value = "在校统计", notes = "在校统计", httpMethod = "GET")
     CommonResult statisticsCampus(@RequestParam Integer classId,@RequestParam String dateTime);
 
+    @GetMapping(value = "/addressBook")
+    @ApiOperation(value = "个人通讯录", notes = "个人通讯录", httpMethod = "GET")
+    CommonResult addressBook(@RequestParam Integer userId);
+
+
+    @GetMapping(value = "/statisticsCampusManag")
+    @ApiOperation(value = "管理端——在校统计", notes = "管理端——在校统计", httpMethod = "GET")
+    CommonResult statisticsCampusManage(@RequestParam Integer classId,@RequestParam String dateTime,String keyWord);
+
+
 }

+ 1 - 1
src/main/java/com/template/controller/ScheduleController.java

@@ -82,7 +82,7 @@ public class ScheduleController {
     //周一到周五早上七点执行:0 0 7 ? * MON-FRI
     //0 0 22 * * ?
     @Async
-    @Scheduled(cron = "0 0 22 * * ? ")
+    @Scheduled(cron = "0 0 */1 * * ?")
     @Transactional(rollbackFor = {Exception.class})
     public void autoDispatch() throws Exception {
 

+ 13 - 0
src/main/java/com/template/controller/SmartAttendanceController.java

@@ -679,6 +679,19 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
         return CommonResult.ok(objectPage);
     }
 
+    @Override
+    @DESRespondSecret(validated = true)
+    public CommonResult ackDetail(Integer userId, String dateTime) {
+        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime startTime = LocalDateTime.parse(dateTime, dateTimeFormatter1);
+        LocalDateTime endTime = startTime.plusDays(1);
+
+//        获取单人单日的请假数据
+        List<AckDetailVo> ackVos= smartAttendanceService.ackDetail(userId,startTime,endTime);
+
+        return CommonResult.ok(ackVos);
+    }
+
     public PersonalLeaveListSchoolPeriodRecordsResult getXwAttendance(String startDate, String endDate, Integer currentPage, Integer pageSize) {
         //初始化客户端
         SeewoClient seewoClient = new DefaultSeewoClient(new Account(seewoConfig.getAppId(), seewoConfig.getAppSecret()));

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

@@ -0,0 +1,21 @@
+package com.template.controller;
+
+
+import com.template.api.SmartCoordControllerAPI;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-06-21
+ */
+@RestController
+public class SmartCoordController implements SmartCoordControllerAPI {
+
+}
+

+ 100 - 31
src/main/java/com/template/controller/SmartFaceDiscernController.java

@@ -1,6 +1,7 @@
 package com.template.controller;
 
 
+import com.alibaba.druid.sql.visitor.functions.If;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -15,10 +16,7 @@ import com.template.config.ControlConfig;
 import com.template.model.pojo.*;
 import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
-import com.template.model.vo.AskForLeaveScreenVo;
-import com.template.model.vo.FaceManagementVo;
-import com.template.model.vo.LastSevenDaysTrackVo;
-import com.template.model.vo.SmartAccessVo;
+import com.template.model.vo.*;
 import com.template.services.*;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -95,6 +93,9 @@ public class SmartFaceDiscernController implements SmartFaceDiscernControllerAPI
     @Autowired
     SmartPushConfigService smartPushConfigService;
 
+    @Autowired
+    SmartCoordService smartCoordService;
+
     @Override
     @DESRespondSecret(validated = true)
     public CommonResult track(Integer id, int dateTime) {
@@ -106,10 +107,15 @@ public class SmartFaceDiscernController implements SmartFaceDiscernControllerAPI
         List<SmartFaceDiscern> smartFaceDiscerns = smartFaceDiscernService.track(stateTime, endTime, id);
         ArrayList<LastSevenDaysTrackVo> vos = new ArrayList<>();
         for (SmartFaceDiscern faceDiscern : smartFaceDiscerns) {
+            //            人脸通过type查询对应的坐标
+            SmartCoord smartCoord=smartCoordService.getBytype(faceDiscern.getLocation());
             LastSevenDaysTrackVo lastSevenDaysTrackVo = new LastSevenDaysTrackVo();
+            if (ObjectUtils.isNotEmpty(smartCoord)) {
+                lastSevenDaysTrackVo.setLocation(smartCoord.getType());
+            }
             lastSevenDaysTrackVo.setName(faceDiscern.getName());
             lastSevenDaysTrackVo.setType(faceDiscern.getType());
-            lastSevenDaysTrackVo.setLocation(faceDiscern.getLocation());
+//            lastSevenDaysTrackVo.setLocation(faceDiscern.getLocation());
             lastSevenDaysTrackVo.setImage(faceDiscern.getImage());
             lastSevenDaysTrackVo.setDateTime(faceDiscern.getDateTime());
             vos.add(lastSevenDaysTrackVo);
@@ -120,12 +126,29 @@ public class SmartFaceDiscernController implements SmartFaceDiscernControllerAPI
         SmartUser smartUser = smartUserService.getSmartById(id);
         SmartClass smartClass = smartClassService.getSmartClassById(smartUser.getSchoolClass());
         String className = smartClass.getName();
+        //            通过班级找到对应的坐标
+        SmartCoord coord=smartCoordService.getBytype(className);
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         for (SmartAttendance attendance : attendances) {
             LastSevenDaysTrackVo lastSevenDaysTrackVo = new LastSevenDaysTrackVo();
+            if (ObjectUtils.isNotEmpty(coord)) {
+                lastSevenDaysTrackVo.setLocation(coord.getType());
+            }
+
             lastSevenDaysTrackVo.setName(attendance.getXwUserName());
-            lastSevenDaysTrackVo.setType("打卡");
-            lastSevenDaysTrackVo.setLocation(className);
+            Integer status = attendance.getStatus();
+            if (status==0) {
+                lastSevenDaysTrackVo.setType("准时打卡");
+            }else if (1==status){
+                lastSevenDaysTrackVo.setType("迟到打卡");
+            }else if (7==status){
+                lastSevenDaysTrackVo.setType("超时打卡");
+            }else if (6==status){
+                lastSevenDaysTrackVo.setType("请假");
+            }
+
+
+//            lastSevenDaysTrackVo.setLocation(className);
             Date attendTime = attendance.getAttendTime();
             lastSevenDaysTrackVo.setDateTime(sdf.format(attendTime));
             vos.add(lastSevenDaysTrackVo);
@@ -134,10 +157,18 @@ public class SmartFaceDiscernController implements SmartFaceDiscernControllerAPI
 //        门禁信息
         List<SmartAccess> smartAccesses = smartAccessService.track(stateTime, endTime, id);
         for (SmartAccess faceDiscern : smartAccesses) {
+            //            门禁的通过type找到对应的坐标
+            SmartCoord smartCoord=smartCoordService.getBytype(faceDiscern.getType());
+
             LastSevenDaysTrackVo lastSevenDaysTrackVo = new LastSevenDaysTrackVo();
+
+            if (ObjectUtils.isNotEmpty(smartCoord)) {
+                lastSevenDaysTrackVo.setLocation(smartCoord.getType());
+            }
+
             lastSevenDaysTrackVo.setName(faceDiscern.getName());
             lastSevenDaysTrackVo.setType(faceDiscern.getType());
-            lastSevenDaysTrackVo.setLocation(faceDiscern.getLocation());
+//            lastSevenDaysTrackVo.setLocation(faceDiscern.getLocation());
             lastSevenDaysTrackVo.setImage(faceDiscern.getImage());
             lastSevenDaysTrackVo.setDateTime(faceDiscern.getDateTime());
             vos.add(lastSevenDaysTrackVo);
@@ -217,10 +248,20 @@ public class SmartFaceDiscernController implements SmartFaceDiscernControllerAPI
         SmartClass smartClass = smartClassService.getSmartClassById(smartUser.getSchoolClass());
         String className = smartClass.getName();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
         for (SmartAttendance attendance : attendances) {
             LastSevenDaysTrackVo lastSevenDaysTrackVo = new LastSevenDaysTrackVo();
             lastSevenDaysTrackVo.setName(attendance.getXwUserName());
-            lastSevenDaysTrackVo.setType("打卡");
+            Integer status = attendance.getStatus();
+            if (status==0) {
+                lastSevenDaysTrackVo.setType("准时打卡");
+            }else if (1==status){
+                lastSevenDaysTrackVo.setType("迟到打卡");
+            }else if (7==status){
+                lastSevenDaysTrackVo.setType("超时打卡");
+            }else if (6==status){
+                lastSevenDaysTrackVo.setType("请假");
+            }
             lastSevenDaysTrackVo.setLocation(className);
             Date attendTime = attendance.getAttendTime();
             lastSevenDaysTrackVo.setDateTime(sdf.format(attendTime));
@@ -493,17 +534,23 @@ public class SmartFaceDiscernController implements SmartFaceDiscernControllerAPI
     @Override
     @DESRespondSecret(validated = true)
     public CommonResult selectTrack(Integer userId, String startTime, String endTime) {
-        ArrayList<LastSevenDaysTrackVo> vos = new ArrayList<>();
+        ArrayList<SelectTrackVo> vos = new ArrayList<>();
         //        人脸抓拍
         List<SmartFaceDiscern> faceDiscerns = smartFaceDiscernService.track(startTime, endTime, userId);
         for (SmartFaceDiscern faceDiscern : faceDiscerns) {
-            LastSevenDaysTrackVo lastSevenDaysTrackVo = new LastSevenDaysTrackVo();
-            lastSevenDaysTrackVo.setName(faceDiscern.getName());
-            lastSevenDaysTrackVo.setType(faceDiscern.getType());
-            lastSevenDaysTrackVo.setLocation(faceDiscern.getLocation());
-            lastSevenDaysTrackVo.setImage(faceDiscern.getImage());
-            lastSevenDaysTrackVo.setDateTime(faceDiscern.getDateTime());
-            vos.add(lastSevenDaysTrackVo);
+//            人脸通过type查询对应的坐标
+            SmartCoord smartCoord=smartCoordService.getBytype(faceDiscern.getLocation());
+            SelectTrackVo vo = new SelectTrackVo();
+            if (ObjectUtils.isNotEmpty(smartCoord)) {
+                vo.setX(smartCoord.getX());
+                vo.setY(smartCoord.getY());
+                vo.setLocation(smartCoord.getType());
+            }
+            vo.setName(faceDiscern.getName());
+            vo.setType(faceDiscern.getType());
+            vo.setImage(faceDiscern.getImage());
+            vo.setDateTime(faceDiscern.getDateTime());
+            vos.add(vo);
         }
 
 //        打卡
@@ -513,26 +560,48 @@ public class SmartFaceDiscernController implements SmartFaceDiscernControllerAPI
         SmartClass smartClass = smartClassService.getSmartClassById(smartUser.getSchoolClass());
         String className = smartClass.getName();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        //            通过班级找到对应的坐标
+        SmartCoord coord=smartCoordService.getBytype(className);
         for (SmartAttendance attendance : attendances) {
-            LastSevenDaysTrackVo lastSevenDaysTrackVo = new LastSevenDaysTrackVo();
-            lastSevenDaysTrackVo.setName(attendance.getXwUserName());
-            lastSevenDaysTrackVo.setType("打卡");
-            lastSevenDaysTrackVo.setLocation(className);
+            SelectTrackVo vo = new SelectTrackVo();
+            if (ObjectUtils.isNotEmpty(coord)) {
+                vo.setX(coord.getX());
+                vo.setY(coord.getY());
+                vo.setLocation(coord.getType());
+            }
+            vo.setName(attendance.getXwUserName());
+            Integer status = attendance.getStatus();
+            if (status==0) {
+                vo.setType("准时打卡");
+            }else if (1==status){
+                vo.setType("迟到打卡");
+            }else if (7==status){
+                vo.setType("超时打卡");
+            }else if (6==status){
+                vo.setType("请假");
+            }
             Date attendTime = attendance.getAttendTime();
-            lastSevenDaysTrackVo.setDateTime(sdf.format(attendTime));
-            vos.add(lastSevenDaysTrackVo);
+            vo.setDateTime(sdf.format(attendTime));
+            vos.add(vo);
         }
 
         //        门禁信息
         List<SmartAccess> smartAccesses = smartAccessService.track(startTime, endTime, userId);
-        for (SmartAccess faceDiscern : smartAccesses) {
-            LastSevenDaysTrackVo lastSevenDaysTrackVo = new LastSevenDaysTrackVo();
-            lastSevenDaysTrackVo.setName(faceDiscern.getName());
-            lastSevenDaysTrackVo.setType(faceDiscern.getType());
-            lastSevenDaysTrackVo.setLocation(faceDiscern.getLocation());
-            lastSevenDaysTrackVo.setImage(faceDiscern.getImage());
-            lastSevenDaysTrackVo.setDateTime(faceDiscern.getDateTime());
-            vos.add(lastSevenDaysTrackVo);
+        for (SmartAccess smartAccesse : smartAccesses) {
+            //            门禁的通过type找到对应的坐标
+            SmartCoord smartCoord=smartCoordService.getBytype(smartAccesse.getType());
+            SelectTrackVo vo = new SelectTrackVo();
+            if (ObjectUtils.isNotEmpty(smartCoord)) {
+                vo.setX(smartCoord.getX());
+                vo.setY(smartCoord.getY());
+                vo.setLocation(smartCoord.getType());
+            }
+            vo.setName(smartAccesse.getName());
+            vo.setType(smartAccesse.getType());
+            vo.setImage(smartAccesse.getImage());
+            vo.setDateTime(smartAccesse.getDateTime());
+
+            vos.add(vo);
         }
 
 //        排序

+ 52 - 0
src/main/java/com/template/controller/SmartUserController.java

@@ -4958,6 +4958,58 @@ public class SmartUserController implements SmartUserControllerAPI {
 
         return CommonResult.ok(jsonObject);
     }
+
+    @Override
+    @DESRespondSecret(validated = true)
+    public CommonResult addressBook(Integer userId) {
+//        获取学生信息
+        SmartUser smartById = smartUserService.getSmartById(userId);
+//        获取家长信息
+        List<SmartUser> list=smartUserService.getAddressBook(userId);
+
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("student",smartById);
+
+        map.put("patriarch",list);
+
+        return CommonResult.ok(map);
+    }
+
+    @Override
+    public CommonResult statisticsCampusManage(Integer classId, String dateTime,String keyWord) {
+        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime startTime = LocalDateTime.parse(dateTime, dateTimeFormatter1);
+        LocalDateTime endTime = startTime.plusDays(1);
+
+        //        正常
+        Set<StatisticsCampusManageVo> vos = new HashSet<>();
+
+//        查找门禁记录
+        List<StatisticsCampusManageVo> accessVos=smartUserService.getAccessStatisticsCampusManage(classId,startTime,endTime,keyWord);
+        for (StatisticsCampusManageVo accessVo : accessVos) {
+            vos.add(accessVo);
+        }
+//        查找打卡记录
+        List<StatisticsCampusManageVo> attendanceVos=smartUserService.getAttendanceStatisticsCampusManage(classId,startTime,endTime,keyWord);
+        for (StatisticsCampusManageVo attendanceVo : attendanceVos) {
+            vos.add(attendanceVo);
+        }
+//        查找人脸记录
+        List<StatisticsCampusManageVo> faceDiscernVos=smartUserService.getFaceDiscernStatisticsCampusManage(classId,startTime,endTime,keyWord);
+        for (StatisticsCampusManageVo faceDiscernVo : faceDiscernVos) {
+            vos.add(faceDiscernVo);
+        }
+
+//        查找请假记录
+        List<StatisticsCampusManageVo> ackVos= smartUserService.getAckStatisticsCampusManage(classId,startTime,endTime,keyWord);
+        for (StatisticsCampusManageVo ackVo : ackVos) {
+            vos.add(ackVo);
+        }
+
+
+
+        return null;
+    }
     //endregion
 
     //region 用户导出

+ 4 - 4
src/main/java/com/template/mapper/SmartAttendanceMapper.java

@@ -4,13 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.model.pojo.SmartAttendance;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.template.model.vo.AskForLeaveScreenVo;
-import com.template.model.vo.AskForLeaveVo;
-import com.template.model.vo.ClasAttendanceVo;
-import com.template.model.vo.SmartAttendanceVo;
+import com.template.model.vo.*;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 
@@ -36,5 +34,7 @@ public interface SmartAttendanceMapper extends BaseMapper<SmartAttendance> {
     IPage<AskForLeaveScreenVo> askForLeaveScreenPage(Page<AskForLeaveScreenVo> page, @Param("cardNo") String cardNo, @Param("ifVerification") String ifVerification);
 
     List<ClasAttendanceVo> getClassHistoricalAttendance(@Param("startTime") Date startTime,@Param("endTime") Date endTime,@Param("id") Integer id);
+
+    List<AckDetailVo> ackDetail(@Param("userId")  Integer userId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
 }
 

+ 18 - 0
src/main/java/com/template/mapper/SmartCoordMapper.java

@@ -0,0 +1,18 @@
+package com.template.mapper;
+
+import com.template.model.pojo.SmartCoord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-06-21
+ */
+@Repository
+public interface SmartCoordMapper extends BaseMapper<SmartCoord> {
+
+}

+ 15 - 6
src/main/java/com/template/mapper/SmartUserMapper.java

@@ -24,7 +24,7 @@ import java.util.List;
 public interface SmartUserMapper extends BaseMapper<SmartUser> {
     List<AffiliateUserVo> queryAffiliateUserById(@Param("id") Integer id);
 
-    IPage<UserVo> querySmartUserPages(IPage<UserVo> page,@Param("departmentIds") List<Integer> departmentIds, @Param("name") String name);
+    IPage<UserVo> querySmartUserPages(IPage<UserVo> page, @Param("departmentIds") List<Integer> departmentIds, @Param("name") String name);
 
     List<SmartUser> querySmartUsers(@Param("departmentIds") List<Integer> departmentIds, @Param("name") String name);
 
@@ -38,7 +38,7 @@ public interface SmartUserMapper extends BaseMapper<SmartUser> {
 
     List<AffiliateParentVo> queryAffiliateParents(@Param("userId") Integer userId);
 
-    List<SmartUser> getAffiliateList(@Param("id")Integer id);
+    List<SmartUser> getAffiliateList(@Param("id") Integer id);
 
     SmartUserVo querySmartUserById(@Param("userId") Integer userId);
 
@@ -52,13 +52,22 @@ public interface SmartUserMapper extends BaseMapper<SmartUser> {
 
     List<SmartUser> querySmartParentByIds(@Param("studentIds") List<Integer> studentIds);
 
-    List<StatisticsCampusVo> getAccessStatisticsCampus(@Param("classId") Integer classId,@Param("startTime") LocalDateTime startTime,@Param("endTime") LocalDateTime endTime);
+    List<StatisticsCampusVo> getAccessStatisticsCampus(@Param("classId") Integer classId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
 
-    List<StatisticsCampusVo> getAttendanceStatisticsCampus(@Param("classId") Integer classId,@Param("startTime") LocalDateTime startTime,@Param("endTime") LocalDateTime endTime);
+    List<StatisticsCampusVo> getAttendanceStatisticsCampus(@Param("classId") Integer classId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
 
-    List<StatisticsCampusVo> getFaceDiscernStatisticsCampus(@Param("classId") Integer classId,@Param("startTime") LocalDateTime startTime,@Param("endTime") LocalDateTime endTime);
+    List<StatisticsCampusVo> getFaceDiscernStatisticsCampus(@Param("classId") Integer classId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
 
-    List<StatisticsCampusVo> getAckStatisticsCampus(@Param("classId") Integer classId,@Param("startTime") LocalDateTime startTime,@Param("endTime") LocalDateTime endTime);
+    List<StatisticsCampusVo> getAckStatisticsCampus(@Param("classId") Integer classId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
 
     List<StatisticsCampusVo> getClassStudent(@Param("classId") Integer classId);
+
+    List<StatisticsCampusManageVo> getAccessStatisticsCampusManage(@Param("classId") Integer classId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime,@Param("keyWord")String keyWord);
+
+    List<StatisticsCampusManageVo> getAttendanceStatisticsCampusManage(@Param("classId") Integer classId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime,@Param("keyWord")String keyWord);
+
+    List<StatisticsCampusManageVo> getFaceDiscernStatisticsCampusManage(@Param("classId") Integer classId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime,@Param("keyWord")String keyWord);
+
+    List<StatisticsCampusManageVo> getAckStatisticsCampusManage(@Param("classId") Integer classId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime,@Param("keyWord")String keyWord);
+
 }

+ 70 - 0
src/main/java/com/template/model/pojo/SmartCoord.java

@@ -0,0 +1,70 @@
+package com.template.model.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-06-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="SmartCoord对象", description="")
+public class SmartCoord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "x轴")
+    private String x;
+
+    @ApiModelProperty(value = "y轴")
+    private String y;
+
+    @ApiModelProperty(value = "地点")
+    private String address;
+
+    @ApiModelProperty(value = "地点类型")
+    private String type;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    @ApiModelProperty(value = "创建人员")
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @ApiModelProperty(value = "更新人员")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleted;
+
+
+}

+ 29 - 0
src/main/java/com/template/model/vo/AckDetailVo.java

@@ -0,0 +1,29 @@
+package com.template.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class AckDetailVo {
+    private String name;
+
+    private String cardNo;
+
+    @ApiModelProperty(value = "开始时间")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "请假原因")
+    private String reason;
+
+
+
+
+    @ApiModelProperty(value = "希沃发起时间")
+    private Date initiateTime;
+
+}

+ 29 - 0
src/main/java/com/template/model/vo/SelectTrackVo.java

@@ -0,0 +1,29 @@
+package com.template.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SelectTrackVo {
+    @ApiModelProperty(value = "名字")
+    private String name;
+
+    @ApiModelProperty(value = "类型")
+    private String type;
+
+    @ApiModelProperty(value = "地点")
+    private String location;
+
+    @ApiModelProperty(value = "图片")
+    private String image;
+
+    @ApiModelProperty(value = "发生时间")
+    private String dateTime;
+
+    @ApiModelProperty(value = "x轴")
+    private String x;
+
+    @ApiModelProperty(value = "y轴")
+    private String y;
+
+}

+ 28 - 0
src/main/java/com/template/model/vo/StatisticsCampusManageVo.java

@@ -0,0 +1,28 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+@Data
+public class StatisticsCampusManageVo {
+    private Integer userId;
+
+    private String gradeName;
+
+    private String className;
+
+    private String name;
+
+    private String cardNo;
+
+
+    @Override
+    public String toString() {
+        return "StatisticsCampusManageVo{" +
+                "userId=" + userId +
+                ", gradeName='" + gradeName + '\'' +
+                ", className='" + className + '\'' +
+                ", name='" + name + '\'' +
+                ", cardNo='" + cardNo + '\'' +
+                '}';
+    }
+}

+ 4 - 4
src/main/java/com/template/services/SmartAttendanceService.java

@@ -4,11 +4,9 @@ import com.template.model.pojo.SmartAttendance;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.template.model.pojo.SmartVisitor;
 import com.template.model.result.PageUtils;
-import com.template.model.vo.AskForLeaveScreenVo;
-import com.template.model.vo.AskForLeaveVo;
-import com.template.model.vo.ClasAttendanceVo;
-import com.template.model.vo.SmartAttendanceVo;
+import com.template.model.vo.*;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 
@@ -50,4 +48,6 @@ public interface SmartAttendanceService extends IService<SmartAttendance> {
     List<ClasAttendanceVo> getClassHistoricalAttendance(Date startTime, Date endTime, Integer id);
 
     Integer getClassAckHistoricalAttendance(int i, Date startTime, Date endTime, Integer id);
+
+    List<AckDetailVo> ackDetail(Integer userId, LocalDateTime startTime, LocalDateTime endTime);
 }

+ 17 - 0
src/main/java/com/template/services/SmartCoordService.java

@@ -0,0 +1,17 @@
+package com.template.services;
+
+import com.template.model.pojo.SmartCoord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-06-21
+ */
+public interface SmartCoordService extends IService<SmartCoord> {
+
+    SmartCoord getBytype(String location);
+}

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

@@ -157,4 +157,14 @@ public interface SmartUserService extends IService<SmartUser> {
     List<StatisticsCampusVo> getClassStudent(Integer classId);
 
     List<SmartUser> queryTeachers();
+
+    List<SmartUser> getAddressBook(Integer userId);
+
+    List<StatisticsCampusManageVo> getAccessStatisticsCampusManage(Integer classId, LocalDateTime startTime, LocalDateTime endTime,String keyWord);
+
+    List<StatisticsCampusManageVo> getAttendanceStatisticsCampusManage(Integer classId, LocalDateTime startTime, LocalDateTime endTime,String keyWord);
+
+    List<StatisticsCampusManageVo> getFaceDiscernStatisticsCampusManage(Integer classId, LocalDateTime startTime, LocalDateTime endTime,String keyWord);
+
+    List<StatisticsCampusManageVo> getAckStatisticsCampusManage(Integer classId, LocalDateTime startTime, LocalDateTime endTime, String keyWord);
 }

+ 8 - 5
src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java

@@ -9,16 +9,14 @@ import com.template.model.pojo.SmartAttendance;
 import com.template.mapper.SmartAttendanceMapper;
 import com.template.model.pojo.SmartVisitor;
 import com.template.model.result.PageUtils;
-import com.template.model.vo.AskForLeaveScreenVo;
-import com.template.model.vo.AskForLeaveVo;
-import com.template.model.vo.ClasAttendanceVo;
-import com.template.model.vo.SmartAttendanceVo;
+import com.template.model.vo.*;
 import com.template.services.SmartAttendanceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 
@@ -100,7 +98,7 @@ public class SmartAttendanceServiceImpl extends ServiceImpl<SmartAttendanceMappe
         LambdaQueryWrapper<SmartAttendance> wrapper=new LambdaQueryWrapper<>();
         wrapper.eq(SmartAttendance::getUserId,userId)
                 .between(SmartAttendance::getAttendTime,startTime,endTime)
-                .eq(SmartAttendance::getStatus,0)
+                .ne(SmartAttendance::getStatus,3)
                 .orderByDesc(SmartAttendance::getAttendTime);
         List<SmartAttendance> list = this.list(wrapper);
 
@@ -172,4 +170,9 @@ public class SmartAttendanceServiceImpl extends ServiceImpl<SmartAttendanceMappe
         Integer count = this.count(queryWrapper);
         return count;
     }
+
+    @Override
+    public List<AckDetailVo> ackDetail(Integer userId, LocalDateTime startTime, LocalDateTime endTime) {
+        return smartAttendanceMapper.ackDetail(userId,startTime,endTime);
+    }
 }

+ 29 - 0
src/main/java/com/template/services/impl/SmartCoordServiceImpl.java

@@ -0,0 +1,29 @@
+package com.template.services.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.template.model.pojo.SmartCoord;
+import com.template.mapper.SmartCoordMapper;
+import com.template.services.SmartCoordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-06-21
+ */
+@Service
+public class SmartCoordServiceImpl extends ServiceImpl<SmartCoordMapper, SmartCoord> implements SmartCoordService {
+
+    @Override
+    public SmartCoord getBytype(String location) {
+        LambdaQueryWrapper<SmartCoord> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(SmartCoord::getAddress,location);
+        SmartCoord smartCoord = this.getOne(wrapper);
+        return smartCoord;
+    }
+}

+ 29 - 0
src/main/java/com/template/services/impl/SmartUserServiceImpl.java

@@ -409,5 +409,34 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
         return result;
     }
 
+    @Override
+    public List<SmartUser> getAddressBook(Integer userId) {
+        LambdaQueryWrapper<SmartUser> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(SmartUser::getAffiliate,userId);
+        wrapper.eq(SmartUser::getIsCancel,0);
+        List<SmartUser> list = this.list(wrapper);
+        return list;
+    }
+
+    @Override
+    public List<StatisticsCampusManageVo> getAccessStatisticsCampusManage(Integer classId, LocalDateTime startTime, LocalDateTime endTime,String keyWord) {
+        return smartUserMapper.getAccessStatisticsCampusManage(classId,startTime,endTime,keyWord);
+    }
+
+    @Override
+    public List<StatisticsCampusManageVo> getAttendanceStatisticsCampusManage(Integer classId, LocalDateTime startTime, LocalDateTime endTime,String keyWord) {
+        return smartUserMapper.getAttendanceStatisticsCampusManage(classId,startTime,endTime,keyWord);
+    }
+
+    @Override
+    public List<StatisticsCampusManageVo> getFaceDiscernStatisticsCampusManage(Integer classId, LocalDateTime startTime, LocalDateTime endTime,String keyWord) {
+        return smartUserMapper.getFaceDiscernStatisticsCampusManage(classId,startTime,endTime,keyWord);
+    }
+
+    @Override
+    public List<StatisticsCampusManageVo> getAckStatisticsCampusManage(Integer classId, LocalDateTime startTime, LocalDateTime endTime, String keyWord) {
+        return smartUserMapper.getAckStatisticsCampusManage(classId,startTime,endTime,keyWord);
+    }
+
 
 }

+ 16 - 0
src/main/resources/mapper/template/SmartAttendanceMapper.xml

@@ -159,4 +159,20 @@
         GROUP BY
             `status`
     </select>
+    <select id="ackDetail" resultType="com.template.model.vo.AckDetailVo">
+        SELECT sat.xw_user_name  as name,
+               su.card_no        as cardNo,
+               sat.initiate_time as initiateTime,
+               sat.start_time    as startTime,
+               sat.end_time      as endTime,
+               sat.reason        as reason
+        FROM `smart_attendance` sat
+                 left join smart_user su
+                           on sat.user_id = su.id
+        where sat.`status` = 6
+          AND sat.deleted = 0
+          AND sat.user_id = #{userId}
+          AND sat.initiate_time >= #{startTime}
+          AND #{endTime} >= sat.initiate_time
+    </select>
 </mapper>

+ 5 - 0
src/main/resources/mapper/template/SmartCoordMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.template.mapper.SmartCoordMapper">
+
+</mapper>

+ 104 - 9
src/main/resources/mapper/template/SmartUserMapper.xml

@@ -329,16 +329,111 @@
         GROUP BY su.id
     </select>
     <select id="getClassStudent" resultType="com.template.model.vo.StatisticsCampusVo">
-        SELECT
-            su.id      as userId,
-            su.`name`  as name,
-            su.card_no as cardNo
-        FROM
-            `smart_user` su
-        WHERE
-            su.deleted = 0
+        SELECT su.id      as userId,
+               su.`name`  as name,
+               su.card_no as cardNo
+        FROM `smart_user` su
+        WHERE su.deleted = 0
           AND su.is_cancel = 0
           AND su.identity_id = 2
-          AND su.school_class=#{classId}
+          AND su.school_class = #{classId}
     </select>
+    <select id="getAccessStatisticsCampusManage" resultType="com.template.model.vo.StatisticsCampusManageVo">
+        SELECT su.id as userId,
+        su.`name` as name,
+        su.card_no as cardNo,
+        sc.`name` as className,
+        sg.`name` as gradeName
+        FROM `smart_user` su
+        LEFT JOIN smart_access sa on sa.user_id = su.id
+        LEFT JOIN smart_class sc on sc.id = su.school_class
+        LEFT JOIN smart_grade sg on sg.id = sc.grade_id
+        WHERE su.deleted = 0
+        AND su.is_cancel = 0
+        AND su.identity_id = 2
+        AND su.school_class = #{classId}
+        AND sa.date_time >= #{startTime}
+        AND #{endTime} >= sa.date_time
+        <if test="keyWord != null and keyWord != '' ">
+            and (su.name like '%' #{keyWord} '%' or su.card_no like '%' #{keyWord} '%')
+        </if>
+        GROUP BY su.id
+    </select>
+
+    <select id="getAttendanceStatisticsCampusManage"
+            resultType="com.template.model.vo.StatisticsCampusManageVo">
+        SELECT su.id as userId,
+        su.`name` as name,
+        su.card_no as cardNo,
+        sc.`name` as className,
+        sg.`name` as gradeName
+        FROM `smart_user` su
+        LEFT JOIN smart_attendance sat on sat.user_id = su.id
+        LEFT JOIN smart_class sc on sc.id = su.school_class
+        LEFT JOIN smart_grade sg on sg.id = sc.grade_id
+        WHERE su.deleted = 0
+        AND su.is_cancel = 0
+        AND su.identity_id = 2
+        AND su.school_class = #{classId}
+        AND sat.`status`!=3
+        AND sat.attend_time >= #{startTime}
+        AND #{endTime} >= sat.attend_time
+        <if test="keyWord != null and keyWord != '' ">
+            and (su.name like '%' #{keyWord} '%' or su.card_no like '%' #{keyWord} '%')
+        </if>
+        GROUP BY su.id
+    </select>
+
+    <select id="getFaceDiscernStatisticsCampusManage"
+            resultType="com.template.model.vo.StatisticsCampusManageVo">
+
+        SELECT su.id as userId,
+        su.`name` as name,
+        su.card_no as cardNo,
+        sc.`name` as className,
+        sg.`name` as gradeName
+        FROM
+        `smart_user` su
+        LEFT JOIN smart_face_discern sfd on sfd.user_id=su.id
+        LEFT JOIN smart_class sc on sc.id=su.school_class
+        LEFT JOIN smart_grade sg on sg.id=sc.grade_id
+        WHERE
+        su.deleted = 0
+        AND su.is_cancel = 0
+        AND su.identity_id = 2
+        AND su.school_class=#{classId}
+        AND sfd.date_time >= #{startTime}
+        AND #{endTime} >= sfd.date_time
+        <if test="keyWord != null and keyWord != '' ">
+            and (su.name like '%' #{keyWord} '%' or su.card_no like '%' #{keyWord} '%')
+        </if>
+        GROUP BY su.id
+
+
+    </select>
+    <select id="getAckStatisticsCampusManage" resultType="com.template.model.vo.StatisticsCampusManageVo">
+        SELECT su.id as userId,
+        su.`name` as name,
+        su.card_no as cardNo,
+        sc.`name` as className,
+        sg.`name` as gradeName
+        FROM
+        `smart_user` su
+        LEFT JOIN smart_attendance sat on sat.user_id=su.id
+        LEFT JOIN smart_class sc on sc.id=su.school_class
+        LEFT JOIN smart_grade sg on sg.id=sc.grade_id
+        WHERE
+        su.deleted = 0
+        AND su.is_cancel = 0
+        AND su.identity_id = 2
+        AND su.school_class=#{classId}
+        AND sat.`status`=6
+        AND sat.initiate_time >= #{startTime}
+        AND #{endTime} >= sat.initiate_time
+        <if test="keyWord != null and keyWord != '' ">
+            and (su.name like '%' #{keyWord} '%' or su.card_no like '%' #{keyWord} '%')
+        </if>
+        GROUP BY su.id
+    </select>
+
 </mapper>