Prechádzať zdrojové kódy

fast:完成查看学生进出学校记录

sakura 1 rok pred
rodič
commit
557a496956

+ 10 - 0
school-in-out-admin/src/main/java/com/schoolinout/web/controller/system/AccessLogController.java

@@ -7,6 +7,7 @@ import com.schoolinout.common.core.page.TableDataInfo;
 import com.schoolinout.common.enums.BusinessType;
 import com.schoolinout.common.utils.poi.ExcelUtil;
 import com.schoolinout.system.domain.AccessLog;
+import com.schoolinout.system.domain.dto.InOutLogDto;
 import com.schoolinout.system.service.IAccessLogService;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +30,15 @@ public class AccessLogController extends BaseController {
     @Autowired
     private IAccessLogService accessLogService;
 
+
+    /**
+     * 查询学生进出学校记录
+     */
+    @PostMapping("/student/inout/list")
+    public AjaxResult searchStudentInOutLog(@RequestBody InOutLogDto dto) {
+        return success(accessLogService.queryStudentInOutLog(dto));
+    }
+
     /**
      * 查询进出学校记录列表
      */

+ 46 - 0
school-in-out-system/src/main/java/com/schoolinout/system/domain/dto/InOutLogDto.java

@@ -0,0 +1,46 @@
+package com.schoolinout.system.domain.dto;
+
+/**
+ * @author sakura
+ * @date 2024/1/8 16:16:58 Mon
+ */
+public class InOutLogDto {
+    private String month;
+    private String year;
+
+    private String toDay;
+
+    private Long studentId;
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getMonth() {
+        return month;
+    }
+
+    public void setMonth(String month) {
+        this.month = month;
+    }
+
+    public String getYear() {
+        return year;
+    }
+
+    public void setYear(String year) {
+        this.year = year;
+    }
+
+    public String getToDay() {
+        return toDay;
+    }
+
+    public void setToDay(String toDay) {
+        this.toDay = toDay;
+    }
+}

+ 58 - 0
school-in-out-system/src/main/java/com/schoolinout/system/domain/vo/InOutLogVo.java

@@ -0,0 +1,58 @@
+package com.schoolinout.system.domain.vo;
+
+import java.util.Date;
+
+/**
+ * 学生进出记录视图实体
+ *
+ * @author sakura
+ * @date 2024/1/8 16:16:48 Mon
+ */
+public class InOutLogVo {
+
+    private String schoolName;
+    private String studentName;
+    private Date day;
+    private Date inTime;
+    private Date outTime;
+
+    public String getSchoolName() {
+        return schoolName;
+    }
+
+    public void setSchoolName(String schoolName) {
+        this.schoolName = schoolName;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public Date getDay() {
+        return day;
+    }
+
+    public void setDay(Date day) {
+        this.day = day;
+    }
+
+    public Date getInTime() {
+        return inTime;
+    }
+
+    public void setInTime(Date inTime) {
+        this.inTime = inTime;
+    }
+
+    public Date getOutTime() {
+        return outTime;
+    }
+
+    public void setOutTime(Date outTime) {
+        this.outTime = outTime;
+    }
+}

+ 10 - 0
school-in-out-system/src/main/java/com/schoolinout/system/mapper/AccessLogMapper.java

@@ -2,6 +2,8 @@ package com.schoolinout.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.schoolinout.system.domain.AccessLog;
+import com.schoolinout.system.domain.dto.InOutLogDto;
+import com.schoolinout.system.domain.vo.InOutLogVo;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -61,4 +63,12 @@ public interface AccessLogMapper extends BaseMapper<AccessLog> {
      * @return 结果
      */
     public int deleteAccessLogByIds(Long[] ids);
+
+    /**
+     * 查询学生进出学校记录
+     *
+     * @param dto 查询条件, toDay 这个条件如果不为空就查询当天
+     * @return 结果
+     */
+    List<InOutLogVo> selectInOutByInOutLogDto(InOutLogDto dto);
 }

+ 21 - 10
school-in-out-system/src/main/java/com/schoolinout/system/service/IAccessLogService.java

@@ -1,19 +1,30 @@
 package com.schoolinout.system.service;
 
-import java.util.List;
 import com.schoolinout.system.domain.AccessLog;
+import com.schoolinout.system.domain.dto.InOutLogDto;
+import com.schoolinout.system.domain.vo.InOutLogVo;
+
+import java.util.List;
 
 /**
  * 进出学校记录Service接口
- * 
+ *
  * @author sakura
  * @date 2024-01-03
  */
-public interface IAccessLogService 
-{
+public interface IAccessLogService {
+
+    /**
+     * 查询学生进出学校记录
+     *
+     * @param dto 查询条件
+     * @return 进出学校记录
+     */
+    public List<InOutLogVo> queryStudentInOutLog(InOutLogDto dto);
+
     /**
      * 查询进出学校记录
-     * 
+     *
      * @param id 进出学校记录主键
      * @return 进出学校记录
      */
@@ -21,7 +32,7 @@ public interface IAccessLogService
 
     /**
      * 查询进出学校记录列表
-     * 
+     *
      * @param accessLog 进出学校记录
      * @return 进出学校记录集合
      */
@@ -29,7 +40,7 @@ public interface IAccessLogService
 
     /**
      * 新增进出学校记录
-     * 
+     *
      * @param accessLog 进出学校记录
      * @return 结果
      */
@@ -37,7 +48,7 @@ public interface IAccessLogService
 
     /**
      * 修改进出学校记录
-     * 
+     *
      * @param accessLog 进出学校记录
      * @return 结果
      */
@@ -45,7 +56,7 @@ public interface IAccessLogService
 
     /**
      * 批量删除进出学校记录
-     * 
+     *
      * @param ids 需要删除的进出学校记录主键集合
      * @return 结果
      */
@@ -53,7 +64,7 @@ public interface IAccessLogService
 
     /**
      * 删除进出学校记录信息
-     * 
+     *
      * @param id 进出学校记录主键
      * @return 结果
      */

+ 26 - 25
school-in-out-system/src/main/java/com/schoolinout/system/service/impl/AccessLogServiceImpl.java

@@ -1,96 +1,97 @@
 package com.schoolinout.system.service.impl;
 
-import java.util.List;
 import com.schoolinout.common.utils.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.schoolinout.system.mapper.AccessLogMapper;
 import com.schoolinout.system.domain.AccessLog;
+import com.schoolinout.system.domain.dto.InOutLogDto;
+import com.schoolinout.system.domain.vo.InOutLogVo;
+import com.schoolinout.system.mapper.AccessLogMapper;
 import com.schoolinout.system.service.IAccessLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * 进出学校记录Service业务层处理
- * 
+ *
  * @author sakura
  * @date 2024-01-03
  */
 @Service
-public class AccessLogServiceImpl implements IAccessLogService 
-{
+public class AccessLogServiceImpl implements IAccessLogService {
     @Autowired
     private AccessLogMapper accessLogMapper;
 
+    @Override
+    public List<InOutLogVo> queryStudentInOutLog(InOutLogDto dto) {
+        return accessLogMapper.selectInOutByInOutLogDto(dto);
+    }
+
     /**
      * 查询进出学校记录
-     * 
+     *
      * @param id 进出学校记录主键
      * @return 进出学校记录
      */
     @Override
-    public AccessLog selectAccessLogById(Long id)
-    {
+    public AccessLog selectAccessLogById(Long id) {
         return accessLogMapper.selectAccessLogById(id);
     }
 
     /**
      * 查询进出学校记录列表
-     * 
+     *
      * @param accessLog 进出学校记录
      * @return 进出学校记录
      */
     @Override
-    public List<AccessLog> selectAccessLogList(AccessLog accessLog)
-    {
+    public List<AccessLog> selectAccessLogList(AccessLog accessLog) {
         return accessLogMapper.selectAccessLogList(accessLog);
     }
 
     /**
      * 新增进出学校记录
-     * 
+     *
      * @param accessLog 进出学校记录
      * @return 结果
      */
     @Override
-    public int insertAccessLog(AccessLog accessLog)
-    {
+    public int insertAccessLog(AccessLog accessLog) {
         accessLog.setCreateTime(DateUtils.getNowDate());
         return accessLogMapper.insertAccessLog(accessLog);
     }
 
     /**
      * 修改进出学校记录
-     * 
+     *
      * @param accessLog 进出学校记录
      * @return 结果
      */
     @Override
-    public int updateAccessLog(AccessLog accessLog)
-    {
+    public int updateAccessLog(AccessLog accessLog) {
         accessLog.setUpdateTime(DateUtils.getNowDate());
         return accessLogMapper.updateAccessLog(accessLog);
     }
 
     /**
      * 批量删除进出学校记录
-     * 
+     *
      * @param ids 需要删除的进出学校记录主键
      * @return 结果
      */
     @Override
-    public int deleteAccessLogByIds(Long[] ids)
-    {
+    public int deleteAccessLogByIds(Long[] ids) {
         return accessLogMapper.deleteAccessLogByIds(ids);
     }
 
     /**
      * 删除进出学校记录信息
-     * 
+     *
      * @param id 进出学校记录主键
      * @return 结果
      */
     @Override
-    public int deleteAccessLogById(Long id)
-    {
+    public int deleteAccessLogById(Long id) {
         return accessLogMapper.deleteAccessLogById(id);
     }
 }

+ 23 - 0
school-in-out-system/src/main/resources/mapper/system/AccessLogMapper.xml

@@ -44,6 +44,29 @@
         <include refid="selectAccessLogVo"/>
         where id = #{id}
     </select>
+    <select id="selectInOutByInOutLogDto" resultType="com.schoolinout.system.domain.vo.InOutLogVo">
+        SELECT
+        log.in_time,
+        log.out_time,
+        log.create_time as `day`,
+        student_name
+        FROM tb_school_access_log log
+        JOIN tb_school_student student ON log.student_id = student.id
+        <where>
+            <if test="studentId != null">
+                AND log.student_id = #{studentId}
+            </if>
+            <if test="month != null and month != ''">
+                AND MONTH(log.create_time) = #{month}
+            </if>
+            <if test="year != null and year != ''">
+                AND year(log.create_time) = #{year}
+            </if>
+            <if test="toDay != null and toDay != ''">
+                AND DATE(log.create_time) = #{toDay}
+            </if>
+        </where>
+    </select>
 
     <insert id="insertAccessLog" parameterType="AccessLog" useGeneratedKeys="true" keyProperty="id">
         insert into tb_school_access_log

+ 10 - 0
school-in-out-ui/src/api/system/access_log.js

@@ -9,6 +9,16 @@ export function listAccess_log(query) {
   })
 }
 
+
+// 查询学生进出学校记录
+export function listStudentInOutLog(data) {
+  return request({
+    url: '/system/access_log/student/inout/list',
+    method: 'post',
+    data
+  })
+}
+
 // 查询进出学校记录详细
 export function getAccess_log(id) {
   return request({

+ 21 - 1
school-in-out-ui/src/views/system/student/index.vue

@@ -196,6 +196,13 @@
 						v-hasPermi="['system:student:remove']"
 						>删除</el-button
 					>
+					<el-button
+						size="mini"
+						type="text"
+						icon="el-icon-view"
+						@click="handleListInoutLog(scope.row)"
+						>查看进出记录</el-button
+					>
 				</template>
 			</el-table-column>
 		</el-table>
@@ -330,11 +337,15 @@
 				<el-button @click="cancel">取 消</el-button>
 			</div>
 		</el-dialog>
+
+		<!-- 进出学校记录列表 -->
+		<student-inout-log ref="inoutLog" />
 	</div>
 </template>
 
 <script>
-import { listClazzOption } from '@/api/system/clazz'
+import { listClazzOption } from '@/api/system/clazz';
+
 import {
 	listStudent,
 	getStudent,
@@ -343,8 +354,12 @@ import {
 	updateStudent,
 } from '@/api/system/student';
 import Textyixia from '@/mixin/Textyixia';
+import StudentInoutLog from './module/StudentInoutLog';
 export default {
 	name: 'Student',
+	components: {
+		StudentInoutLog
+	},
 	mixins: [Textyixia],
 	dicts: ['sys_user_sex'],
 	data() {
@@ -555,6 +570,10 @@ export default {
 				})
 			}
 		},
+		/** 查看学生进出口记录 */
+		handleListInoutLog(row) {
+			this.$refs.inoutLog.handleOpen(row);
+		},
 		/** 导出按钮操作 */
 		handleExport() {
 			this.download(
@@ -565,6 +584,7 @@ export default {
 				`student_${new Date().getTime()}.xlsx`
 			);
 		},
+
 	},
 };
 </script>

+ 83 - 0
school-in-out-ui/src/views/system/student/module/StudentInoutLog.vue

@@ -0,0 +1,83 @@
+<template>
+	<el-dialog
+		:title="title"
+		:visible.sync="open"
+		width="60%"
+		:before-close="handleClose">
+		<el-tabs v-model="activeName" @tab-click="handleClick">
+			<el-tab-pane label="今天" name="toDay"></el-tab-pane>
+			<el-tab-pane label="年" name="year"></el-tab-pane>
+			<el-tab-pane label="月" name="month"></el-tab-pane>
+		</el-tabs>
+
+		<!-- 时间线 -->
+		<el-timeline v-loading="loading">
+			<el-timeline-item v-for="(item, index) in listData" :key="index" :timestamp="parseTime(item.day, '{y}-{m}-{d}')" placement="top">
+				<el-card>
+					<h4>进入学校时间</h4>
+					<p>{{ parseTime(item.inTime, '{y}-{m}-{d}') }}</p>
+
+					<div v-if="item.outTime !== null">
+						<h4>离开学校时间</h4>
+						<p>{{ parseTime(item.outTime, '{y}-{m}-{d}') }}</p>
+					</div>
+				</el-card>
+			</el-timeline-item>
+		</el-timeline>
+	</el-dialog>
+
+</template>
+
+<script>
+import { listStudentInOutLog } from '@/api/system/access_log';
+export default {
+	name: 'StudentInoutLog',
+	data() {
+		return {
+			open: false,
+			activeName: 'toDay',
+			title: '',
+			form: {
+				toDay: '',
+			},
+			loading: false,
+			listData: []
+		}
+	},
+	methods: {
+		getList() {
+			if (this.activeName === 'toDay') {
+				this.form.toDay = this.parseTime(new Date(), '{y}-{m}-{d}')
+			} else if (this.activeName === 'month') {
+				this.form.month = this.parseTime(new Date(), '{y}-{m}')
+			} else if (this.activeName === 'year') {
+				this.form.year = this.parseTime(new Date(), '{y}');
+			}
+			this.loading = true
+			listStudentInOutLog(this.form).then(res => {
+				console.log(res);
+				this.listData = res.data;
+			}).finally(() => {
+				this.loading = false
+			})
+		},
+		handleOpen(row) {
+			this.title = row.studentName + '的进出记录';
+			this.form.studentId = row.id
+			this.open = true;
+			this.getList();
+		},
+		handleClose() {
+			this.open = false;
+		},
+		handleClick(tab, event) {
+			console.log(tab);
+			console.log(this.activeName);
+		},
+	},
+}
+</script>
+
+<style>
+
+</style>