|
|
@@ -15,12 +15,16 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
import org.dromara.main.domain.MainAudit;
|
|
|
import org.dromara.main.domain.MainCompanyApply;
|
|
|
+import org.dromara.main.domain.MainExamApply;
|
|
|
+import org.dromara.main.domain.MainExamEvaluation;
|
|
|
import org.dromara.main.domain.MainPosition;
|
|
|
import org.dromara.main.domain.MainPostApply;
|
|
|
import org.dromara.main.domain.bo.MainAuditBo;
|
|
|
import org.dromara.main.domain.vo.MainAuditVo;
|
|
|
import org.dromara.main.mapper.MainAuditMapper;
|
|
|
import org.dromara.main.mapper.MainCompanyApplyMapper;
|
|
|
+import org.dromara.main.mapper.MainExamApplyMapper;
|
|
|
+import org.dromara.main.mapper.MainExamEvaluationMapper;
|
|
|
import org.dromara.main.mapper.MainPostApplyMapper;
|
|
|
import org.dromara.main.service.IMainAuditService;
|
|
|
import org.dromara.main.service.IMainPositionService;
|
|
|
@@ -44,6 +48,8 @@ public class MainAuditServiceImpl implements IMainAuditService {
|
|
|
private final MainAuditMapper baseMapper;
|
|
|
private final MainCompanyApplyMapper companyApplyMapper;
|
|
|
private final MainPostApplyMapper postApplyMapper;
|
|
|
+ private final MainExamApplyMapper examApplyMapper;
|
|
|
+ private final MainExamEvaluationMapper examEvaluationMapper;
|
|
|
private final ISysTenantService tenantService;
|
|
|
private final ISysPostService sysPostService;
|
|
|
private final IMainPositionService mainPositionService;
|
|
|
@@ -109,12 +115,24 @@ public class MainAuditServiceImpl implements IMainAuditService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean auditPass(Long id, String remark) {
|
|
|
+ public Boolean auditPass(Long id, String remark, Long evaluationId, java.math.BigDecimal deposit, java.math.BigDecimal finalPayment) {
|
|
|
MainAudit audit = baseMapper.selectById(id);
|
|
|
if (audit == null) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ // 保存 evaluationId 到审核记录
|
|
|
+ if (evaluationId != null) {
|
|
|
+ audit.setEvaluationId(evaluationId);
|
|
|
+ }
|
|
|
+ // 保存定金和尾款
|
|
|
+ if (deposit != null) {
|
|
|
+ audit.setDeposit(deposit);
|
|
|
+ }
|
|
|
+ if (finalPayment != null) {
|
|
|
+ audit.setFinalPayment(finalPayment);
|
|
|
+ }
|
|
|
+
|
|
|
// 更新审核状态
|
|
|
audit.setAuditResult(1);
|
|
|
audit.setAuditRemark(remark);
|
|
|
@@ -132,8 +150,14 @@ public class MainAuditServiceImpl implements IMainAuditService {
|
|
|
// 企业审核通过 - 同步到 sys_tenant 表
|
|
|
syncCompanyToTenant(audit.getTargetId());
|
|
|
} else if (audit.getAuditType() == 2) {
|
|
|
- // 岗位审核通过 - 保存到 main_post_apply 表(标记为已通过)
|
|
|
- syncPostApplyToMainPosition(audit.getTargetId());
|
|
|
+ // 岗位审核通过 - 保存到 main_position 表(标记为已通过)
|
|
|
+ Long positionId = syncPostApplyToMainPosition(audit.getTargetId());
|
|
|
+
|
|
|
+ // 如果选择了测评,绑定公司与测评关系,并更新测评的 position_id
|
|
|
+ if (evaluationId != null) {
|
|
|
+ bindEvaluationToCompany(audit, evaluationId);
|
|
|
+ updateEvaluationPositionId(evaluationId, positionId);
|
|
|
+ }
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
log.error("审核通过后数据同步失败", e);
|
|
|
@@ -143,6 +167,73 @@ public class MainAuditServiceImpl implements IMainAuditService {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 绑定测评与公司关系(插入 main_exam_apply 表)
|
|
|
+ */
|
|
|
+ private void bindEvaluationToCompany(MainAudit audit, Long evaluationId) {
|
|
|
+ // 从岗位申请中获取 tenantId
|
|
|
+ MainPostApply postApply = postApplyMapper.selectById(audit.getTargetId());
|
|
|
+ if (postApply == null) {
|
|
|
+ log.warn("岗位申请信息不存在,无法绑定测评,targetId: " + audit.getTargetId());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String tenantId = postApply.getTenantId();
|
|
|
+ if (StringUtils.isBlank(tenantId)) {
|
|
|
+ log.warn("岗位申请的 tenantId 为空,无法绑定测评");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查是否已存在绑定关系(避免重复)
|
|
|
+ LambdaQueryWrapper<MainExamApply> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(MainExamApply::getEvaluationId, evaluationId)
|
|
|
+ .eq(MainExamApply::getTenantId, tenantId)
|
|
|
+ .eq(MainExamApply::getDelFlag, "0");
|
|
|
+ MainExamApply existing = examApplyMapper.selectOne(queryWrapper);
|
|
|
+ if (existing != null) {
|
|
|
+ log.debug("公司与测评绑定关系已存在,跳过创建,tenantId: " + tenantId + ", evaluationId: " + evaluationId);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建公司与测评的绑定记录
|
|
|
+ MainExamApply examApply = new MainExamApply();
|
|
|
+ examApply.setEvaluationId(evaluationId);
|
|
|
+ examApply.setTenantId(tenantId);
|
|
|
+ examApply.setStudentId(0L); // 公司级别绑定,无具体学生
|
|
|
+ examApply.setApplySource("2"); // 来源:2-后台审核绑定
|
|
|
+ examApply.setApplyStatus("0"); // 状态:待开始
|
|
|
+ examApply.setScheduleStartTime(new Date());
|
|
|
+ examApply.setMaxAttemptCount(1);
|
|
|
+ examApply.setDelFlag("0");
|
|
|
+
|
|
|
+ // 设置截止时间(默认30天后)
|
|
|
+ Date deadlineTime = new Date(System.currentTimeMillis() + 30L * 24 * 60 * 60 * 1000);
|
|
|
+ examApply.setDeadlineTime(deadlineTime);
|
|
|
+
|
|
|
+ int result = examApplyMapper.insert(examApply);
|
|
|
+ if (result > 0) {
|
|
|
+ log.debug("公司与测评绑定成功,tenantId: " + tenantId + ", evaluationId: " + evaluationId + ", applyId: " + examApply.getId());
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("公司与测评绑定失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新测评的 position_id(关联岗位)
|
|
|
+ */
|
|
|
+ private void updateEvaluationPositionId(Long evaluationId, Long positionId) {
|
|
|
+ if (evaluationId == null || positionId == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ MainExamEvaluation evaluation = examEvaluationMapper.selectById(evaluationId);
|
|
|
+ if (evaluation == null) {
|
|
|
+ log.warn("测评不存在,无法更新 position_id,evaluationId: " + evaluationId);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ evaluation.setPositionId(positionId);
|
|
|
+ examEvaluationMapper.updateById(evaluation);
|
|
|
+ log.debug("测评 position_id 更新成功,evaluationId: " + evaluationId + ", positionId: " + positionId);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 将企业申请数据同步到租户表
|
|
|
*/
|
|
|
@@ -198,7 +289,7 @@ public class MainAuditServiceImpl implements IMainAuditService {
|
|
|
/**
|
|
|
* 将岗位申请数据同步到 sys_post 表
|
|
|
*/
|
|
|
- private void syncPostApplyToMainPosition(Long applyId) {
|
|
|
+ private Long syncPostApplyToMainPosition(Long applyId) {
|
|
|
// 1. 查询岗位申请信息
|
|
|
MainPostApply postApply = postApplyMapper.selectById(applyId);
|
|
|
if (postApply == null) {
|
|
|
@@ -207,7 +298,7 @@ public class MainAuditServiceImpl implements IMainAuditService {
|
|
|
|
|
|
// 2. 检查是否已经同步过(避免重复)
|
|
|
if (postApply.getPostId() != null) {
|
|
|
- return; // 已经有岗位ID,说明已同步过
|
|
|
+ return postApply.getPostId(); // 已经有岗位ID,说明已同步过,返回已有的岗位ID
|
|
|
}
|
|
|
|
|
|
// 3. 构建 MainPosition 对象,从 MainPostApply 复制数据
|
|
|
@@ -253,6 +344,8 @@ public class MainAuditServiceImpl implements IMainAuditService {
|
|
|
postApply.setPostId(position.getId()); // 保存新创建的岗位ID
|
|
|
postApply.setApplyStatus(2); // 已通过
|
|
|
postApplyMapper.updateById(postApply);
|
|
|
+
|
|
|
+ return position.getId();
|
|
|
}
|
|
|
|
|
|
@Override
|