退伍复学-更新接口逻辑调整

This commit is contained in:
2026-03-03 10:01:11 +08:00
parent 7b72d6dbcd
commit b972df74be
7 changed files with 186 additions and 14 deletions

View File

@@ -64,8 +64,8 @@ spring:
# 国际化资源文件路径 # 国际化资源文件路径
basename: i18n/messages basename: i18n/messages
profiles: profiles:
active: druid #正式环境 # active: druid #正式环境
# active: dev #测试环境 active: dev #测试环境
# 文件上传 # 文件上传
servlet: servlet:
multipart: multipart:

View File

@@ -13,7 +13,7 @@ import com.srs.common.core.domain.BaseEntity;
* 退伍复学材料对象 sys_dis_mate * 退伍复学材料对象 sys_dis_mate
* *
* @author srs * @author srs
* @date 2025-11-12 * @date 2026-03-01
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@@ -89,11 +89,11 @@ private static final long serialVersionUID=1L;
private String newgrade; private String newgrade;
/** /**
* 新专业 * 新班级
*/ */
@ApiModelProperty("专业") @ApiModelProperty("班级")
@TableField("newmajor") @TableField("newmajor")
@Excel(name = "专业") @Excel(name = "班级")
private String newmajor; private String newmajor;
/** /**
@@ -121,20 +121,52 @@ private static final long serialVersionUID=1L;
private String material; private String material;
/** /**
* 保留字段1 * 学院ID
*/ */
@ApiModelProperty("保留字段1") @ApiModelProperty("学院ID")
@TableField("data1") @TableField("data1")
@Excel(name = "保留字段1") @Excel(name = "学院ID")
private String data1; private String data1;
/** /**
* 保留字段2 * 专业ID
*/ */
@ApiModelProperty("保留字段2") @ApiModelProperty("专业ID")
@TableField("data2") @TableField("data2")
@Excel(name = "保留字段2") @Excel(name = "专业ID")
private String data2; private String data2;
/**
* 最终专业1
*/
@ApiModelProperty("最终专业1")
@TableField("finaldata1")
@Excel(name = "最终专业1")
private String finaldata1;
/**
* 最终专业1
*/
@ApiModelProperty("最终专业1")
@TableField("finaldata2")
@Excel(name = "最终专业1")
private String finaldata2;
/**
* 最终年级
*/
@ApiModelProperty("最终年级")
@TableField("finalmajor")
@Excel(name = "最终年级")
private String finalmajor;
/**
* 保留字段
*/
@ApiModelProperty("保留字段")
@TableField("finallabel")
@Excel(name = "保留字段")
private String finallabel;
} }

View File

@@ -44,6 +44,9 @@ public interface SysDisMateMapper extends BaseMapper<SysDisMate> {
*/ */
int updateSysDisMate(SysDisMate sysDisMate); int updateSysDisMate(SysDisMate sysDisMate);
// 新增:按学号更新子表
int updateSysDisMateByStId(SysDisMate sysDisMate);
/** /**
* 删除退伍复学材料 * 删除退伍复学材料
* *

View File

@@ -44,6 +44,7 @@ public interface ISysDisMateService extends IService<SysDisMate> {
*/ */
int updateSysDisMate(SysDisMate sysDisMate); int updateSysDisMate(SysDisMate sysDisMate);
/** /**
* 批量删除退伍复学材料 * 批量删除退伍复学材料
* *

View File

@@ -5,14 +5,20 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.srs.common.core.domain.AjaxResult; import com.srs.common.core.domain.AjaxResult;
import com.srs.common.doman.dto.ProcessResultDto; import com.srs.common.doman.dto.ProcessResultDto;
import com.srs.common.doman.vo.TeacherVo; import com.srs.common.doman.vo.TeacherVo;
import com.srs.common.exception.ServiceException; import com.srs.common.exception.ServiceException;
import com.srs.common.utils.SecurityUtils; import com.srs.common.utils.SecurityUtils;
import com.srs.flowable.service.IFlowDefinitionService; import com.srs.flowable.service.IFlowDefinitionService;
import com.srs.routine.domain.SysDisMate;
import com.srs.routine.mapper.RtEnlistmentReserveMapper; import com.srs.routine.mapper.RtEnlistmentReserveMapper;
import com.srs.routine.mapper.RtStuLeaveApplicationMapper; import com.srs.routine.mapper.RtStuLeaveApplicationMapper;
import com.srs.routine.mapper.SysDisMateMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.IdentityService; import org.flowable.engine.IdentityService;
import org.flowable.engine.RuntimeService; import org.flowable.engine.RuntimeService;
@@ -26,6 +32,7 @@ import org.springframework.stereotype.Service;
import com.srs.routine.mapper.SysDisBasicMapper; import com.srs.routine.mapper.SysDisBasicMapper;
import com.srs.routine.domain.SysDisBasic; import com.srs.routine.domain.SysDisBasic;
import com.srs.routine.service.ISysDisBasicService; import com.srs.routine.service.ISysDisBasicService;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 退伍复学申请Service业务层处理 * 退伍复学申请Service业务层处理
@@ -39,6 +46,9 @@ public class SysDisBasicServiceImpl extends ServiceImpl<SysDisBasicMapper,SysDis
@Autowired @Autowired
private SysDisBasicMapper sysDisBasicMapper; private SysDisBasicMapper sysDisBasicMapper;
@Autowired
private SysDisMateMapper sysDisMateMapper;
/** /**
* 查询退伍复学申请 * 查询退伍复学申请
@@ -108,6 +118,8 @@ public class SysDisBasicServiceImpl extends ServiceImpl<SysDisBasicMapper,SysDis
return insertData; return insertData;
} }
private static final Logger logger = LoggerFactory.getLogger(SysDisBasicServiceImpl.class);
/** /**
* 修改退伍复学申请 * 修改退伍复学申请
* *
@@ -115,13 +127,88 @@ public class SysDisBasicServiceImpl extends ServiceImpl<SysDisBasicMapper,SysDis
* @return 结果 * @return 结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) // 事务保证原子性
public int updateSysDisBasic(SysDisBasic sysDisBasic) { public int updateSysDisBasic(SysDisBasic sysDisBasic) {
// ProcessResultDto processResultDto = startBasicProcess(sysDisBasic);
// if (processResultDto != null){
// sysDisBasic.setProcessId(processResultDto.getProcessInstanceId());
// sysDisBasic.setDeployId(processResultDto.getDeploymentId());
// }
// return sysDisBasicMapper.updateSysDisBasic(sysDisBasic);
// ========== 1. 原有主表更新逻辑(完全保留) ==========
ProcessResultDto processResultDto = startBasicProcess(sysDisBasic); ProcessResultDto processResultDto = startBasicProcess(sysDisBasic);
if (processResultDto != null){ if (processResultDto != null){
sysDisBasic.setProcessId(processResultDto.getProcessInstanceId()); sysDisBasic.setProcessId(processResultDto.getProcessInstanceId());
sysDisBasic.setDeployId(processResultDto.getDeploymentId()); sysDisBasic.setDeployId(processResultDto.getDeploymentId());
} }
return sysDisBasicMapper.updateSysDisBasic(sysDisBasic); int mainTableUpdateCount = sysDisBasicMapper.updateSysDisBasic(sysDisBasic);
logger.info("主表更新完成,影响行数: {}", mainTableUpdateCount);
// ========== 2. 整合自定义子表更新逻辑(核心修复) ==========
List<SysDisMate> maList = sysDisBasic.getMaList();
logger.info("开始执行子表更新maList大小: {}", maList != null ? maList.size() : 0);
if (maList != null && !maList.isEmpty()) {
for (SysDisMate mate : maList) {
logger.info("正在更新子表记录子表ID: {}, finaldata1: {}", mate.getId(), mate.getFinaldata1());
int updateResult = 0;
// 优先使用子表主键id更新自定义SQL避免update_time
if (mate.getId() != null) {
LambdaUpdateWrapper<SysDisMate> updateWrapper = Wrappers.lambdaUpdate(SysDisMate.class);
updateWrapper.eq(SysDisMate::getId, mate.getId())
.set(mate.getStId() != null, SysDisMate::getStId, mate.getStId())
.set(mate.getStName() != null, SysDisMate::getStName, mate.getStName())
.set(mate.getCollege() != null, SysDisMate::getCollege, mate.getCollege())
.set(mate.getOldgrade() != null, SysDisMate::getOldgrade, mate.getOldgrade())
.set(mate.getOldmajor() != null, SysDisMate::getOldmajor, mate.getOldmajor())
.set(mate.getNewgrade() != null, SysDisMate::getNewgrade, mate.getNewgrade())
.set(mate.getNewmajor() != null, SysDisMate::getNewmajor, mate.getNewmajor())
.set(mate.getFinaldata1() != null, SysDisMate::getFinaldata1, mate.getFinaldata1())
.set(mate.getFinaldata2() != null, SysDisMate::getFinaldata2, mate.getFinaldata2())
.set(mate.getFinalmajor() != null, SysDisMate::getFinalmajor, mate.getFinalmajor())
.set(mate.getFinallabel() != null, SysDisMate::getFinallabel, mate.getFinallabel());
updateResult = sysDisMateMapper.update(null, updateWrapper);
logger.info("通过子表ID自定义更新影响行数: {}", updateResult);
}
// 兼容无id时按st_id更新同样自定义SQL
else if (mate.getStId() != null && !mate.getStId().isEmpty()) {
LambdaUpdateWrapper<SysDisMate> updateWrapper = Wrappers.lambdaUpdate(SysDisMate.class);
updateWrapper.eq(SysDisMate::getStId, mate.getStId())
.set(mate.getStName() != null, SysDisMate::getStName, mate.getStName())
.set(mate.getCollege() != null, SysDisMate::getCollege, mate.getCollege())
.set(mate.getOldgrade() != null, SysDisMate::getOldgrade, mate.getOldgrade())
.set(mate.getOldmajor() != null, SysDisMate::getOldmajor, mate.getOldmajor())
.set(mate.getNewgrade() != null, SysDisMate::getNewgrade, mate.getNewgrade())
.set(mate.getNewmajor() != null, SysDisMate::getNewmajor, mate.getNewmajor())
.set(mate.getFinaldata1() != null, SysDisMate::getFinaldata1, mate.getFinaldata1())
.set(mate.getFinaldata2() != null, SysDisMate::getFinaldata2, mate.getFinaldata2())
.set(mate.getFinalmajor() != null, SysDisMate::getFinalmajor, mate.getFinalmajor())
.set(mate.getFinallabel() != null, SysDisMate::getFinallabel, mate.getFinallabel());
updateResult = sysDisMateMapper.update(null, updateWrapper);
logger.info("通过st_id自定义更新影响行数: {}", updateResult);
}
// 无更新条件时提示
else {
logger.warn("子表记录缺少id和stId无法更新");
continue;
}
// 校验更新结果,失败时打印错误日志
if (updateResult <= 0) {
logger.error("子表更新失败子表ID: {}, stId: {}", mate.getId(), mate.getStId());
// 可选:抛出异常让事务回滚(根据业务需求决定是否开启)
// throw new RuntimeException("子表更新失败影响行数为0");
}
}
} else {
logger.warn("子表数据为空,跳过子表更新");
}
// ========== 3. 原有返回值不变 ==========
return mainTableUpdateCount;
} }
/** /**

View File

@@ -72,6 +72,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="material" column="material" /> <result property="material" column="material" />
<result property="data1" column="data1" /> <result property="data1" column="data1" />
<result property="data2" column="data2" /> <result property="data2" column="data2" />
<result property="finaldata1" column="finaldata1" />
<result property="finaldata2" column="finaldata2" />
<result property="finalmajor" column="finalmajor" />
<result property="finallabel" column="finallabel" />
</resultMap> </resultMap>
<!--材料上传--> <!--材料上传-->

View File

@@ -19,10 +19,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="material" column="material" /> <result property="material" column="material" />
<result property="data1" column="data1" /> <result property="data1" column="data1" />
<result property="data2" column="data2" /> <result property="data2" column="data2" />
<result property="finaldata1" column="finaldata1" />
<result property="finaldata2" column="finaldata2" />
<result property="finalmajor" column="finalmajor" />
<result property="finallabel" column="finallabel" />
</resultMap> </resultMap>
<sql id="selectSysDisMateVo"> <sql id="selectSysDisMateVo">
select id, st_id, st_name, times, college, oldgrade, oldmajor, newgrade, newmajor, proof, idcard, material, data1, data2 from sys_dis_mate select id, st_id, st_name, times, college, oldgrade, oldmajor, newgrade, newmajor, proof, idcard, material, data1, data2, finaldata1, finaldata2, finalmajor, finallabel from sys_dis_mate
</sql> </sql>
<select id="selectSysDisMateList" parameterType="SysDisMate" resultMap="SysDisMateResult"> <select id="selectSysDisMateList" parameterType="SysDisMate" resultMap="SysDisMateResult">
@@ -41,6 +45,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="material != null and material != ''"> and material = #{material}</if> <if test="material != null and material != ''"> and material = #{material}</if>
<if test="data1 != null and data1 != ''"> and data1 = #{data1}</if> <if test="data1 != null and data1 != ''"> and data1 = #{data1}</if>
<if test="data2 != null and data2 != ''"> and data2 = #{data2}</if> <if test="data2 != null and data2 != ''"> and data2 = #{data2}</if>
<if test="finaldata1 != null and finaldata1 != ''"> and finaldata1 = #{finaldata1}</if>
<if test="finaldata2 != null and finaldata2 != ''"> and finaldata2 = #{finaldata2}</if>
<if test="finalmajor != null and finalmajor != ''"> and finalmajor = #{finalmajor}</if>
<if test="finallabel != null and finallabel != ''"> and finallabel = #{finallabel}</if>
</where> </where>
</select> </select>
@@ -65,6 +73,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="material != null">material,</if> <if test="material != null">material,</if>
<if test="data1 != null">data1,</if> <if test="data1 != null">data1,</if>
<if test="data2 != null">data2,</if> <if test="data2 != null">data2,</if>
<if test="finaldata1 != null">finaldata1,</if>
<if test="finaldata2 != null">finaldata2,</if>
<if test="finalmajor != null">finalmajor,</if>
<if test="finallabel != null">finallabel,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="stId != null">#{stId},</if> <if test="stId != null">#{stId},</if>
@@ -80,6 +92,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="material != null">#{material},</if> <if test="material != null">#{material},</if>
<if test="data1 != null">#{data1},</if> <if test="data1 != null">#{data1},</if>
<if test="data2 != null">#{data2},</if> <if test="data2 != null">#{data2},</if>
<if test="finaldata1 != null">#{finaldata1},</if>
<if test="finaldata2 != null">#{finaldata2},</if>
<if test="finalmajor != null">#{finalmajor},</if>
<if test="finallabel != null">#{finallabel},</if>
</trim> </trim>
</insert> </insert>
@@ -99,10 +115,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="material != null">material = #{material},</if> <if test="material != null">material = #{material},</if>
<if test="data1 != null">data1 = #{data1},</if> <if test="data1 != null">data1 = #{data1},</if>
<if test="data2 != null">data2 = #{data2},</if> <if test="data2 != null">data2 = #{data2},</if>
<if test="finaldata1 != null">finaldata1 = #{finaldata1},</if>
<if test="finaldata2 != null">finaldata2 = #{finaldata2},</if>
<if test="finalmajor != null">finalmajor = #{finalmajor},</if>
<if test="finallabel != null">finallabel = #{finallabel},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>
<!-- 新增:子表更新语句 -->
<update id="updateSysDisMateByStId" parameterType="SysDisMate">
update sys_dis_mate
<trim prefix="SET" suffixOverrides=",">
<if test="stName != null">st_name = #{stName},</if>
<if test="times != null">times = #{times},</if>
<if test="college != null">college = #{college},</if>
<if test="oldgrade != null">oldgrade = #{oldgrade},</if>
<if test="oldmajor != null">oldmajor = #{oldmajor},</if>
<if test="newgrade != null">newgrade = #{newgrade},</if>
<if test="newmajor != null">newmajor = #{newmajor},</if>
<if test="proof != null">proof = #{proof},</if>
<if test="idcard != null">idcard = #{idcard},</if>
<if test="material != null">material = #{material},</if>
<if test="data1 != null">data1 = #{data1},</if>
<if test="data2 != null">data2 = #{data2},</if>
<!-- 核心:更新年级/班级相关字段 -->
<if test="finaldata1 != null">finaldata1 = #{finaldata1},</if>
<if test="finaldata2 != null">finaldata2 = #{finaldata2},</if>
<if test="finalmajor != null">finalmajor = #{finalmajor},</if>
<if test="finallabel != null">finallabel = #{finallabel},</if>
</trim>
where st_id = #{stId}
</update>
<delete id="deleteSysDisMateById" parameterType="Long"> <delete id="deleteSysDisMateById" parameterType="Long">
delete from sys_dis_mate where id = #{id} delete from sys_dis_mate where id = #{id}
</delete> </delete>