From b2aa5fcd02ebb8e12e45017562011b38c739f49d Mon Sep 17 00:00:00 2001 From: qinyulong Date: Fri, 9 Jan 2026 10:15:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E8=BD=AC=E5=B2=97=E8=AE=A1?= =?UTF-8?q?=E5=88=92+=E6=89=B9=E9=87=8F=E4=B8=8B=E5=B2=97=E8=AE=A1?= =?UTF-8?q?=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PostHandleController.java | 18 ++++ .../service/IPostHandleService.java | 21 ++++ .../service/impl/PostHandleServiceImpl.java | 96 +++++++++++++++++-- 3 files changed, 127 insertions(+), 8 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/PostHandleController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/PostHandleController.java index fe61d24f..470a2afb 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/PostHandleController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/PostHandleController.java @@ -156,6 +156,24 @@ public class PostHandleController extends BladeController { return postHandleService.JobTransferPlan(Func.toLongList(ids), teacherId, teacherName, trainingPlanId); } + /** + * 批量下岗计划 + * + * @param ids + * @param teacherId + * @param teacherName + * @param trainingPlanId + * @return + */ + @PostMapping("/layoffPlan") + @ApiOperationSupport(order = 8) + @Operation(summary = "批量下岗计划", description = "传入ids") + public R layoffPlan(@Parameter(description = "主键集合", required = true) @RequestParam String ids, + @Parameter(description = "培训师id", required = true) @RequestParam Long teacherId, + @Parameter(description = "培训师姓名", required = true) @RequestParam String teacherName, + @Parameter(description = "培训模板id", required = true) @RequestParam Long trainingPlanId) { + return postHandleService.layoffPlan(Func.toLongList(ids), teacherId, teacherName, trainingPlanId); + } /** * 导出数据 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/IPostHandleService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/IPostHandleService.java index 871a868c..10945d1e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/IPostHandleService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/IPostHandleService.java @@ -52,5 +52,26 @@ public interface IPostHandleService extends BaseService { */ R saveOrUpdateHandle(PostHandleEntity postHandleEntity); + /** + * 批量转岗计划 + * + * @param ids + * @param teacherId + * @param teacherName + * @param trainingPlanId + * @return + */ R JobTransferPlan(List ids, Long teacherId, String teacherName, Long trainingPlanId); + + /** + * 批量下岗计划 + * + * @param ids + * @param teacherId + * @param teacherName + * @param trainingPlanId + * @return + */ + R layoffPlan(List ids, Long teacherId, String teacherName, Long trainingPlanId); + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/PostHandleServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/PostHandleServiceImpl.java index 29d31967..e6ec1149 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/PostHandleServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/PostHandleServiceImpl.java @@ -18,7 +18,9 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -52,12 +54,13 @@ public class PostHandleServiceImpl extends BaseServiceImpl ids) { // 1. 验证阶段:查看匹配的数据数量,如数量和id不同,则失败 Long matchedCount = this.lambdaQuery() .in(PostHandleEntity::getId, ids) // .eq(PostHandleEntity::getPhStatus, PostHandleStatusEnum.of("")) - .eq(PostHandleEntity::getStaffType, StaffTypeEnum.of("实习工").getCode()) + .eq(PostHandleEntity::getStaffType, StaffTypeEnum.FIELD_WORK.getCode()) .eq(PostHandleEntity::getIsDeleted, 0) .count(); if (matchedCount < ids.size()) { @@ -67,15 +70,16 @@ public class PostHandleServiceImpl extends BaseServiceImpl 0) { @@ -91,10 +95,10 @@ public class PostHandleServiceImpl extends BaseServiceImpl ids, Long teacherId, String teacherName, Long trainingPlanId) { + // 1. 验证阶段:查看匹配的数据数量,如数量和id不同,则失败 + Long matchedCount = this.lambdaQuery() + .in(PostHandleEntity::getId, ids) + .eq(PostHandleEntity::getPhStatus, PostHandleStatusEnum.NORMALITY.getCode()) + .eq(PostHandleEntity::getStaffType, StaffTypeEnum.FORMAL.getCode()) + .eq(PostHandleEntity::getIsDeleted, 0) + .count(); + if (matchedCount < ids.size()) { + return R.fail("请选择正式工安排转岗计划"); + } + // 2. 更新人员岗位数据 + boolean updateSuccess = this.lambdaUpdate() + .in(PostHandleEntity::getId, ids) + .eq(PostHandleEntity::getPhStatus, PostHandleStatusEnum.NORMALITY.getCode()) + .eq(PostHandleEntity::getStaffType, StaffTypeEnum.FORMAL.getCode()) + .set(PostHandleEntity::getPhStatus, PostHandleStatusEnum.JOB_TRANSFER.getCode()) + .set(PostHandleEntity::getUpdateTime, new Date()) + .update(); + if (!updateSuccess) { + return R.fail("转岗计划操作失败"); + } + // 3. 为每条转岗计划新增培训安排 + List cultivateDetails = new ArrayList<>(); + for (Long phId : ids) { + CultivateDetailEntity detail = new CultivateDetailEntity(); + detail.setType((short) 2); + detail.setPlanId(trainingPlanId); + detail.setPhId(phId); + detail.setCaStatus(TrainingStatusEnum.WAIT_DISTRIBUTE.getCode().shortValue()); + detail.setTeacherId(teacherId); + detail.setTeacherName(teacherName); + cultivateDetails.add(detail); + } + boolean saveResult = iCultivateDetailService.saveBatch(cultivateDetails); + + return R.status(saveResult, "操作成功"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R layoffPlan(List ids, Long teacherId, String teacherName, Long trainingPlanId) { + // 1. 验证阶段:查看匹配的数据数量,如数量和id不同,则失败 + Long matchedCount = this.lambdaQuery() + .in(PostHandleEntity::getId, ids) + .eq(PostHandleEntity::getPhStatus, PostHandleStatusEnum.NORMALITY.getCode()) + .eq(PostHandleEntity::getStaffType, StaffTypeEnum.FORMAL.getCode()) + .eq(PostHandleEntity::getIsDeleted, 0) + .count(); + if (matchedCount < ids.size()) { + return R.fail("请选择正式工安排下岗计划"); + } + // 2. 更新人员岗位数据 + boolean updateSuccess = this.lambdaUpdate() + .in(PostHandleEntity::getId, ids) + .eq(PostHandleEntity::getPhStatus, PostHandleStatusEnum.NORMALITY.getCode()) + .eq(PostHandleEntity::getStaffType, StaffTypeEnum.FORMAL.getCode()) + .set(PostHandleEntity::getPhStatus, PostHandleStatusEnum.LAID_OFF.getCode()) + .set(PostHandleEntity::getUpdateTime, new Date()) + .update(); + if (!updateSuccess) { + return R.fail("下岗计划操作失败"); + } + // 3. 为每条下岗计划新增培训安排 + List cultivateDetails = new ArrayList<>(); + for (Long phId : ids) { + CultivateDetailEntity detail = new CultivateDetailEntity(); + detail.setType((short) 3); + detail.setPlanId(trainingPlanId); + detail.setPhId(phId); + detail.setCaStatus(TrainingStatusEnum.WAIT_DISTRIBUTE.getCode().shortValue()); + detail.setTeacherId(teacherId); + detail.setTeacherName(teacherName); + cultivateDetails.add(detail); + } + boolean saveResult = iCultivateDetailService.saveBatch(cultivateDetails); - return null; + return R.status(saveResult, "操作成功"); } /**