1.辅导员导出去向填写记录

2.学院查看 导出去向填写记录 导出返校情况 查看 导出预计离校情况 查看 导出学生到家情况
This commit is contained in:
zhy
2025-09-30 09:52:23 +08:00
parent 79ba38fc3f
commit fb522488a8
7 changed files with 602 additions and 164 deletions

View File

@@ -31,7 +31,16 @@ public class SurItinerary extends BaseEntity{
private static final long serialVersionUID=1L;
/**
* 所属主题
*/
@ApiModelProperty("所属主题")
@TableField("survey_id")
// @Excel(name = "所属主题")
public Long surveyId;
@TableField(exist = false)
@Excel(name = "主题名称")
public String surveyName;
@TableField(exist = false)
@@ -40,18 +49,6 @@ private static final long serialVersionUID=1L;
@TableField(exist = false)
public String tNo;
@TableField(exist = false)
public String campusName;
@TableField(exist = false)
public String parkName;
@TableField(exist = false)
public String buildingName;
@TableField(exist = false)
public String roomNo;
/**
@@ -66,7 +63,7 @@ private static final long serialVersionUID=1L;
*/
@ApiModelProperty("学院id")
@TableField("dept_id")
@Excel(name = "学院id")
// @Excel(name = "学院id")
public Long deptId;
/**
@@ -77,6 +74,10 @@ private static final long serialVersionUID=1L;
@TableField(exist = false)
public String deptName;
@TableField("more_dept_name")
@Excel(name = "详细学院")
public String moreDeptName;
/**
* 学号
*/
@@ -90,14 +91,14 @@ private static final long serialVersionUID=1L;
*/
@ApiModelProperty("所属班级")
@TableField("class_id")
@Excel(name = "所属班级")
// @Excel(name = "所属班级")
public Long classId;
/**
* 班级名称
*/
@ApiModelProperty("所属班级")
@Excel(name = "所属班级")
@Excel(name = "班级")
@TableField(exist = false)
public String className;
@@ -140,7 +141,7 @@ private static final long serialVersionUID=1L;
*/
@ApiModelProperty("所在校区")
@TableField("school_district")
@Excel(name = "所在校区")
// @Excel(name = "所在校区")
public String schoolDistrict;
/**
@@ -148,7 +149,7 @@ private static final long serialVersionUID=1L;
*/
@ApiModelProperty("公寓楼")
@TableField("apartment")
@Excel(name = "公寓楼")
// @Excel(name = "公寓楼")
public String apartment;
/**
@@ -156,50 +157,127 @@ private static final long serialVersionUID=1L;
*/
@ApiModelProperty("宿舍号")
@TableField("room")
@Excel(name = "宿舍号")
// @Excel(name = "宿舍号")
public String room;
/**
* 计划返校时间
*/
@Excel(name = "住宿校区")
@TableField(exist = false)
public String campusName;
@Excel(name = "住宿园区")
@TableField(exist = false)
public String parkName;
@Excel(name = "住宿楼栋")
@TableField(exist = false)
public String buildingName;
@Excel(name = "宿舍号")
@TableField(exist = false)
public String roomNo;
@ApiModelProperty("是否离校")
@TableField("is_leave")
@Excel(name = "是否离校",readConverterExp = "0=否,1=是")
public String isLeave;
@ApiModelProperty("家长姓名(离校、留校)")
@TableField("fam_name")
@Excel(name = "家长姓名(离校、留校)")
public String famName;
@ApiModelProperty("家长电话(离校、留校)")
@TableField("fam_phone")
@Excel(name = "家长电话(离校、留校)")
public String famPhone;
@ApiModelProperty("家长是否知晓(离校、留校)")
@TableField("fam_know")
@Excel(name = "家长是否知晓(离校、留校)")
public String famKnow;
@ApiModelProperty("预计离校时间")
@TableField("will_leave_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "预计离校时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
public Date willLeaveTime;
@ApiModelProperty("去向地")
@TableField("will_addr")
@Excel(name = "去向地")
public String willAddr;
@ApiModelProperty("计划返校时间")
@TableField("scheduled_return_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "计划返校时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
public Date scheduledReturnTime;
/**
* 是否到校
*/
@ApiModelProperty("预计留校时间")
@TableField("will_stay_time")
@Excel(name = "预计留校时间")
public String willStayTime;
@ApiModelProperty("留校事由")
@TableField("stay_reason")
@Excel(name = "留校事由")
public String stayReason;
@ApiModelProperty("离校、留校审核状态")
@TableField("leave_status")
@Excel(name = "离校、留校审核状态",dictType = "sur_status")
public String leaveStatus;
@ApiModelProperty("是否到家")
@TableField("is_home")
@Excel(name = "是否到家")
public String isHome;
@ApiModelProperty("到家定位")
@TableField("home_gps")
// @Excel(name = "到家定位")
public String homeGps;
@TableField("home_gps_addr")
public String homeGpsAddr;
@TableField("home_submit")
public String homeSubmit;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("home_gps_time")
@Excel(name = "到家定位时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
public Date homeGpsTime;
@ApiModelProperty("是否到校")
@TableField("reach_school_status")
@Excel(name = "是否到校")
public String reachSchoolStatus;
/**
* 家长姓名
*/
@ApiModelProperty("家长姓名")
@TableField("parent_name")
@Excel(name = "家长姓名")
public String parentName;
@ApiModelProperty("到校定位")
@TableField("attend_school_gps")
// @Excel(name = "到校定位")
public String attendSchoolGps;
/**
* 家长电话
* 到校时间
*/
@ApiModelProperty("家长电话")
@TableField("parent_phone")
@Excel(name = "家长电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
public String parentPhone;
@ApiModelProperty("到校时间")
@TableField("attend_school_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "到校时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
public Date attendSchoolTime;
/**
* 家长是否知晓
*/
@ApiModelProperty("家长是否知晓")
@TableField("know")
@Excel(name = "家长是否知晓")
public String know;
/**
* 未返校原因分类
@@ -218,112 +296,43 @@ private static final long serialVersionUID=1L;
public String absentSchoolRemark;
/**
* 到校定位
* 家长姓名
*/
@ApiModelProperty("到校定位")
@TableField("attend_school_gps")
@Excel(name = "到校定位")
public String attendSchoolGps;
@ApiModelProperty("家长姓名(返校)")
@TableField("parent_name")
@Excel(name = "家长姓名(返校)")
public String parentName;
/**
* 到校时间
* 家长电话
*/
@ApiModelProperty("到校时间")
@TableField("attend_school_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "到校时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
public Date attendSchoolTime;
@ApiModelProperty("家长电话(返校)")
@TableField("parent_phone")
@Excel(name = "家长电话(返校)")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
public String parentPhone;
/**
* 家长是否知晓
*/
@ApiModelProperty("家长是否知晓(返校)")
@TableField("know")
@Excel(name = "家长是否知晓(返校)")
public String know;
/**
* 状态0.保存1.保存,2.已审核
*/
@ApiModelProperty("状态0.保存1.待审核,2.已审核")
@ApiModelProperty("返校审核状态")
@TableField("status")
@Excel(name = "状态0.保存1.待审核,2.已审核")
@Excel(name = "返校审核状态",dictType = "sur_status")
public String status;
/**
* 所属主题
*/
@ApiModelProperty("所属主题")
@TableField("survey_id")
@Excel(name = "所属主题")
public Long surveyId;
@ApiModelProperty("预计离校时间")
@TableField("will_leave_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "预计离校时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
public Date willLeaveTime;
@ApiModelProperty("是否离校")
@TableField("is_leave")
@Excel(name = "是否离校")
public String isLeave;
@ApiModelProperty("家长姓名1")
@TableField("fam_name")
@Excel(name = "家长姓名1")
public String famName;
@ApiModelProperty("家长电话1")
@TableField("fam_phone")
@Excel(name = "家长电话1")
public String famPhone;
@ApiModelProperty("家长是否知晓1")
@TableField("fam_know")
@Excel(name = "家长是否知晓1")
public String famKnow;
@ApiModelProperty("预计留校时间")
@TableField("will_stay_time")
@Excel(name = "预计留校时间")
public String willStayTime;
@ApiModelProperty("离校或留校状态")
@TableField("leave_status")
@Excel(name = "离校或留校状态")
public String leaveStatus;
@ApiModelProperty("是否到家")
@TableField("is_home")
@Excel(name = "是否到家")
public String isHome;
@ApiModelProperty("到家定位")
@TableField("home_gps")
@Excel(name = "到家定位")
public String homeGps;
@ApiModelProperty("留校事由")
@TableField("stay_reason")
@Excel(name = "留校事由")
public String stayReason;
@ApiModelProperty("去向地")
@TableField("will_addr")
@Excel(name = "去向地")
public String willAddr;
@TableField("home_gps_addr")
public String homeGpsAddr;
@TableField("home_submit")
public String homeSubmit;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("home_gps_time")
public Date homeGpsTime;
@TableField("more_dept_name")
public String moreDeptName;
@TableField("stu_fdy_name")
@Excel(name = "学生辅导员姓名")
public String stuFdyName;
@TableField(exist = false)

View File

@@ -0,0 +1,39 @@
package com.srs.survey.domain.dto;
import com.srs.common.annotation.Excel;
public class XwReturnRes {
@Excel(name = "班级名称")
public String className;
@Excel(name = "学生数")
public int stuNum;
@Excel(name = "实习人数")
public String shixi;
@Excel(name = "应返校人数")
public String yingfanxiao;
@Excel(name = "实际累计返校")
public String yifanxiao;
@Excel(name = "未返校")
public String weifanxiao;
@Excel(name = "路上")
public String lushang;
@Excel(name = "病假")
public String bingjia;
@Excel(name = "无票")
public String wupiao;
@Excel(name = "无课请事假延长")
public String wuke;
@Excel(name = "事假")
public String shijia;
@Excel(name = "红白事")
public String hongbaishi;
@Excel(name = "考试")
public String kaoshi;
@Excel(name = "参赛")
public String cansai;
@Excel(name = "兵检或役前训练")
public String bingjian;
@Excel(name = "退学或休学")
public String tuixue;
}

View File

@@ -3,11 +3,13 @@ package com.srs.survey.mapper;
import java.util.List;
import java.util.Map;
import com.github.yulichang.base.MPJBaseMapper;
import com.srs.survey.domain.SurItinerary;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.srs.survey.domain.dto.LeaveRes;
import com.srs.survey.domain.dto.ReturnRes;
import com.srs.survey.domain.dto.SubmitRes;
import com.srs.survey.domain.dto.XwReturnRes;
import com.srs.survey.domain.vo.SurItineraryStatisticsVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -19,18 +21,26 @@ import org.apache.ibatis.annotations.Param;
* @date 2025-03-14
*/
@Mapper
public interface SurItineraryMapper extends BaseMapper<SurItinerary> {
public interface SurItineraryMapper extends MPJBaseMapper<SurItinerary> {
public List<Map<String, Object>> countWillLeave(Long surveyId);
public List<Map<String, Object>> countFdyClassWillLeave(@Param("surveyId") Long surveyId,@Param("fdyNo") String fdyNo);
public List<Map<String, Object>> countXwWillLeave(@Param("surveyId") Long surveyId,@Param("deptId") Long deptId);
public List<Map<String, Object>> listSubmitRes(Long surveyId);
public List<Map<String, Object>> listXwSubmitRes(@Param("surveyId") Long surveyId ,@Param("deptId") Long deptId);
public List<LeaveRes> listLeaveRes(Long surveyId);
public List<ReturnRes> listReturnRes(Long surveyId);
public List<XwReturnRes> listXwReturnRes(SurItinerary param);
public List<SurItinerary> listView(SurItinerary param);
@@ -38,6 +48,8 @@ public interface SurItineraryMapper extends BaseMapper<SurItinerary> {
public List<Map<String, Object>> listReturnRes1(Long surveyId);
public List<Map<String, Object>> listXwReturnRes1(@Param("surveyId") Long surveyId ,@Param("deptId") Long deptId);
/**
* 查询学生假期返校
*

View File

@@ -10,6 +10,7 @@ import com.srs.survey.domain.SurItinerary;
import com.srs.survey.domain.dto.LeaveRes;
import com.srs.survey.domain.dto.ReturnRes;
import com.srs.survey.domain.dto.SubmitRes;
import com.srs.survey.domain.dto.XwReturnRes;
import com.srs.survey.domain.vo.SurItineraryStatisticsVo;
import org.springframework.web.bind.annotation.RequestBody;
@@ -29,17 +30,25 @@ public interface ISurItineraryService extends IService<SurItinerary> {
public Map<String,Object> listFdyStuLeave(SurItinerary param);
public List<Map<String, Object>> listXwSubmitRes(Long surveyId , Long deptId);
public List<Map<String, Object>> listSubmitRes(Long surveyId);
public List<Map<String, Object>> countWillLeave(Long surveyId);
public List<Map<String, Object>> countXwWillLeave(Long surveyId,Long deptId);
public List<Map<String, Object>> countFdyClassWillLeave(Long surveyId,String fdyNo);
public List<Map<String, Object>> listReturnRes1(Long surveyId);
public List<Map<String, Object>> listXwReturnRes1(Long surveyId,Long deptId);
public List<LeaveRes> listLeaveRes(Long surveyId);
public List<XwReturnRes> listXwReturnRes(SurItinerary param);
public List<ReturnRes> listReturnRes(Long surveyId);
public AjaxResult getStuCampus();

View File

@@ -1,6 +1,5 @@
package com.srs.survey.service.impl;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -8,6 +7,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.domain.entity.SysUser;
import com.srs.common.utils.WeChatUtil;
@@ -29,6 +29,7 @@ import com.srs.dormitory.mapper.SrsDormitoryStudentMapper;
import com.srs.survey.domain.SurSurvey;
import com.srs.survey.domain.dto.LeaveRes;
import com.srs.survey.domain.dto.ReturnRes;
import com.srs.survey.domain.dto.XwReturnRes;
import com.srs.survey.domain.vo.SurItineraryStatisticsVo;
import com.srs.survey.mapper.SurSurveyMapper;
import com.srs.system.mapper.SysUserMapper;
@@ -40,7 +41,6 @@ import com.srs.survey.domain.SurItinerary;
import com.srs.survey.service.ISurItineraryService;
import static com.srs.common.utils.DateUtils.getNowDate;
import static com.srs.common.utils.PageUtils.startPage;
import static com.srs.common.utils.SecurityUtils.*;
/**
@@ -408,6 +408,11 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
return result;
}
@Override
public List<Map<String, Object>> listXwReturnRes1(Long surveyId,Long deptId){
return surItineraryMapper.listXwReturnRes1(surveyId,deptId);
}
@Override
public List<Map<String, Object>> listReturnRes1(Long surveyId){
List<Map<String, Object>> list = surItineraryMapper.listReturnRes1(surveyId);
@@ -483,12 +488,63 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
return surItineraryMapper.countWillLeave(surveyId);
}
@Override
public List<Map<String, Object>> countXwWillLeave(Long surveyId,Long deptId){
return surItineraryMapper.countXwWillLeave(surveyId,deptId);
}
@Override
public List<Map<String, Object>> countFdyClassWillLeave(Long surveyId,String fdyNo){
return surItineraryMapper.countFdyClassWillLeave(surveyId,fdyNo);
}
@Override
public List<Map<String, Object>> listXwSubmitRes(Long surveyId , Long deptId){
SurSurvey surSurvey = surSurveyMapper.selectById(surveyId);
List<String> counts;
if(surSurvey != null){
String countDate = surSurvey.countDate;
if(countDate!= null && !countDate.isEmpty()){
counts = List.of(countDate.split(","));
} else {
counts = new ArrayList<>();
}
} else {
counts = new ArrayList<>();
}
List<Map<String, Object>> list = surItineraryMapper.listXwSubmitRes(surveyId,deptId);
list.forEach(map->{
for (int i = 0 ; i < counts.size() ; i++) {
String countD = counts.get(i);
if( map.get("class_id") != null){
String dateStr = countD+" 12:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date = LocalDateTime.parse(dateStr, formatter);
LocalDateTime prevDate = date.minusDays(1);
Long class_id = Long.parseLong(map.get("class_id").toString());
MPJLambdaWrapper<SurItinerary> queryWrapper = new MPJLambdaWrapper<SurItinerary>();
queryWrapper.leftJoin(ViewStuInfo.class, ViewStuInfo::getStuNo, SurItinerary::getStuNo);
queryWrapper.eq(ViewStuInfo::getClassId, class_id);
queryWrapper.eq(SurItinerary::getSurveyId, surveyId);
queryWrapper.isNotNull("home_gps_time");
queryWrapper.le("home_gps_time", date);
if(i != 0){
queryWrapper.gt("home_gps_time", prevDate);
}
long count = surItineraryMapper.selectJoinCount(queryWrapper);
map.put(countD+" 12:00:00前", count);
}
}
});
return list;
}
@Override
public List<Map<String, Object>> listSubmitRes(Long surveyId){
SurSurvey surSurvey = surSurveyMapper.selectById(surveyId);
@@ -539,6 +595,12 @@ public class SurItineraryServiceImpl extends ServiceImpl<SurItineraryMapper,SurI
return surItineraryMapper.listLeaveRes(surveyId);
}
@Override
public List<XwReturnRes> listXwReturnRes(SurItinerary param){
return surItineraryMapper.listXwReturnRes(param);
}
@Override
public List<ReturnRes> listReturnRes(Long surveyId){
return surItineraryMapper.listReturnRes(surveyId);