wuzhen update
This commit is contained in:
1 parent
b0d47046c4
commit
cbfe6be210
11 files changed
+2235
No files matched your search
+131
@@ -0,0 +1,131 @@
|
||||
package org.dromara.zsjy.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyInternshipVisitBo;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyInternshipVisitQueryBo;
|
||||
import org.dromara.zsjy.domain.vo.ZsjyInternshipVisitVo;
|
||||
import org.dromara.zsjy.service.IZsjyInternshipVisitService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 班主任走访Controller
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/zsjy/internshipVisit")
|
||||
@Tag(name = "班主任走访管理", description = "班主任走访管理")
|
||||
public class ZsjyInternshipVisitController extends BaseController {
|
||||
|
||||
private final IZsjyInternshipVisitService zsjyInternshipVisitService;
|
||||
|
||||
/**
|
||||
* 查询班主任走访列表
|
||||
*/
|
||||
@Operation(summary = "查询班主任走访列表")
|
||||
@SaCheckPermission("zsjy:internshipVisit:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<ZsjyInternshipVisitVo> list(ZsjyInternshipVisitQueryBo bo, PageQuery pageQuery) {
|
||||
return zsjyInternshipVisitService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出班主任走访列表
|
||||
*/
|
||||
@Operation(summary = "导出班主任走访列表")
|
||||
@SaCheckPermission("zsjy:internshipVisit:export")
|
||||
@Log(title = "班主任走访", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(ZsjyInternshipVisitQueryBo bo, HttpServletResponse response) {
|
||||
List<ZsjyInternshipVisitVo> list = zsjyInternshipVisitService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "班主任走访", ZsjyInternshipVisitVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任走访详细信息
|
||||
*/
|
||||
@Operation(summary = "获取班主任走访详细信息")
|
||||
@SaCheckPermission("zsjy:internshipVisit:query")
|
||||
@GetMapping("/{visitId}")
|
||||
@Parameters({
|
||||
@Parameter(name = "visitId", description = "走访记录ID", required = true)
|
||||
})
|
||||
public R<ZsjyInternshipVisitVo> getInfo(@NotNull(message = "走访记录ID不能为空")
|
||||
@PathVariable Long visitId) {
|
||||
return R.ok(zsjyInternshipVisitService.queryById(visitId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增班主任走访
|
||||
*/
|
||||
@Operation(summary = "新增班主任走访")
|
||||
@SaCheckPermission("zsjy:internshipVisit:add")
|
||||
@Log(title = "班主任走访", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ZsjyInternshipVisitBo bo) {
|
||||
return toAjax(zsjyInternshipVisitService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改班主任走访
|
||||
*/
|
||||
@Operation(summary = "修改班主任走访")
|
||||
@SaCheckPermission("zsjy:internshipVisit:edit")
|
||||
@Log(title = "班主任走访", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ZsjyInternshipVisitBo bo) {
|
||||
return toAjax(zsjyInternshipVisitService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除班主任走访
|
||||
*/
|
||||
@Operation(summary = "删除班主任走访")
|
||||
@SaCheckPermission("zsjy:internshipVisit:remove")
|
||||
@Log(title = "班主任走访", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{visitIds}")
|
||||
@Parameters({
|
||||
@Parameter(name = "visitIds", description = "走访记录ID串", required = true)
|
||||
})
|
||||
public R<Void> remove(@NotEmpty(message = "走访记录ID不能为空")
|
||||
@PathVariable Long[] visitIds) {
|
||||
return toAjax(zsjyInternshipVisitService.deleteWithValidByIds(List.of(visitIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取可选项列表(学生选择)
|
||||
*/
|
||||
@Operation(summary = "获取可选项列表")
|
||||
@SaCheckPermission("zsjy:internshipVisit:list")
|
||||
@GetMapping("/options")
|
||||
public R<List<ZsjyInternshipVisitVo>> getOptions() {
|
||||
List<ZsjyInternshipVisitVo> list = zsjyInternshipVisitService.getStudentOptions();
|
||||
return R.ok(list);
|
||||
}
|
||||
}
|
||||
+173
@@ -0,0 +1,173 @@
|
||||
package org.dromara.zsjy.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 班主任走访实体对象 zsjy_internship_visit
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("zsjy_internship_visit")
|
||||
public class ZsjyInternshipVisit extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 走访记录ID
|
||||
*/
|
||||
@TableId(value = "visit_id", type = IdType.ASSIGN_ID)
|
||||
private Long visitId;
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@TableField("tenant_id")
|
||||
private String tenantId;
|
||||
|
||||
/**
|
||||
* 实习ID
|
||||
*/
|
||||
@TableField("internship_id")
|
||||
private Long internshipId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
@TableField("student_id")
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 企业名称
|
||||
*/
|
||||
@TableField("company_name")
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* 企业地址
|
||||
*/
|
||||
@TableField("company_address")
|
||||
private String companyAddress;
|
||||
|
||||
/**
|
||||
* 走访时间
|
||||
*/
|
||||
@TableField("visit_date")
|
||||
private Date visitDate;
|
||||
|
||||
/**
|
||||
* 走访人员
|
||||
*/
|
||||
@TableField("visitor_name")
|
||||
private String visitorName;
|
||||
|
||||
/**
|
||||
* 走访人员职务
|
||||
*/
|
||||
@TableField("visitor_position")
|
||||
private String visitorPosition;
|
||||
|
||||
/**
|
||||
* 走访目的
|
||||
*/
|
||||
@TableField("visit_purpose")
|
||||
private String visitPurpose;
|
||||
|
||||
/**
|
||||
* 企业情况
|
||||
*/
|
||||
@TableField("company_situation")
|
||||
private String companySituation;
|
||||
|
||||
/**
|
||||
* 学生表现
|
||||
*/
|
||||
@TableField("student_performance")
|
||||
private String studentPerformance;
|
||||
|
||||
/**
|
||||
* 发现问题
|
||||
*/
|
||||
@TableField("problems_found")
|
||||
private String problemsFound;
|
||||
|
||||
/**
|
||||
* 改进建议
|
||||
*/
|
||||
@TableField("suggestions")
|
||||
private String suggestions;
|
||||
|
||||
/**
|
||||
* 走访总结
|
||||
*/
|
||||
@TableField("visit_summary")
|
||||
private String visitSummary;
|
||||
|
||||
/**
|
||||
* 现场照片(JSON格式)
|
||||
*/
|
||||
@TableField("visit_images")
|
||||
private String visitImages;
|
||||
|
||||
/**
|
||||
* 走访文件附件(JSON格式)
|
||||
*/
|
||||
@TableField("visit_files")
|
||||
private String visitFiles;
|
||||
|
||||
/**
|
||||
* 走访状态:数据库存储数字编码(0-草稿 1-已提交 2-已审核)
|
||||
*/
|
||||
@TableField("status")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@TableField("remark")
|
||||
private String remark;
|
||||
|
||||
// ==================== 扩展字段(数据库中不存在,通过关联查询获取) ====================
|
||||
|
||||
/**
|
||||
* 学生姓名 (通过student_id关联查询获取)
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学号 (通过student_id关联查询获取)
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String studentNumber;
|
||||
|
||||
/**
|
||||
* 班级名称 (通过student_id关联查询获取)
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 专业名称 (通过student_id关联查询获取)
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 学院名称 (通过student_id关联查询获取)
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String collegeName;
|
||||
}
|
||||
+131
@@ -0,0 +1,131 @@
|
||||
package org.dromara.zsjy.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.zsjy.domain.ZsjyInternshipVisit;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 班主任走访业务对象 ZsjyInternshipVisitBo
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = ZsjyInternshipVisit.class, reverseConvertGenerate = false)
|
||||
public class ZsjyInternshipVisitBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 走访记录ID
|
||||
*/
|
||||
@NotNull(message = "走访记录ID不能为空", groups = { EditGroup.class })
|
||||
private Long visitId;
|
||||
|
||||
/**
|
||||
* 租户编号
|
||||
*/
|
||||
private String tenantId;
|
||||
|
||||
/**
|
||||
* 实习ID
|
||||
*/
|
||||
@NotNull(message = "实习ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long internshipId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
@NotNull(message = "学生ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 企业名称
|
||||
*/
|
||||
@NotBlank(message = "企业名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* 企业地址
|
||||
*/
|
||||
private String companyAddress;
|
||||
|
||||
/**
|
||||
* 走访时间
|
||||
*/
|
||||
@NotNull(message = "走访时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date visitDate;
|
||||
|
||||
/**
|
||||
* 走访人员
|
||||
*/
|
||||
@NotBlank(message = "走访人员不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String visitorName;
|
||||
|
||||
/**
|
||||
* 走访人员职务
|
||||
*/
|
||||
private String visitorPosition;
|
||||
|
||||
/**
|
||||
* 走访目的
|
||||
*/
|
||||
@NotBlank(message = "走访目的不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String visitPurpose;
|
||||
|
||||
/**
|
||||
* 企业情况
|
||||
*/
|
||||
private String companySituation;
|
||||
|
||||
/**
|
||||
* 学生表现
|
||||
*/
|
||||
private String studentPerformance;
|
||||
|
||||
/**
|
||||
* 发现问题
|
||||
*/
|
||||
private String problemsFound;
|
||||
|
||||
/**
|
||||
* 改进建议
|
||||
*/
|
||||
private String suggestions;
|
||||
|
||||
/**
|
||||
* 走访总结
|
||||
*/
|
||||
private String visitSummary;
|
||||
|
||||
/**
|
||||
* 现场照片(JSON格式)
|
||||
*/
|
||||
private String visitImages;
|
||||
|
||||
/**
|
||||
* 走访文件附件(JSON格式)
|
||||
*/
|
||||
private String visitFiles;
|
||||
|
||||
/**
|
||||
* 走访状态:数据库存储数字编码(0-草稿 1-已提交 2-已审核)
|
||||
*/
|
||||
@Pattern(regexp = "^[0-2]$",
|
||||
message = "走访状态只能是:0(草稿)、1(已提交)、2(已审核)",
|
||||
groups = { AddGroup.class, EditGroup.class })
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package org.dromara.zsjy.domain.bo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 班主任走访查询业务对象 ZsjyInternshipVisitQueryBo
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "班主任走访查询业务对象")
|
||||
public class ZsjyInternshipVisitQueryBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 走访记录ID
|
||||
*/
|
||||
@Schema(description = "走访记录ID")
|
||||
private Long visitId;
|
||||
|
||||
/**
|
||||
* 实习ID
|
||||
*/
|
||||
@Schema(description = "实习ID")
|
||||
private Long internshipId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
@Schema(description = "学生ID")
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
@Schema(description = "学生姓名")
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@Schema(description = "学号")
|
||||
private String studentNumber;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
@Schema(description = "班级名称")
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 企业名称
|
||||
*/
|
||||
@Schema(description = "企业名称")
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* 走访人员
|
||||
*/
|
||||
@Schema(description = "走访人员")
|
||||
private String visitorName;
|
||||
|
||||
/**
|
||||
* 走访状态:数据库存储数字编码(0-草稿 1-已提交 2-已审核),前端通过字典显示为中文
|
||||
*/
|
||||
@Schema(description = "走访状态")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 走访开始时间
|
||||
*/
|
||||
@Schema(description = "走访开始时间")
|
||||
private Date visitStartDate;
|
||||
|
||||
/**
|
||||
* 走访结束时间
|
||||
*/
|
||||
@Schema(description = "走访结束时间")
|
||||
private Date visitEndDate;
|
||||
}
|
||||
+201
@@ -0,0 +1,201 @@
|
||||
package org.dromara.zsjy.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.dromara.zsjy.domain.ZsjyInternshipVisit;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 班主任走访视图对象 ZsjyInternshipVisitVo
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@AutoMapper(target = ZsjyInternshipVisit.class)
|
||||
@Schema(description = "班主任走访视图对象")
|
||||
public class ZsjyInternshipVisitVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 走访记录ID
|
||||
*/
|
||||
@Schema(description = "走访记录ID")
|
||||
private Long visitId;
|
||||
|
||||
/**
|
||||
* 租户编号
|
||||
*/
|
||||
@Schema(description = "租户编号")
|
||||
private String tenantId;
|
||||
|
||||
/**
|
||||
* 实习ID
|
||||
*/
|
||||
@Schema(description = "实习ID")
|
||||
private Long internshipId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
@Schema(description = "学生ID")
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 企业名称
|
||||
*/
|
||||
@Schema(description = "企业名称")
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* 企业地址
|
||||
*/
|
||||
@Schema(description = "企业地址")
|
||||
private String companyAddress;
|
||||
|
||||
/**
|
||||
* 走访时间
|
||||
*/
|
||||
@Schema(description = "走访时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date visitDate;
|
||||
|
||||
/**
|
||||
* 走访人员
|
||||
*/
|
||||
@Schema(description = "走访人员")
|
||||
private String visitorName;
|
||||
|
||||
/**
|
||||
* 走访人员职务
|
||||
*/
|
||||
@Schema(description = "走访人员职务")
|
||||
private String visitorPosition;
|
||||
|
||||
/**
|
||||
* 走访目的
|
||||
*/
|
||||
@Schema(description = "走访目的")
|
||||
private String visitPurpose;
|
||||
|
||||
/**
|
||||
* 企业情况
|
||||
*/
|
||||
@Schema(description = "企业情况")
|
||||
private String companySituation;
|
||||
|
||||
/**
|
||||
* 学生表现
|
||||
*/
|
||||
@Schema(description = "学生表现")
|
||||
private String studentPerformance;
|
||||
|
||||
/**
|
||||
* 发现问题
|
||||
*/
|
||||
@Schema(description = "发现问题")
|
||||
private String problemsFound;
|
||||
|
||||
/**
|
||||
* 改进建议
|
||||
*/
|
||||
@Schema(description = "改进建议")
|
||||
private String suggestions;
|
||||
|
||||
/**
|
||||
* 走访总结
|
||||
*/
|
||||
@Schema(description = "走访总结")
|
||||
private String visitSummary;
|
||||
|
||||
/**
|
||||
* 现场照片(JSON格式)
|
||||
*/
|
||||
@Schema(description = "现场照片")
|
||||
private String visitImages;
|
||||
|
||||
/**
|
||||
* 走访文件附件(JSON格式)
|
||||
*/
|
||||
@Schema(description = "走访文件附件")
|
||||
private String visitFiles;
|
||||
|
||||
/**
|
||||
* 走访状态:数据库存储数字编码(0-草稿 1-已提交 2-已审核),前端通过字典显示为中文
|
||||
*/
|
||||
@Schema(description = "走访状态")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Schema(description = "备注")
|
||||
private String remark;
|
||||
|
||||
// ==================== 关联查询字段 ====================
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
@Schema(description = "学生姓名")
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@Schema(description = "学号")
|
||||
private String studentNumber;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
@Schema(description = "班级名称")
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
@Schema(description = "专业名称")
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
@Schema(description = "学院名称")
|
||||
private String collegeName;
|
||||
|
||||
// ==================== 统一基础字段(强制性,避免MyBatis映射错误) ====================
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
@Schema(description = "创建者")
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Schema(description = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
@Schema(description = "更新者")
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@Schema(description = "更新时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
package org.dromara.zsjy.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.zsjy.domain.ZsjyInternshipVisit;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyInternshipVisitQueryBo;
|
||||
import org.dromara.zsjy.domain.vo.ZsjyInternshipVisitVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 班主任走访Mapper接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface ZsjyInternshipVisitMapper extends BaseMapperPlus<ZsjyInternshipVisit, ZsjyInternshipVisitVo> {
|
||||
|
||||
/**
|
||||
* 根据ID查询班主任走访详情(包含关联学生信息)
|
||||
* @param visitId 走访记录ID
|
||||
* @return 走访详情VO
|
||||
*/
|
||||
ZsjyInternshipVisitVo selectById(Long visitId);
|
||||
|
||||
/**
|
||||
* 查询班主任走访列表(包含关联学生信息)
|
||||
* @param bo 查询条件
|
||||
* @return 走访记录列表
|
||||
*/
|
||||
List<ZsjyInternshipVisitVo> queryList(ZsjyInternshipVisitQueryBo bo);
|
||||
|
||||
/**
|
||||
* 分页查询班主任走访列表(包含关联学生信息)
|
||||
* @param page 分页参数
|
||||
* @param bo 查询条件
|
||||
* @return 走访记录分页结果
|
||||
*/
|
||||
Page<ZsjyInternshipVisitVo> queryPageList(Page<?> page, ZsjyInternshipVisitQueryBo bo);
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
package org.dromara.zsjy.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyInternshipVisitBo;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyInternshipVisitQueryBo;
|
||||
import org.dromara.zsjy.domain.vo.ZsjyInternshipVisitVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 班主任走访Service接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface IZsjyInternshipVisitService {
|
||||
|
||||
/**
|
||||
* 查询班主任走访
|
||||
*/
|
||||
ZsjyInternshipVisitVo queryById(Long visitId);
|
||||
|
||||
/**
|
||||
* 查询班主任走访列表
|
||||
*/
|
||||
TableDataInfo<ZsjyInternshipVisitVo> queryPageList(ZsjyInternshipVisitQueryBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询班主任走访列表
|
||||
*/
|
||||
List<ZsjyInternshipVisitVo> queryList(ZsjyInternshipVisitQueryBo bo);
|
||||
|
||||
/**
|
||||
* 新增班主任走访
|
||||
*/
|
||||
Boolean insertByBo(ZsjyInternshipVisitBo bo);
|
||||
|
||||
/**
|
||||
* 修改班主任走访
|
||||
*/
|
||||
Boolean updateByBo(ZsjyInternshipVisitBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除班主任走访信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 获取学生选项列表(用于下拉选择)
|
||||
*/
|
||||
List<ZsjyInternshipVisitVo> getStudentOptions();
|
||||
}
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
package org.dromara.zsjy.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.zsjy.domain.ZsjyInternshipVisit;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyInternshipVisitBo;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyInternshipVisitQueryBo;
|
||||
import org.dromara.zsjy.domain.vo.ZsjyInternshipVisitVo;
|
||||
import org.dromara.zsjy.mapper.ZsjyInternshipVisitMapper;
|
||||
import org.dromara.zsjy.service.IZsjyInternshipVisitService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 班主任走访Service业务层处理
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class ZsjyInternshipVisitServiceImpl implements IZsjyInternshipVisitService {
|
||||
|
||||
private final ZsjyInternshipVisitMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询班主任走访
|
||||
*/
|
||||
@Override
|
||||
public ZsjyInternshipVisitVo queryById(Long visitId){
|
||||
return baseMapper.selectById(visitId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班主任走访列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<ZsjyInternshipVisitVo> queryPageList(ZsjyInternshipVisitQueryBo bo, PageQuery pageQuery) {
|
||||
// 使用自定义分页查询方法获取包含学生信息的完整数据
|
||||
Page<ZsjyInternshipVisitVo> result = baseMapper.queryPageList(pageQuery.build(), bo);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班主任走访列表
|
||||
*/
|
||||
@Override
|
||||
public List<ZsjyInternshipVisitVo> queryList(ZsjyInternshipVisitQueryBo bo) {
|
||||
// 使用自定义查询方法获取包含学生信息的完整数据
|
||||
return baseMapper.queryList(bo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增班主任走访
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(ZsjyInternshipVisitBo bo) {
|
||||
ZsjyInternshipVisit add = MapstructUtils.convert(bo, ZsjyInternshipVisit.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setVisitId(add.getVisitId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改班主任走访
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(ZsjyInternshipVisitBo bo) {
|
||||
ZsjyInternshipVisit update = MapstructUtils.convert(bo, ZsjyInternshipVisit.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(ZsjyInternshipVisit entity){
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除班主任走访
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生选项列表(用于下拉选择)
|
||||
*/
|
||||
@Override
|
||||
public List<ZsjyInternshipVisitVo> getStudentOptions() {
|
||||
// TODO 实现获取有实习信息的学生列表
|
||||
LambdaQueryWrapper<ZsjyInternshipVisit> lqw = Wrappers.lambdaQuery();
|
||||
lqw.select(ZsjyInternshipVisit::getStudentId, ZsjyInternshipVisit::getInternshipId);
|
||||
lqw.groupBy(ZsjyInternshipVisit::getStudentId);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
}
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
<?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="org.dromara.zsjy.mapper.ZsjyInternshipVisitMapper">
|
||||
|
||||
<resultMap type="org.dromara.zsjy.domain.vo.ZsjyInternshipVisitVo" id="ZsjyInternshipVisitResult">
|
||||
<result property="visitId" column="visit_id" />
|
||||
<result property="tenantId" column="tenant_id" />
|
||||
<result property="internshipId" column="internship_id" />
|
||||
<result property="studentId" column="student_id" />
|
||||
<result property="companyName" column="company_name" />
|
||||
<result property="companyAddress" column="company_address" />
|
||||
<result property="visitDate" column="visit_date" />
|
||||
<result property="visitorName" column="visitor_name" />
|
||||
<result property="visitorPosition" column="visitor_position" />
|
||||
<result property="visitPurpose" column="visit_purpose" />
|
||||
<result property="companySituation" column="company_situation" />
|
||||
<result property="studentPerformance" column="student_performance" />
|
||||
<result property="problemsFound" column="problems_found" />
|
||||
<result property="suggestions" column="suggestions" />
|
||||
<result property="visitSummary" column="visit_summary" />
|
||||
<result property="visitImages" column="visit_images" />
|
||||
<result property="visitFiles" column="visit_files" />
|
||||
<result property="status" column="status" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<!-- 关联查询字段 -->
|
||||
<result property="studentName" column="student_name" />
|
||||
<result property="studentNumber" column="student_number" />
|
||||
<result property="className" column="class_name" />
|
||||
<result property="majorName" column="major_name" />
|
||||
<result property="collegeName" column="college_name" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectZsjyInternshipVisitVo">
|
||||
select
|
||||
v.visit_id,
|
||||
v.tenant_id,
|
||||
v.internship_id,
|
||||
v.student_id,
|
||||
v.company_name,
|
||||
v.company_address,
|
||||
v.visit_date,
|
||||
v.visitor_name,
|
||||
v.visitor_position,
|
||||
v.visit_purpose,
|
||||
v.company_situation,
|
||||
v.student_performance,
|
||||
v.problems_found,
|
||||
v.suggestions,
|
||||
v.visit_summary,
|
||||
v.visit_images,
|
||||
v.visit_files,
|
||||
v.status,
|
||||
v.remark,
|
||||
v.create_by,
|
||||
v.create_time,
|
||||
v.update_by,
|
||||
v.update_time,
|
||||
-- 关联查询学生信息
|
||||
s.name as student_name,
|
||||
s.student_no as student_number,
|
||||
s.class_name as class_name,
|
||||
s.major_name as major_name,
|
||||
s.college_name as college_name
|
||||
from zsjy_internship_visit v
|
||||
left join zsjy_internship_info ii on v.internship_id = ii.internship_id and ii.tenant_id = '000000'
|
||||
left join xg_student_msg s on v.student_id = s.id and s.tenant_id = '000000' and s.deleted = 0
|
||||
</sql>
|
||||
|
||||
<select id="queryList" parameterType="org.dromara.zsjy.domain.bo.ZsjyInternshipVisitQueryBo" resultMap="ZsjyInternshipVisitResult">
|
||||
<include refid="selectZsjyInternshipVisitVo"/>
|
||||
<where>
|
||||
v.deleted = 0 and v.tenant_id = '000000'
|
||||
<if test="visitId != null">
|
||||
and v.visit_id = #{visitId}
|
||||
</if>
|
||||
<if test="internshipId != null">
|
||||
and v.internship_id = #{internshipId}
|
||||
</if>
|
||||
<if test="studentId != null">
|
||||
and v.student_id = #{studentId}
|
||||
</if>
|
||||
<if test="studentName != null and studentName != ''">
|
||||
and s.name like concat('%', #{studentName}, '%')
|
||||
</if>
|
||||
<if test="studentNumber != null and studentNumber != ''">
|
||||
and s.student_no like concat('%', #{studentNumber}, '%')
|
||||
</if>
|
||||
<if test="className != null and className != ''">
|
||||
and s.class_name like concat('%', #{className}, '%')
|
||||
</if>
|
||||
<if test="companyName != null and companyName != ''">
|
||||
and v.company_name like concat('%', #{companyName}, '%')
|
||||
</if>
|
||||
<if test="visitorName != null and visitorName != ''">
|
||||
and v.visitor_name like concat('%', #{visitorName}, '%')
|
||||
</if>
|
||||
<if test="status != null and status != ''">
|
||||
and v.status = #{status}
|
||||
</if>
|
||||
<if test="visitStartDate != null">
|
||||
and v.visit_date >= #{visitStartDate}
|
||||
</if>
|
||||
<if test="visitEndDate != null">
|
||||
and v.visit_date <= #{visitEndDate}
|
||||
</if>
|
||||
</where>
|
||||
order by v.visit_date desc, v.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="queryPageList" parameterType="org.dromara.zsjy.domain.bo.ZsjyInternshipVisitQueryBo" resultMap="ZsjyInternshipVisitResult">
|
||||
<include refid="selectZsjyInternshipVisitVo"/>
|
||||
<where>
|
||||
v.deleted = 0 and v.tenant_id = '000000'
|
||||
<if test="bo.visitId != null">
|
||||
and v.visit_id = #{bo.visitId}
|
||||
</if>
|
||||
<if test="bo.internshipId != null">
|
||||
and v.internship_id = #{bo.internshipId}
|
||||
</if>
|
||||
<if test="bo.studentId != null">
|
||||
and v.student_id = #{bo.studentId}
|
||||
</if>
|
||||
<if test="bo.studentName != null and bo.studentName != ''">
|
||||
and s.name like concat('%', #{bo.studentName}, '%')
|
||||
</if>
|
||||
<if test="bo.studentNumber != null and bo.studentNumber != ''">
|
||||
and s.student_no like concat('%', #{bo.studentNumber}, '%')
|
||||
</if>
|
||||
<if test="bo.className != null and bo.className != ''">
|
||||
and s.class_name like concat('%', #{bo.className}, '%')
|
||||
</if>
|
||||
<if test="bo.companyName != null and bo.companyName != ''">
|
||||
and v.company_name like concat('%', #{bo.companyName}, '%')
|
||||
</if>
|
||||
<if test="bo.visitorName != null and bo.visitorName != ''">
|
||||
and v.visitor_name like concat('%', #{bo.visitorName}, '%')
|
||||
</if>
|
||||
<if test="bo.status != null and bo.status != ''">
|
||||
and v.status = #{bo.status}
|
||||
</if>
|
||||
<if test="bo.visitStartDate != null">
|
||||
and v.visit_date >= #{bo.visitStartDate}
|
||||
</if>
|
||||
<if test="bo.visitEndDate != null">
|
||||
and v.visit_date <= #{bo.visitEndDate}
|
||||
</if>
|
||||
</where>
|
||||
order by v.visit_date desc, v.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectById" parameterType="Long" resultMap="ZsjyInternshipVisitResult">
|
||||
<include refid="selectZsjyInternshipVisitVo"/>
|
||||
where v.visit_id = #{visitId} and v.deleted = 0 and v.tenant_id = '000000'
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,85 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { InternshipVisitVO, InternshipVisitQuery, InternshipVisitAddBO, InternshipVisitEditBO } from '@/api/zsjy/types';
|
||||
import { TableDataInfo, R } from '@/api/types';
|
||||
|
||||
/**
|
||||
* 查询班主任走访记录列表
|
||||
* @param query 查询参数
|
||||
*/
|
||||
export const listInternshipVisit = (query?: InternshipVisitQuery): AxiosPromise<TableDataInfo<InternshipVisitVO>> => {
|
||||
return request({
|
||||
url: '/zsjy/internshipVisit/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询班主任走访记录详细信息
|
||||
* @param visitId 走访记录ID
|
||||
*/
|
||||
export const getInternshipVisit = (visitId: string | number): AxiosPromise<R<InternshipVisitVO>> => {
|
||||
return request({
|
||||
url: `/zsjy/internshipVisit/${visitId}`,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增班主任走访记录
|
||||
* @param data 走访记录信息
|
||||
*/
|
||||
export const addInternshipVisit = (data: InternshipVisitAddBO): AxiosPromise<R<void>> => {
|
||||
return request({
|
||||
url: '/zsjy/internshipVisit',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改班主任走访记录
|
||||
* @param data 走访记录信息
|
||||
*/
|
||||
export const updateInternshipVisit = (data: InternshipVisitEditBO): AxiosPromise<R<void>> => {
|
||||
return request({
|
||||
url: '/zsjy/internshipVisit',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除班主任走访记录
|
||||
* @param visitIds 走访记录ID
|
||||
*/
|
||||
export const delInternshipVisit = (visitIds: string | number | Array<string | number>): AxiosPromise<R<void>> => {
|
||||
return request({
|
||||
url: `/zsjy/internshipVisit/${visitIds}`,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 导出班主任走访记录列表
|
||||
* @param query 查询参数
|
||||
*/
|
||||
export const exportInternshipVisit = (query: InternshipVisitQuery) => {
|
||||
return request({
|
||||
url: '/zsjy/internshipVisit/export',
|
||||
method: 'post',
|
||||
data: query,
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取可选项列表(学生选择)
|
||||
*/
|
||||
export const getInternshipVisitOptions = (): AxiosPromise<R<InternshipVisitVO[]>> => {
|
||||
return request({
|
||||
url: '/zsjy/internshipVisit/options',
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user