This commit is contained in:
zlwu committed 2025-08-10 13:03:57 +08:00
commit 84d57c6906
22 files changed
+59 -689

No files matched your search

@@ -26,10 +26,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
<<<<<<< HEAD
import lombok.extern.slf4j.Slf4j;
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
import java.util.List;
import java.util.Map;
@@ -41,10 +38,7 @@ import java.util.HashMap;
* @author ruoyi
* @date 2025-01-01
*/
<<<<<<< HEAD
@Slf4j
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
@Validated
@Tag(name = "奖学金申请记录管理", description = "奖学金申请记录管理Controller")
@RestController
@@ -97,7 +91,6 @@ public class JcbtScholarshipApplicationController extends BaseController {
@PutMapping
@Operation(summary = "修改奖学金申请记录")
public R<Void> edit(@Parameter(description = "奖学金申请记录") @Validated(EditGroup.class) @RequestBody JcbtScholarshipApplicationBo bo) {
<<<<<<< HEAD
log.info("🔍 [DEBUG] Controller.edit 开始执行");
log.info("🔍 [DEBUG] 接收到的BO对象: {}", bo);
log.info("🔍 [DEBUG] 关键字段检查:");
@@ -107,7 +100,7 @@ public class JcbtScholarshipApplicationController extends BaseController {
log.info(" - status: {}", bo.getStatus());
log.info(" - currentStatus: {}", bo.getCurrentStatus());
log.info(" - reviewComment: {}", bo.getReviewComment());
try {
boolean result = applicationService.updateByBo(bo);
log.info("🔍 [DEBUG] Service.updateByBo 执行结果: {}", result);
@@ -118,9 +111,6 @@ public class JcbtScholarshipApplicationController extends BaseController {
log.error("❌ [ERROR] 异常消息: {}", e.getMessage());
throw e;
}
=======
return toAjax(applicationService.updateByBo(bo));
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
/**
@@ -367,7 +357,6 @@ public class JcbtScholarshipApplicationController extends BaseController {
}
return R.ok(result);
}
<<<<<<< HEAD
/**
* 调试接口:详细SQL日志输出测试
@@ -425,6 +414,4 @@ public class JcbtScholarshipApplicationController extends BaseController {
return R.ok(result);
}
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
@@ -1,10 +1,7 @@
package org.dromara.jcbt.domain;
import com.baomidou.mybatisplus.annotation.*;
<<<<<<< HEAD
import com.fasterxml.jackson.annotation.JsonIgnore;
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
@@ -23,7 +20,6 @@ import java.util.Date;
@TableName("jcbt_scholarship_application")
public class JcbtScholarshipApplication extends BaseEntity {
<<<<<<< HEAD
/**
* 重写父类的createDept字段,排除此字段因为数据库表中不存在create_dept列
* 通过重新声明字段并标记为不存在来避免MyBatis-Plus自动处理
@@ -37,8 +33,6 @@ public class JcbtScholarshipApplication extends BaseEntity {
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
@Serial
private static final long serialVersionUID = 1L;
@@ -49,15 +43,12 @@ public class JcbtScholarshipApplication extends BaseEntity {
private Long id;
/**
<<<<<<< HEAD
* 申请编号
*/
@TableField("application_no")
private String applicationNo;
/**
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
* 批次ID
*/
private Long batchId;
@@ -70,12 +61,8 @@ public class JcbtScholarshipApplication extends BaseEntity {
/**
* 学生学号
*/
<<<<<<< HEAD
@TableField("student_no")
private String studentNo;
=======
private String studentCode;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 学生姓名
@@ -93,15 +80,9 @@ public class JcbtScholarshipApplication extends BaseEntity {
private Long deptId;
/**
<<<<<<< HEAD
* 专业ID
*/
private Long majorId;
=======
* 学院名称
*/
private String deptName;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 班级ID
@@ -109,40 +90,14 @@ public class JcbtScholarshipApplication extends BaseEntity {
private Long classId;
/**
<<<<<<< HEAD
* 申请类型:RECOMMEND-教师推荐,AUTO-自动评定,DIRECT-直接指定
*/
@TableField("application_type")
=======
* 班级名称
*/
private String className;
/**
* 申请人类型:STUDENT-学生申请,TEACHER-教师代申请
*/
private String applicantType;
/**
* 申请人ID(班主任ID)
*/
private Long applicantId;
/**
* 申请人姓名(班主任姓名)
*/
private String applicantName;
/**
* 申请类型:RECOMMEND-教师推荐,AUTO-自动评定,DIRECT-直接指定
*/
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
private String applicationType;
/**
* 申请原因
*/
<<<<<<< HEAD
@TableField("apply_reason")
private String applyReason;
@@ -183,113 +138,12 @@ public class JcbtScholarshipApplication extends BaseEntity {
*/
@TableField("current_status")
private String currentStatus;
=======
private String applicationReason;
/**
* 申请说明
*/
private String applicationDescription;
/**
* 综合测评成绩
*/
private Double comprehensiveScore;
/**
* 学习成绩
*/
private Double academicScore;
/**
* 德育成绩
*/
private Double moralScore;
/**
* 体育成绩
*/
private Double physicalScore;
/**
* 美育成绩
*/
private Double aestheticScore;
/**
* 劳育成绩
*/
private Double laborScore;
/**
* 获奖情况
*/
private String awards;
/**
* 社会实践情况
*/
private String socialPractice;
/**
* 家庭经济情况
*/
private String familyEconomicStatus;
/**
* 申请状态:DRAFT-草稿,SUBMITTED-已提交,REVIEWING-审核中,APPROVED-已通过,REJECTED-已拒绝,WITHDRAWN-已撤回
*/
private String status;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 提交时间
*/
private Date submitTime;
<<<<<<< HEAD
=======
/**
* 审核时间
*/
private Date reviewTime;
/**
* 审核人ID
*/
private Long reviewerId;
/**
* 审核人姓名
*/
private String reviewerName;
/**
* 审核意见
*/
private String reviewComment;
/**
* 是否需要材料:0-否,1-是
*/
private Integer requireMaterials;
/**
* 材料上传状态:PENDING-待上传,PARTIAL-部分上传,COMPLETE-完整上传
*/
private String materialStatus;
/**
* 排序号
*/
private Integer sortOrder;
/**
* 备注
*/
private String remark;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 租户ID
@@ -98,7 +98,6 @@ public class JcbtScholarshipBatch extends BaseEntity {
private String noticeContent;
/**
<<<<<<< HEAD
* 租户ID
*/
@TableField("tenant_id")
@@ -111,8 +110,6 @@ public class JcbtScholarshipBatch extends BaseEntity {
private Integer deleted;
/**
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
* 关联的奖学金类型ID列表(非数据库字段)
*/
@TableField(exist = false)
@@ -56,10 +56,7 @@ public class JcbtScholarshipCompatibility extends BaseEntity {
/**
* 租户ID
*/
<<<<<<< HEAD
@TableField("tenant_id")
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
private Long tenantId;
/**
@@ -45,11 +45,7 @@ public class JcbtScholarshipApplicationBo extends BaseEntity {
*/
@NotBlank(message = "学生学号不能为空", groups = { AddGroup.class, EditGroup.class })
@Size(max = 50, message = "学生学号长度不能超过50个字符")
<<<<<<< HEAD
private String studentNo;
=======
private String studentCode;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 学生姓名
@@ -87,20 +83,7 @@ public class JcbtScholarshipApplicationBo extends BaseEntity {
@Size(max = 100, message = "班级名称长度不能超过100个字符")
private String className;
<<<<<<< HEAD
// 已删除 applicantType 和 applicantId 字段
=======
/**
* 申请人类型:STUDENT-学生申请,TEACHER-教师代申请
*/
@NotBlank(message = "申请人类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String applicantType;
/**
* 申请人ID(班主任ID)
*/
private Long applicantId;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 申请人姓名(班主任姓名)
@@ -161,7 +144,6 @@ public class JcbtScholarshipApplicationBo extends BaseEntity {
private Double aestheticScore;
/**
<<<<<<< HEAD
* 劳动成绩
*/
@DecimalMin(value = "0", message = "劳动成绩不能为负数")
@@ -198,37 +180,9 @@ public class JcbtScholarshipApplicationBo extends BaseEntity {
* 当前状态
*/
private String currentStatus;
/**
* 状态字段(前端使用,映射到currentStatus)
=======
* 劳育成绩
*/
@DecimalMin(value = "0", message = "劳育成绩不能为负数")
@DecimalMax(value = "100", message = "劳育成绩不能超过100分")
private Double laborScore;
/**
* 获奖情况
*/
@Size(max = 2000, message = "获奖情况长度不能超过2000个字符")
private String awards;
/**
* 社会实践情况
*/
@Size(max = 2000, message = "社会实践情况长度不能超过2000个字符")
private String socialPractice;
/**
* 家庭经济情况
*/
@Size(max = 1000, message = "家庭经济情况长度不能超过1000个字符")
private String familyEconomicStatus;
/**
* 申请状态:DRAFT-草稿,SUBMITTED-已提交,REVIEWING-审核中,APPROVED-已通过,REJECTED-已拒绝,WITHDRAWN-已撤回
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
*/
private String status;
@@ -236,28 +190,27 @@ public class JcbtScholarshipApplicationBo extends BaseEntity {
* 提交时间
*/
private Date submitTime;
<<<<<<< HEAD
/**
* 审核评语
*/
@Size(max = 1000, message = "审核评语长度不能超过1000个字符")
private String reviewComment;
// Getter和Setter方法,确保status和currentStatus保持同步
public String getStatus() {
return this.currentStatus;
}
public void setStatus(String status) {
this.status = status;
this.currentStatus = status;
}
public String getCurrentStatus() {
return this.currentStatus;
}
public void setCurrentStatus(String currentStatus) {
this.currentStatus = currentStatus;
this.status = currentStatus;
@@ -276,51 +229,4 @@ public class JcbtScholarshipApplicationBo extends BaseEntity {
public void setApplicationStatus(String applicationStatus) {
this.currentStatus = applicationStatus;
}
=======
/**
* 审核时间
*/
private Date reviewTime;
/**
* 审核人ID
*/
private Long reviewerId;
/**
* 审核人姓名
*/
@Size(max = 100, message = "审核人姓名长度不能超过100个字符")
private String reviewerName;
/**
* 审核意见
*/
@Size(max = 1000, message = "审核意见长度不能超过1000个字符")
private String reviewComment;
/**
* 是否需要材料:0-否,1-是
*/
private Integer requireMaterials;
/**
* 材料上传状态:PENDING-待上传,PARTIAL-部分上传,COMPLETE-完整上传
*/
private String materialStatus;
/**
* 排序号
*/
@Min(value = 0, message = "排序号不能小于0")
private Integer sortOrder;
/**
* 备注
*/
@Size(max = 500, message = "备注长度不能超过500个字符")
private String remark;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
@@ -118,12 +118,9 @@ public class JcbtScholarshipBatchBo extends BaseEntity {
*/
private List<Long> scholarshipTypeIds;
<<<<<<< HEAD
/**
* 租户ID
*/
private Long tenantId;
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
@@ -60,12 +60,9 @@ public class JcbtScholarshipCompatibilityBo extends BaseEntity {
@Size(max = 500, message = "关系描述长度不能超过500个字符")
private String description;
<<<<<<< HEAD
/**
* 租户ID
*/
private Long tenantId;
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
@@ -49,7 +49,6 @@ public class JcbtScholarshipApplicationVo implements Serializable {
private String scholarshipTypeName;
/**
<<<<<<< HEAD
* 申请编号
*/
private String applicationNo;
@@ -58,11 +57,6 @@ public class JcbtScholarshipApplicationVo implements Serializable {
* 学生学号
*/
private String studentNo;
=======
* 学生学号
*/
private String studentCode;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 学生姓名
@@ -85,14 +79,11 @@ public class JcbtScholarshipApplicationVo implements Serializable {
private String deptName;
/**
<<<<<<< HEAD
* 专业ID
*/
private Long majorId;
/**
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
* 班级ID
*/
private Long classId;
@@ -102,19 +93,7 @@ public class JcbtScholarshipApplicationVo implements Serializable {
*/
private String className;
<<<<<<< HEAD
// 已删除 applicantType 和 applicantId 字段
=======
/**
* 申请人类型
*/
private String applicantType;
/**
* 申请人ID
*/
private Long applicantId;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 申请人姓名
@@ -127,7 +106,6 @@ public class JcbtScholarshipApplicationVo implements Serializable {
private String applicationType;
/**
<<<<<<< HEAD
* 当前状态
*/
private String currentStatus;
@@ -172,66 +150,6 @@ public class JcbtScholarshipApplicationVo implements Serializable {
* 在专业的排名
*/
private Integer rankingInMajor;
=======
* 申请原因
*/
private String applicationReason;
/**
* 申请详细描述
*/
private String applicationDescription;
/**
* 综合测评成绩
*/
private Double comprehensiveScore;
/**
* 学习成绩
*/
private Double academicScore;
/**
* 德育成绩
*/
private Double moralScore;
/**
* 体育成绩
*/
private Double physicalScore;
/**
* 美育成绩
*/
private Double aestheticScore;
/**
* 劳育成绩
*/
private Double laborScore;
/**
* 获奖情况
*/
private String awards;
/**
* 社会实践情况
*/
private String socialPractice;
/**
* 家庭经济状况
*/
private String familyEconomicStatus;
/**
* 申请状态
*/
private String status;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 提交时间
@@ -240,41 +158,9 @@ public class JcbtScholarshipApplicationVo implements Serializable {
private Date submitTime;
/**
<<<<<<< HEAD
* 租户编号
*/
private String tenantId;
=======
* 审核时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date reviewTime;
/**
* 审核人ID
*/
private Long reviewerId;
/**
* 审核人姓名
*/
private String reviewerName;
/**
* 审核意见
*/
private String reviewComment;
/**
* 是否需要材料
*/
private Integer requireMaterials;
/**
* 材料状态
*/
private String materialStatus;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 备注
@@ -154,12 +154,9 @@ public class JcbtScholarshipBatchVo implements Serializable {
*/
private List<Long> scholarshipTypeIds;
<<<<<<< HEAD
/**
* 租户ID
*/
private Long tenantId;
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
@@ -91,12 +91,9 @@ public class JcbtScholarshipCompatibilityVo implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
<<<<<<< HEAD
/**
* 租户ID
*/
private Long tenantId;
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
@@ -4,11 +4,8 @@ import org.dromara.jcbt.domain.JcbtScholarshipApplication;
import org.dromara.jcbt.domain.vo.JcbtScholarshipApplicationVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
<<<<<<< HEAD
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
import java.util.List;
@@ -21,7 +18,6 @@ import java.util.List;
public interface JcbtScholarshipApplicationMapper extends BaseMapperPlus<JcbtScholarshipApplication, JcbtScholarshipApplicationVo> {
/**
<<<<<<< HEAD
* 自定义分页查询(包含关联表信息)
*
* @param page 分页对象
@@ -32,19 +28,12 @@ public interface JcbtScholarshipApplicationMapper extends BaseMapperPlus<JcbtSch
/**
* 查询班主任负责班级的申请记录列表(已删除applicantId字段,需重新设计)
=======
* 查询班主任负责班级的申请记录列表
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
*
* @param applicantId 申请人ID(班主任ID)
* @param batchId 批次ID
* @return 申请记录列表
*/
<<<<<<< HEAD
// List<JcbtScholarshipApplicationVo> selectApplicationsByApplicant(@Param("applicantId") Long applicantId, @Param("batchId") Long batchId);
=======
List<JcbtScholarshipApplicationVo> selectApplicationsByApplicant(@Param("applicantId") Long applicantId, @Param("batchId") Long batchId);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
/**
* 查询班级的申请记录列表
@@ -65,7 +54,6 @@ public interface JcbtScholarshipApplicationMapper extends BaseMapperPlus<JcbtSch
List<JcbtScholarshipApplicationVo> selectPendingApplications(@Param("reviewerId") Long reviewerId, @Param("status") String status);
/**
<<<<<<< HEAD
* 根据ID查询申请记录详情(包含关联信息)
*
* @param id 主键ID
@@ -74,8 +62,6 @@ public interface JcbtScholarshipApplicationMapper extends BaseMapperPlus<JcbtSch
JcbtScholarshipApplicationVo selectByIdWithRelations(@Param("id") Long id);
/**
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
* 检查学生在指定批次中是否已有申请记录
*
* @param studentId 学生ID
@@ -103,7 +103,6 @@ public interface JcbtScholarshipQuotaMapper extends BaseMapperPlus<JcbtScholarsh
List<JcbtScholarshipQuotaVo> selectQuotaTreeByBatchAndType(@Param("batchId") Long batchId,
@Param("scholarshipTypeId") Long scholarshipTypeId);
<<<<<<< HEAD
/**
* 查询班级级别的名额分配
*
@@ -116,6 +115,4 @@ public interface JcbtScholarshipQuotaMapper extends BaseMapperPlus<JcbtScholarsh
@Param("scholarshipTypeId") Long scholarshipTypeId,
@Param("batchId") Long batchId);
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
@@ -204,16 +204,11 @@ public interface IJcbtScholarshipApplicationService {
*
* @param batchId 批次ID
* @param classId 班级ID
<<<<<<< HEAD
* @return 奖学金类型列表(包含名额信息)
=======
* @return 带名额信息的奖学金类型列表
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
*/
List<Map<String, Object>> getScholarshipTypesWithQuota(Long batchId, Long classId);
/**
<<<<<<< HEAD
* 测试班级名额查询(用于SQL日志调试)
*
* @param classId 班级ID
@@ -233,8 +228,6 @@ public interface IJcbtScholarshipApplicationService {
Map<String, Object> testSchoolQuotaQuery(Long batchId, Long scholarshipTypeId);
/**
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
* 确认选择班级(当用户从多个班级中选择一个时调用)
*
* @param teacherId 班主任ID
@@ -177,7 +177,6 @@ public interface IJcbtScholarshipQuotaService {
*/
String validateQuotaAllocation(JcbtScholarshipQuotaBo bo);
<<<<<<< HEAD
/**
* 查询班级级别的名额分配
*
@@ -188,6 +187,4 @@ public interface IJcbtScholarshipQuotaService {
*/
JcbtScholarshipQuotaVo selectClassQuota(Long classId, Long scholarshipTypeId, Long batchId);
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
@@ -37,13 +37,9 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
<<<<<<< HEAD
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;
=======
import java.util.*;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
import lombok.extern.slf4j.Slf4j;
/**
@@ -75,11 +71,7 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
*/
@Override
public JcbtScholarshipApplicationVo queryById(Long id) {
<<<<<<< HEAD
return baseMapper.selectByIdWithRelations(id);
=======
return baseMapper.selectVoById(id);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
/**
@@ -88,12 +80,8 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
@Override
public TableDataInfo<JcbtScholarshipApplicationVo> queryPageList(JcbtScholarshipApplicationBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<JcbtScholarshipApplication> lqw = buildQueryWrapper(bo);
<<<<<<< HEAD
// 使用自定义分页查询(包含关联表信息)
Page<JcbtScholarshipApplicationVo> result = baseMapper.selectJcbtScholarshipApplicationPage(pageQuery.build(), lqw);
=======
Page<JcbtScholarshipApplicationVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
return TableDataInfo.build(result);
}
@@ -111,16 +99,11 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
LambdaQueryWrapper<JcbtScholarshipApplication> lqw = Wrappers.lambdaQuery();
lqw.eq(ObjectUtil.isNotNull(bo.getBatchId()), JcbtScholarshipApplication::getBatchId, bo.getBatchId());
lqw.eq(ObjectUtil.isNotNull(bo.getScholarshipTypeId()), JcbtScholarshipApplication::getScholarshipTypeId, bo.getScholarshipTypeId());
<<<<<<< HEAD
lqw.eq(StringUtils.isNotBlank(bo.getStudentNo()), JcbtScholarshipApplication::getStudentNo, bo.getStudentNo());
=======
lqw.eq(StringUtils.isNotBlank(bo.getStudentCode()), JcbtScholarshipApplication::getStudentCode, bo.getStudentCode());
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
lqw.like(StringUtils.isNotBlank(bo.getStudentName()), JcbtScholarshipApplication::getStudentName, bo.getStudentName());
lqw.eq(ObjectUtil.isNotNull(bo.getStudentId()), JcbtScholarshipApplication::getStudentId, bo.getStudentId());
lqw.eq(ObjectUtil.isNotNull(bo.getDeptId()), JcbtScholarshipApplication::getDeptId, bo.getDeptId());
lqw.eq(ObjectUtil.isNotNull(bo.getClassId()), JcbtScholarshipApplication::getClassId, bo.getClassId());
<<<<<<< HEAD
// 已删除 applicantType 和 applicantId 字段
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), JcbtScholarshipApplication::getCurrentStatus, bo.getStatus());
// 支持前端 applicationStatus 查询参数
@@ -129,14 +112,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
JcbtScholarshipApplication::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
// 注意:排序在XML中处理,避免SQL语法错误
// lqw.orderByDesc(JcbtScholarshipApplication::getCreateTime);
=======
lqw.eq(StringUtils.isNotBlank(bo.getApplicantType()), JcbtScholarshipApplication::getApplicantType, bo.getApplicantType());
lqw.eq(ObjectUtil.isNotNull(bo.getApplicantId()), JcbtScholarshipApplication::getApplicantId, bo.getApplicantId());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), JcbtScholarshipApplication::getStatus, bo.getStatus());
lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
JcbtScholarshipApplication::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
lqw.orderByDesc(JcbtScholarshipApplication::getCreateTime);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
return lqw;
}
@@ -152,7 +127,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
throw new RuntimeException((String) eligibilityCheck.get("message"));
}
<<<<<<< HEAD
JcbtScholarshipApplication add = MapstructUtils.convert(bo, JcbtScholarshipApplication.class);
validEntityBeforeSave(add);
@@ -167,23 +141,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
}
if (StringUtils.isBlank(add.getApplicationType())) {
add.setApplicationType("TEACHER_RECOMMEND"); // 默认为教师推荐类型
=======
JcbtScholarshipApplication add = BeanUtil.toBean(bo, JcbtScholarshipApplication.class);
validEntityBeforeSave(add);
// 设置默认值
if (StringUtils.isBlank(add.getStatus())) {
add.setStatus("DRAFT");
}
if (StringUtils.isBlank(add.getApplicantType())) {
add.setApplicantType("TEACHER");
}
if (add.getRequireMaterials() == null) {
add.setRequireMaterials(0);
}
if (StringUtils.isBlank(add.getMaterialStatus())) {
add.setMaterialStatus("PENDING");
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
boolean flag = baseMapper.insert(add) > 0;
@@ -199,7 +156,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(JcbtScholarshipApplicationBo bo) {
<<<<<<< HEAD
log.info("🔍 [DEBUG] Service.updateByBo 开始执行");
log.info("🔍 [DEBUG] 接收到的BO对象: {}", bo);
log.info("🔍 [DEBUG] BO关键字段检查:");
@@ -210,7 +166,7 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
log.info(" - currentStatus: {}", bo.getCurrentStatus());
log.info(" - batchId: {}", bo.getBatchId());
log.info(" - scholarshipTypeId: {}", bo.getScholarshipTypeId());
try {
JcbtScholarshipApplication update = MapstructUtils.convert(bo, JcbtScholarshipApplication.class);
log.info("🔍 [DEBUG] 转换后的Entity对象: {}", update);
@@ -221,15 +177,15 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
log.info(" - currentStatus: {}", update.getCurrentStatus());
log.info(" - batchId: {}", update.getBatchId());
log.info(" - scholarshipTypeId: {}", update.getScholarshipTypeId());
log.info("🔍 [DEBUG] 开始执行数据校验");
validEntityBeforeSave(update);
log.info("🔍 [DEBUG] 数据校验通过");
log.info("🔍 [DEBUG] 开始执行数据库更新");
boolean result = baseMapper.updateById(update) > 0;
log.info("🔍 [DEBUG] 数据库更新结果: {}", result);
return result;
} catch (Exception e) {
log.error("❌ [ERROR] Service.updateByBo 执行异常", e);
@@ -237,62 +193,41 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
log.error("❌ [ERROR] 异常消息: {}", e.getMessage());
throw e;
}
=======
JcbtScholarshipApplication update = BeanUtil.toBean(bo, JcbtScholarshipApplication.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(JcbtScholarshipApplication entity) {
<<<<<<< HEAD
log.info("🔍 [DEBUG] validEntityBeforeSave 开始执行");
log.info("🔍 [DEBUG] 待校验的Entity: {}", entity);
// 数据校验逻辑
log.info("🔍 [DEBUG] 校验学生学号: {}", entity.getStudentNo());
if (StringUtils.isBlank(entity.getStudentNo())) {
log.error("❌ [ERROR] 学生学号为空!");
throw new RuntimeException("学生学号不能为空");
}
log.info("🔍 [DEBUG] 校验学生姓名: {}", entity.getStudentName());
if (StringUtils.isBlank(entity.getStudentName())) {
log.error("❌ [ERROR] 学生姓名为空!");
throw new RuntimeException("学生姓名不能为空");
}
log.info("🔍 [DEBUG] 校验批次ID: {}", entity.getBatchId());
if (entity.getBatchId() == null) {
log.error("❌ [ERROR] 批次ID为空!");
throw new RuntimeException("批次ID不能为空");
}
log.info("🔍 [DEBUG] 校验奖学金类型ID: {}", entity.getScholarshipTypeId());
if (entity.getScholarshipTypeId() == null) {
log.error("❌ [ERROR] 奖学金类型ID为空!");
throw new RuntimeException("奖学金类型ID不能为空");
}
log.info("🔍 [DEBUG] validEntityBeforeSave 校验完成");
=======
// 数据校验逻辑
if (StringUtils.isBlank(entity.getStudentCode())) {
throw new RuntimeException("学生学号不能为空");
}
if (StringUtils.isBlank(entity.getStudentName())) {
throw new RuntimeException("学生姓名不能为空");
}
if (entity.getBatchId() == null) {
throw new RuntimeException("批次ID不能为空");
}
if (entity.getScholarshipTypeId() == null) {
throw new RuntimeException("奖学金类型ID不能为空");
}
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
/**
@@ -305,11 +240,7 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
// 删除前校验逻辑
for (Long id : ids) {
JcbtScholarshipApplicationVo application = queryById(id);
<<<<<<< HEAD
if (application != null && "APPROVED".equals(application.getCurrentStatus())) {
=======
if (application != null && "APPROVED".equals(application.getStatus())) {
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
throw new RuntimeException("已通过审核的申请不能删除");
}
}
@@ -324,7 +255,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
@Transactional(rollbackFor = Exception.class)
public Boolean batchSubmitApplicationsByTeacher(Long batchId, Long scholarshipTypeId, Long classId,
List<JcbtScholarshipApplicationBo> studentApplications) {
<<<<<<< HEAD
// 检查班级名额 - 使用和前端一致的查询方法
log.info("开始检查班级名额 - 批次ID: {}, 奖学金类型ID: {}, 班级ID: {}, 申请人数: {}",
batchId, scholarshipTypeId, classId, studentApplications.size());
@@ -358,12 +288,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
log.error("全校名额不足 - 可用名额: {}, 申请人数: {}", totalAvailable, studentApplications.size());
throw new RuntimeException("全校可用名额不足,无法提交申请");
}
=======
// 检查班级名额
JcbtScholarshipClassQuotaVo classQuota = classQuotaService.queryAvailableQuota(classId, scholarshipTypeId, batchId);
if (classQuota == null || classQuota.getAvailableQuota() < studentApplications.size()) {
throw new RuntimeException("班级可用名额不足,无法提交申请");
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
// 批量创建申请记录
@@ -371,18 +295,13 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
applicationBo.setBatchId(batchId);
applicationBo.setScholarshipTypeId(scholarshipTypeId);
applicationBo.setClassId(classId);
<<<<<<< HEAD
applicationBo.setApplicationType("TEACHER_RECOMMEND"); // 班主任代申请属于教师推荐类型
=======
applicationBo.setApplicantType("TEACHER");
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
applicationBo.setStatus("SUBMITTED");
applicationBo.setSubmitTime(new Date());
insertByBo(applicationBo);
}
<<<<<<< HEAD
// 更新名额使用情况
if (classQuota != null) {
// 有班级名额分配,更新班级名额
@@ -407,12 +326,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
}
}
}
=======
// 更新班级名额使用情况
classQuotaService.updateQuotaUsage(classQuota.getId(),
classQuota.getUsedQuota() + studentApplications.size(),
classQuota.getAvailableQuota() - studentApplications.size());
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
return true;
}
@@ -422,13 +335,9 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
*/
@Override
public List<JcbtScholarshipApplicationVo> queryApplicationsByApplicant(Long applicantId, Long batchId) {
<<<<<<< HEAD
// TODO: 重新设计查询逻辑,因为applicantId字段已删除
// 可能需要通过班级ID或其他方式查询班主任负责的申请记录
return new ArrayList<>();
=======
return baseMapper.selectApplicationsByApplicant(applicantId, batchId);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
/**
@@ -488,19 +397,11 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
if (application == null) {
throw new RuntimeException("申请记录不存在");
}
<<<<<<< HEAD
if (!"DRAFT".equals(application.getCurrentStatus())) {
throw new RuntimeException("只有草稿状态的申请才能提交");
}
application.setCurrentStatus("SUBMITTED");
=======
if (!"DRAFT".equals(application.getStatus())) {
throw new RuntimeException("只有草稿状态的申请才能提交");
}
application.setStatus("SUBMITTED");
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
application.setSubmitTime(new Date());
return baseMapper.updateById(application) > 0;
}
@@ -515,21 +416,12 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
if (application == null) {
throw new RuntimeException("申请记录不存在");
}
<<<<<<< HEAD
if ("APPROVED".equals(application.getCurrentStatus()) || "REJECTED".equals(application.getCurrentStatus())) {
throw new RuntimeException("已审核的申请不能撤回");
}
application.setCurrentStatus("WITHDRAWN");
// 已删除 remark 字段,撤回原因暂时不存储
=======
if ("APPROVED".equals(application.getStatus()) || "REJECTED".equals(application.getStatus())) {
throw new RuntimeException("已审核的申请不能撤回");
}
application.setStatus("WITHDRAWN");
application.setRemark(StringUtils.isNotBlank(reason) ? reason : "申请人主动撤回");
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
return baseMapper.updateById(application) > 0;
}
@@ -779,11 +671,7 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
List<Map<String, Object>> students = new ArrayList<>();
try {
<<<<<<< HEAD
// 使用自包含查询获取学生列表,关联班级表获取学院和专业信息
=======
// 使用自包含查询获取学生列表
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
String sql = """
SELECT
sm.id,
@@ -792,7 +680,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
sm.gender,
sm.phone,
sm.email,
<<<<<<< HEAD
sm.student_status,
cm.college_id,
cm.college_name,
@@ -806,13 +693,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
AND sm.deleted = 0
AND sm.student_status = '1'
AND (cm.deleted IS NULL OR cm.deleted = 0)
=======
sm.student_status
FROM xg_student_msg sm
WHERE sm.class_id = ?
AND sm.deleted = 0
AND sm.student_status = '1'
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
ORDER BY sm.student_no ASC
""";
@@ -836,8 +716,7 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
studentMap.put("phone", student.get("phone") != null ? student.get("phone").toString() : "");
studentMap.put("email", student.get("email") != null ? student.get("email").toString() : "");
studentMap.put("status", student.get("student_status") != null ? student.get("student_status").toString() : "1");
<<<<<<< HEAD
// 添加学院和专业信息
studentMap.put("collegeId", student.get("college_id") != null ? student.get("college_id").toString() : "");
studentMap.put("collegeName", student.get("college_name") != null ? student.get("college_name").toString() : "");
@@ -845,9 +724,7 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
studentMap.put("majorName", student.get("major_name") != null ? student.get("major_name").toString() : "");
studentMap.put("className", student.get("class_name") != null ? student.get("class_name").toString() : "");
studentMap.put("grade", student.get("grade") != null ? student.get("grade").toString() : "");
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
students.add(studentMap);
}
log.info("成功获取班级学生列表 - 班级ID: {}, 学生数量: {}", classId, students.size());
@@ -932,12 +809,8 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
List<Map<String, Object>> scholarshipTypes = new ArrayList<>();
try {
<<<<<<< HEAD
log.info("=== 开始获取带名额信息的奖学金类型 ===");
log.info("输入参数 - 批次ID: {}, 班级ID: {}", batchId, classId);
=======
log.info("获取带名额信息的奖学金类型,批次ID: {}, 班级ID: {}", batchId, classId);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
// 获取该批次关联的所有奖学金类型ID(从批次类型关联表)
List<Long> batchTypeIds = batchTypeService.getScholarshipTypeIdsByBatchId(batchId);
@@ -945,7 +818,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
if (batchTypeIds != null && !batchTypeIds.isEmpty()) {
for (Long scholarshipTypeId : batchTypeIds) {
<<<<<<< HEAD
log.info("--- 处理奖学金类型ID: {} ---", scholarshipTypeId);
// 查询奖学金类型基本信息
@@ -955,10 +827,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
typeInfo.getId(), typeInfo.getTypeName(), typeInfo.getStatus(),
typeInfo.getAwardAmount(), typeInfo.getLevelType()) : "null");
=======
// 查询奖学金类型基本信息
JcbtScholarshipTypeVo typeInfo = scholarshipTypeService.queryById(scholarshipTypeId);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
if (typeInfo != null && typeInfo.getStatus() == 1) { // 只返回启用的类型
Map<String, Object> scholarshipType = new HashMap<>();
scholarshipType.put("id", scholarshipTypeId);
@@ -968,7 +836,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
scholarshipType.put("typeCategory", typeInfo.getTypeCategory());
scholarshipType.put("levelType", typeInfo.getLevelType());
<<<<<<< HEAD
// 查询该班级在该奖学金类型下的名额分配信息(从jcbt_scholarship_quota表查询)
log.info("开始查询班级名额 - SQL参数: classId={}, scholarshipTypeId={}, batchId={}", classId, scholarshipTypeId, batchId);
log.info("执行SQL: SELECT * FROM jcbt_scholarship_quota WHERE allocation_level = 'CLASS' AND target_dept_id = {} AND scholarship_type_id = {} AND batch_id = {} AND status = 'ACTIVE'", classId, scholarshipTypeId, batchId);
@@ -982,14 +849,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
if (classQuota != null) {
// 有班级名额分配
log.info("发现班级名额分配,处理班级名额数据");
=======
// 查询该班级在该奖学金类型下的名额分配信息
JcbtScholarshipClassQuotaVo classQuota = classQuotaService.queryAvailableQuota(classId, scholarshipTypeId, batchId);
log.debug("班级名额查询结果,类型ID: {}, 班级ID: {}, 名额信息: {}", scholarshipTypeId, classId, classQuota);
if (classQuota != null) {
// 有班级名额分配
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
scholarshipType.put("hasQuota", true);
int totalQuota = classQuota.getTotalQuota() != null ? classQuota.getTotalQuota() : 0;
int usedQuota = classQuota.getUsedQuota() != null ? classQuota.getUsedQuota() : 0;
@@ -1000,7 +859,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
scholarshipType.put("availableQuota", availableQuota);
scholarshipType.put("quotaStatus", availableQuota > 0 ? "available" : "full");
<<<<<<< HEAD
log.info("班级名额处理结果 - 类型: {}, 总名额: {}, 已用: {}, 可用: {}, 状态: {}",
typeInfo.getTypeName(), totalQuota, usedQuota, availableQuota, availableQuota > 0 ? "available" : "full");
} else {
@@ -1020,13 +878,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
}
}
=======
log.debug("类型: {}, 总名额: {}, 已用: {}, 可用: {}, 状态: {}",
typeInfo.getTypeName(), totalQuota, usedQuota, availableQuota, availableQuota > 0 ? "available" : "full");
} else {
// 没有班级名额分配,查询全校统计信息
List<JcbtScholarshipQuotaVo> quotaList = quotaService.queryListByBatchAndType(batchId, scholarshipTypeId);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
int totalQuota = quotaList.stream().mapToInt(q -> q.getTotalQuota() != null ? q.getTotalQuota() : 0).sum();
int usedQuota = quotaList.stream().mapToInt(q -> q.getUsedQuota() != null ? q.getUsedQuota() : 0).sum();
int availableQuota = Math.max(0, totalQuota - usedQuota);
@@ -1037,23 +888,16 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
scholarshipType.put("availableQuota", availableQuota);
scholarshipType.put("quotaStatus", totalQuota > 0 ? (availableQuota > 0 ? "available" : "full") : "unlimited");
<<<<<<< HEAD
log.info("全校名额统计结果 - 类型: {} (全校), 总名额: {}, 已用: {}, 可用: {}, 状态: {}",
=======
log.debug("类型: {} (全校), 总名额: {}, 已用: {}, 可用: {}, 状态: {}",
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
typeInfo.getTypeName(), totalQuota, usedQuota, availableQuota,
totalQuota > 0 ? (availableQuota > 0 ? "available" : "full") : "unlimited");
}
scholarshipTypes.add(scholarshipType);
<<<<<<< HEAD
log.info("奖学金类型 {} 处理完成,添加到结果列表", typeInfo.getTypeName());
} else {
log.warn("奖学金类型被跳过 - ID: {}, 原因: {}", scholarshipTypeId,
typeInfo == null ? "类型信息不存在" : "状态未启用(status=" + typeInfo.getStatus() + ")");
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
}
@@ -1079,7 +923,6 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
return levelA != null ? levelA.compareTo(levelB) : 0;
});
<<<<<<< HEAD
log.info("=== 最终返回结果 ===");
log.info("奖学金类型总数: {}", scholarshipTypes.size());
for (int i = 0; i < scholarshipTypes.size(); i++) {
@@ -1089,26 +932,18 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
}
} else {
log.warn("批次 {} 未关联任何奖学金类型", batchId);
=======
log.info("最终返回的奖学金类型数量: {}", scholarshipTypes.size());
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
return scholarshipTypes;
} catch (Exception e) {
<<<<<<< HEAD
log.error("=== 获取带名额信息的奖学金类型失败 ===");
log.error("错误参数 - 批次ID: {}, 班级ID: {}", batchId, classId);
log.error("错误详情: ", e);
=======
log.error("获取带名额信息的奖学金类型失败,批次ID: {}, 班级ID: {}", batchId, classId, e);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
// 如果调用失败,返回空数据
return new ArrayList<>();
}
}
<<<<<<< HEAD
/**
* 测试班级名额查询(用于SQL日志调试)
*/
@@ -1322,6 +1157,4 @@ public class JcbtScholarshipApplicationServiceImpl implements IJcbtScholarshipAp
return "JX" + dateStr + randomNum;
}
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
@@ -91,11 +91,7 @@ public class JcbtScholarshipBatchServiceImpl implements IJcbtScholarshipBatchSer
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(JcbtScholarshipBatchBo bo) {
<<<<<<< HEAD
JcbtScholarshipBatch add = MapstructUtils.convert(bo, JcbtScholarshipBatch.class);
=======
JcbtScholarshipBatch add = BeanUtil.toBean(bo, JcbtScholarshipBatch.class);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
@@ -116,11 +112,7 @@ public class JcbtScholarshipBatchServiceImpl implements IJcbtScholarshipBatchSer
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(JcbtScholarshipBatchBo bo) {
<<<<<<< HEAD
JcbtScholarshipBatch update = MapstructUtils.convert(bo, JcbtScholarshipBatch.class);
=======
JcbtScholarshipBatch update = BeanUtil.toBean(bo, JcbtScholarshipBatch.class);
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
validEntityBeforeSave(update);
boolean flag = baseMapper.updateById(update) > 0;
@@ -493,7 +493,6 @@ public class JcbtScholarshipQuotaServiceImpl implements IJcbtScholarshipQuotaSer
return Math.max(0, total - used - reserved);
}
<<<<<<< HEAD
/**
* 查询班级级别的名额分配
*
@@ -513,6 +512,4 @@ public class JcbtScholarshipQuotaServiceImpl implements IJcbtScholarshipQuotaSer
return result;
}
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
}
@@ -303,7 +303,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ORDER BY qt.level, qt.target_dept_id
</select>
<<<<<<< HEAD
<!-- 查询班级级别的名额分配 -->
<select id="selectClassQuota" resultMap="JcbtScholarshipQuotaResult">
<include refid="selectJcbtScholarshipQuotaVo"/>
@@ -314,6 +313,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and q.status = 'ACTIVE'
</select>
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
</mapper>
@@ -9,17 +9,12 @@
<result property="batchName" column="batch_name"/>
<result property="scholarshipTypeId" column="scholarship_type_id"/>
<result property="scholarshipTypeName" column="scholarship_type_name"/>
<<<<<<< HEAD
<result property="applicationNo" column="application_no"/>
<result property="studentNo" column="student_no"/>
=======
<result property="studentCode" column="student_code"/>
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
<result property="studentName" column="student_name"/>
<result property="studentId" column="student_id"/>
<result property="deptId" column="dept_id"/>
<result property="deptName" column="dept_name"/>
<<<<<<< HEAD
<result property="majorId" column="major_id"/>
<result property="classId" column="class_id"/>
<result property="className" column="class_name"/>
@@ -33,35 +28,6 @@
<result property="finalScore" column="final_score"/>
<result property="rankingInDept" column="ranking_in_dept"/>
<result property="rankingInMajor" column="ranking_in_major"/>
=======
<result property="classId" column="class_id"/>
<result property="className" column="class_name"/>
<result property="applicantType" column="applicant_type"/>
<result property="applicantId" column="applicant_id"/>
<result property="applicantName" column="applicant_name"/>
<result property="applicationType" column="application_type"/>
<result property="applicationReason" column="application_reason"/>
<result property="applicationDescription" column="application_description"/>
<result property="comprehensiveScore" column="comprehensive_score"/>
<result property="academicScore" column="academic_score"/>
<result property="moralScore" column="moral_score"/>
<result property="physicalScore" column="physical_score"/>
<result property="aestheticScore" column="aesthetic_score"/>
<result property="laborScore" column="labor_score"/>
<result property="awards" column="awards"/>
<result property="socialPractice" column="social_practice"/>
<result property="familyEconomicStatus" column="family_economic_status"/>
<result property="status" column="status"/>
<result property="submitTime" column="submit_time"/>
<result property="reviewTime" column="review_time"/>
<result property="reviewerId" column="reviewer_id"/>
<result property="reviewerName" column="reviewer_name"/>
<result property="reviewComment" column="review_comment"/>
<result property="requireMaterials" column="require_materials"/>
<result property="materialStatus" column="material_status"/>
<result property="sortOrder" column="sort_order"/>
<result property="remark" column="remark"/>
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
<result property="tenantId" column="tenant_id"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
@@ -71,31 +37,17 @@
<!-- 基础查询SQL -->
<sql id="selectJcbtScholarshipApplicationVo">
<<<<<<< HEAD
select a.id, a.application_no, a.batch_id, b.batch_name, a.scholarship_type_id, st.type_name as scholarship_type_name,
a.student_no, a.student_name, a.student_id, a.dept_id, d.dept_name, a.major_id, a.class_id, c.class_name,
a.application_type, a.current_status, a.apply_reason, a.self_evaluation,
a.calculated_score, a.final_score, a.ranking_in_dept, a.ranking_in_major,
a.submit_time, a.tenant_id,
=======
select a.id, a.batch_id, b.batch_name, a.scholarship_type_id, st.type_name as scholarship_type_name,
a.student_code, a.student_name, a.student_id, a.dept_id, a.dept_name, a.class_id, a.class_name,
a.applicant_type, a.applicant_id, a.applicant_name, a.application_type,
a.application_reason, a.application_description,
a.comprehensive_score, a.academic_score, a.moral_score, a.physical_score, a.aesthetic_score, a.labor_score,
a.awards, a.social_practice, a.family_economic_status,
a.status, a.submit_time, a.review_time, a.reviewer_id, a.reviewer_name, a.review_comment,
a.require_materials, a.material_status, a.sort_order, a.remark, a.tenant_id,
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
a.create_by, a.create_time, a.update_by, a.update_time
from jcbt_scholarship_application a
left join jcbt_scholarship_batch b on a.batch_id = b.id
left join jcbt_scholarship_type st on a.scholarship_type_id = st.id
<<<<<<< HEAD
left join xg_class_msg c on a.class_id = c.id
left join sys_dept d on a.dept_id = d.dept_id
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
</sql>
<!-- 分页查询(标准模板) -->
@@ -107,17 +59,11 @@
AND ${ew.sqlSegment}
</if>
</where>
<<<<<<< HEAD
ORDER BY a.create_time DESC
</select>
<!-- 查询班主任负责班级的申请记录列表(已删除applicantId字段,需重新设计) -->
<!--
=======
</select>
<!-- 查询班主任负责班级的申请记录列表 -->
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
<select id="selectApplicationsByApplicant" resultMap="JcbtScholarshipApplicationResult">
<include refid="selectJcbtScholarshipApplicationVo"/>
<where>
@@ -129,10 +75,7 @@
</where>
ORDER BY a.create_time DESC
</select>
<<<<<<< HEAD
-->
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
<!-- 查询班级的申请记录列表 -->
<select id="selectApplicationsByClass" resultMap="JcbtScholarshipApplicationResult">
@@ -179,7 +122,6 @@
SELECT
a.scholarship_type_id,
st.type_name as scholarship_type_name,
<<<<<<< HEAD
a.current_status,
COUNT(*) as total_count,
a.dept_id,
@@ -187,14 +129,6 @@
FROM jcbt_scholarship_application a
LEFT JOIN jcbt_scholarship_type st ON a.scholarship_type_id = st.id
LEFT JOIN sys_dept d ON a.dept_id = d.dept_id
=======
a.status,
COUNT(*) as total_count,
a.dept_id,
a.dept_name
FROM jcbt_scholarship_application a
LEFT JOIN jcbt_scholarship_type st ON a.scholarship_type_id = st.id
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
<where>
a.deleted = 0
<if test="batchId != null">
@@ -204,13 +138,8 @@
AND a.dept_id = #{deptId}
</if>
</where>
<<<<<<< HEAD
GROUP BY a.scholarship_type_id, a.current_status, a.dept_id
ORDER BY a.scholarship_type_id, a.current_status
=======
GROUP BY a.scholarship_type_id, a.status, a.dept_id
ORDER BY a.scholarship_type_id, a.status
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
</select>
<!-- 批量更新申请状态 -->
@@ -229,13 +158,10 @@
AND deleted = 0
</update>
<<<<<<< HEAD
<!-- 根据ID查询申请记录详情(包含关联信息) -->
<select id="selectByIdWithRelations" resultMap="JcbtScholarshipApplicationResult">
<include refid="selectJcbtScholarshipApplicationVo"/>
WHERE a.id = #{id} AND a.deleted = 0
</select>
=======
>>>>>>> 4b9dbe40fb94a83d379f7d16211dec6d78c23755
</mapper>
+16
View File
@@ -95,6 +95,14 @@ export interface JcbtPovertyApplicationForm {
assistanceTypeNames?: string
/** 备注 */
remark?: string
/** 申请表附件URL */
attachApplicationFormUrl?: string
/** 申请表附件ID */
attachApplicationFormId?: number
/** 调查表附件URL */
attachSurveyFormUrl?: string
/** 调查表附件ID */
attachSurveyFormId?: number
}
/**
@@ -169,6 +177,14 @@ export interface JcbtPovertyApplicationVo {
updateBy: number
/** 更新时间 */
updateTime: string
/** 申请表附件URL */
attachApplicationFormUrl: string
/** 申请表附件ID */
attachApplicationFormId: number
/** 调查表附件URL */
attachSurveyFormUrl: string
/** 调查表附件ID */
attachSurveyFormId: number
}
/**
@@ -200,7 +200,7 @@
</template>
<script setup name="JcbtPovertyApplicationForm" lang="ts">
import { ref, onMounted, getCurrentInstance } from 'vue';
import { ref, onMounted, getCurrentInstance, computed } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import {
getPovertyApplication,
@@ -212,6 +212,7 @@ import {
checkDuplicate
} from '@/api/jcbt/povertyApplication';
import { UploadFilled, User, House, Document, Folder } from '@element-plus/icons-vue';
import { getToken } from '@/utils/auth';
const { proxy } = getCurrentInstance();
const route = useRoute();
@@ -241,6 +242,14 @@ const selectedGroupDescription = ref('');
// 文件上传
const fileList = ref([]);
// 文件上传相关
const uploadHeaders = computed(() => {
return {
'Authorization': `Bearer ${getToken() || ''}`,
'clientid': import.meta.env.VITE_APP_CLIENT_ID || 'e5cd7e4891bf95d1d19206ce24a7b32e'
};
});
// 学生搜索相关
const filteredStudents = ref([]);
const studentSearchLoading = ref(false);
@@ -768,8 +768,11 @@ const rules = {
}
// 文件上传相关
const uploadHeaders = ref({
Authorization: "Bearer " + getToken()
const uploadHeaders = computed(() => {
return {
'Authorization': `Bearer ${getToken() || ''}`,
'clientid': import.meta.env.VITE_APP_CLIENT_ID || 'e5cd7e4891bf95d1d19206ce24a7b32e'
};
})
// 申请表文件列表
@@ -908,7 +911,9 @@ function reset() {
applicationReason: null,
remark: null,
attachApplicationFormUrl: null,
attachSurveyFormUrl: null
attachApplicationFormId: null,
attachSurveyFormUrl: null,
attachSurveyFormId: null
}
// 重置文件列表
@@ -1104,6 +1109,9 @@ function submitForm() {
open.value = false
getList()
getStatistics()
}).catch(error => {
console.error('新增失败:', error)
proxy.$modal.msgError(error.msg || '新增失败,请稍后重试')
})
}
}
@@ -1162,6 +1170,7 @@ function beforeUpload(file) {
function handleApplicationFormUploadSuccess(response, file) {
if (response.code === 200) {
form.value.attachApplicationFormUrl = response.data.url
form.value.attachApplicationFormId = response.data.ossId
applicationFormFileList.value = [{
name: file.name,
url: response.data.url
@@ -1176,6 +1185,7 @@ function handleApplicationFormUploadSuccess(response, file) {
function handleSurveyFormUploadSuccess(response, file) {
if (response.code === 200) {
form.value.attachSurveyFormUrl = response.data.url
form.value.attachSurveyFormId = response.data.ossId || response.data.id
surveyFormFileList.value = [{
name: file.name,
url: response.data.url
@@ -1195,12 +1205,14 @@ function handleUploadError(error) {
/** 申请表移除 */
function handleApplicationFormRemove() {
form.value.attachApplicationFormUrl = ''
form.value.attachApplicationFormId = null
applicationFormFileList.value = []
}
/** 调查表移除 */
function handleSurveyFormRemove() {
form.value.attachSurveyFormUrl = ''
form.value.attachSurveyFormId = null
surveyFormFileList.value = []
}