|
|
@@ -15,10 +15,15 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
import org.dromara.zsjy.domain.bo.InternshipInfoQueryBO;
|
|
|
+import org.dromara.zsjy.domain.bo.InternshipInfoAddBO;
|
|
|
+import org.dromara.zsjy.domain.bo.InternshipInfoEditBO;
|
|
|
import org.dromara.zsjy.domain.vo.InternshipInfoVO;
|
|
|
+import org.dromara.zsjy.domain.ZsjyInternshipInfo;
|
|
|
import org.dromara.zsjy.mapper.InternshipInfoMapper;
|
|
|
+import org.dromara.zsjy.mapper.ZsjyInternshipInfoMapper;
|
|
|
import org.dromara.zsjy.service.IInternshipInfoService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
|
|
|
import java.util.*;
|
|
|
@@ -35,6 +40,7 @@ import java.util.*;
|
|
|
public class InternshipInfoServiceImpl implements IInternshipInfoService {
|
|
|
|
|
|
private final InternshipInfoMapper internshipInfoMapper;
|
|
|
+ private final ZsjyInternshipInfoMapper zsjyInternshipInfoMapper;
|
|
|
|
|
|
/**
|
|
|
* 查询学生实习信息分页列表(班主任专用)
|
|
|
@@ -250,4 +256,104 @@ public class InternshipInfoServiceImpl implements IInternshipInfoService {
|
|
|
default -> "未知状态";
|
|
|
};
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增实习信息
|
|
|
+ *
|
|
|
+ * @param addBO 新增参数
|
|
|
+ * @return 是否成功
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean insertInternshipInfo(InternshipInfoAddBO addBO) {
|
|
|
+ log.info("新增实习信息,参数:{}", addBO);
|
|
|
+
|
|
|
+ // 检查该学生是否已经有实习信息
|
|
|
+ LambdaQueryWrapper<ZsjyInternshipInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(ZsjyInternshipInfo::getStudentId, addBO.getStudentId());
|
|
|
+ ZsjyInternshipInfo existingInfo = zsjyInternshipInfoMapper.selectOne(queryWrapper);
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotNull(existingInfo)) {
|
|
|
+ log.warn("学生ID:{} 已存在实习信息,不能重复添加", addBO.getStudentId());
|
|
|
+ throw new RuntimeException("该学生已存在实习信息,不能重复添加");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建实习信息实体
|
|
|
+ ZsjyInternshipInfo internshipInfo = new ZsjyInternshipInfo();
|
|
|
+ BeanUtil.copyProperties(addBO, internshipInfo);
|
|
|
+
|
|
|
+ // 映射字段名称差异
|
|
|
+ internshipInfo.setPositionName(addBO.getInternshipPosition());
|
|
|
+ internshipInfo.setStartDate(addBO.getInternshipStartDate());
|
|
|
+ internshipInfo.setEndDate(addBO.getInternshipEndDate());
|
|
|
+ internshipInfo.setCompanyContact(addBO.getContactPersonName());
|
|
|
+ internshipInfo.setCompanyPhone(addBO.getContactPersonPhone());
|
|
|
+ internshipInfo.setStatus(addBO.getAgreementStatus());
|
|
|
+
|
|
|
+ // 插入数据
|
|
|
+ int result = zsjyInternshipInfoMapper.insert(internshipInfo);
|
|
|
+ log.info("新增实习信息结果:{}", result > 0 ? "成功" : "失败");
|
|
|
+
|
|
|
+ return result > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改实习信息
|
|
|
+ *
|
|
|
+ * @param editBO 修改参数
|
|
|
+ * @return 是否成功
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean updateInternshipInfo(InternshipInfoEditBO editBO) {
|
|
|
+ log.info("修改实习信息,参数:{}", editBO);
|
|
|
+
|
|
|
+ // 检查实习信息是否存在
|
|
|
+ ZsjyInternshipInfo existingInfo = zsjyInternshipInfoMapper.selectById(editBO.getInternshipId());
|
|
|
+ if (ObjectUtil.isNull(existingInfo)) {
|
|
|
+ log.warn("实习信息ID:{} 不存在", editBO.getInternshipId());
|
|
|
+ throw new RuntimeException("实习信息不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建更新实体
|
|
|
+ ZsjyInternshipInfo internshipInfo = new ZsjyInternshipInfo();
|
|
|
+ BeanUtil.copyProperties(editBO, internshipInfo);
|
|
|
+
|
|
|
+ // 映射字段名称差异
|
|
|
+ internshipInfo.setPositionName(editBO.getInternshipPosition());
|
|
|
+ internshipInfo.setStartDate(editBO.getInternshipStartDate());
|
|
|
+ internshipInfo.setEndDate(editBO.getInternshipEndDate());
|
|
|
+ internshipInfo.setCompanyContact(editBO.getContactPersonName());
|
|
|
+ internshipInfo.setCompanyPhone(editBO.getContactPersonPhone());
|
|
|
+ internshipInfo.setStatus(editBO.getAgreementStatus());
|
|
|
+
|
|
|
+ // 更新数据
|
|
|
+ int result = zsjyInternshipInfoMapper.updateById(internshipInfo);
|
|
|
+ log.info("修改实习信息结果:{}", result > 0 ? "成功" : "失败");
|
|
|
+
|
|
|
+ return result > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除实习信息
|
|
|
+ *
|
|
|
+ * @param internshipIds 实习信息ID数组
|
|
|
+ * @return 是否成功
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean deleteInternshipInfo(Long[] internshipIds) {
|
|
|
+ log.info("删除实习信息,IDs:{}", Arrays.toString(internshipIds));
|
|
|
+
|
|
|
+ if (ObjectUtil.isEmpty(internshipIds)) {
|
|
|
+ log.warn("删除实习信息参数为空");
|
|
|
+ throw new RuntimeException("删除参数不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量删除(逻辑删除)
|
|
|
+ int result = zsjyInternshipInfoMapper.deleteBatchIds(Arrays.asList(internshipIds));
|
|
|
+ log.info("删除实习信息结果:删除了 {} 条记录", result);
|
|
|
+
|
|
|
+ return result > 0;
|
|
|
+ }
|
|
|
}
|