diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CultivateDetailController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CultivateDetailController.java index 40f388e1..fea2e567 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CultivateDetailController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CultivateDetailController.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import jakarta.annotation.PostConstruct; import lombok.AllArgsConstructor; import jakarta.validation.Valid; @@ -13,8 +14,10 @@ import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; +import org.springblade.desk.jobTransfer.pojo.enums.TrainingStatusEnum; import org.springblade.desk.jobTransfer.pojo.excel.CultivateDetailExcel; import org.springblade.desk.jobTransfer.pojo.request.CultivateDetailQuery; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -27,6 +30,7 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.tool.constant.BladeConstant; +import java.util.Date; import java.util.Map; import java.util.List; @@ -126,4 +130,82 @@ public class CultivateDetailController extends BladeController { ExcelUtil.export(response, "培训安排数据" + DateUtil.time(), "培训安排数据表", list, CultivateDetailExcel.class); } + /** + * 培训安排 配置 + */ + @PostMapping("/configured") + @ApiOperationSupport(order = 10) + @Operation(summary = "配置", description = "传入cultivateDetail") + public R configured(@Valid @RequestBody CultivateDetailEntity cultivateDetail) { + cultivateDetail.setCaStatus(TrainingStatusEnum.WAIT_DISTRIBUTE.getCode().shortValue()); + return R.status(cultivateDetailService.updateById(cultivateDetail)); + } + + /** + * 批量下发 + */ + @PostMapping("/issued") + @ApiOperationSupport(order = 11) + @Operation(summary = "批量下发", description = "传入cultivateDetails") + public R issued(@Valid @RequestBody List cultivateDetails) { + for (CultivateDetailEntity cultivateDetail : cultivateDetails) { + Short caStatus = cultivateDetail.getCaStatus(); + if (!(TrainingStatusEnum.WAIT_DISTRIBUTE.getCode().shortValue() == caStatus)) { + return R.fail("请选择状态为待下发的记录"); + } + cultivateDetail.setCaStatus(TrainingStatusEnum.ISSUED.getCode().shortValue()); + cultivateDetail.setDistributeTime(new Date()); + } + return R.status(cultivateDetailService.saveOrUpdateBatch(cultivateDetails)); + } + + /** + * 批量资料上传 + */ + @PostMapping("/uploadMaterials") + @ApiOperationSupport(order = 12) + @Operation(summary = "批量资料上传", description = "传入cultivateDetails") + public R uploadMaterials(@Valid @RequestBody List cultivateDetails) { + for (CultivateDetailEntity cultivateDetail : cultivateDetails) { + Short caStatus = cultivateDetail.getCaStatus(); + if (!(TrainingStatusEnum.ISSUED.getCode().shortValue() == caStatus)) { + return R.fail("请选择状态为培训中的记录"); + } + cultivateDetail.setCaStatus(TrainingStatusEnum.TRAINED.getCode().shortValue()); + } + return R.status(cultivateDetailService.saveOrUpdateBatch(cultivateDetails)); + } + + /** + * 批量培训完成 + */ + @PostMapping("/trainingCompleted") + @ApiOperationSupport(order = 13) + @Operation(summary = "批量培训完成", description = "传入cultivateDetails") + public R trainingCompleted(@Valid @RequestBody List cultivateDetails) { + for (CultivateDetailEntity cultivateDetail : cultivateDetails) { + Short caStatus = cultivateDetail.getCaStatus(); + if (!(TrainingStatusEnum.TRAINED.getCode().shortValue() == caStatus)) { + return R.fail("请选择状态为待确认的记录"); + } + cultivateDetail.setCaStatus(TrainingStatusEnum.OK_TRAINED.getCode().shortValue()); + cultivateDetail.setFinishTime(new Date()); + } + return R.status(cultivateDetailService.saveOrUpdateBatch(cultivateDetails)); + } + + @PostConstruct // 项目启动后立即执行一次 + public void init() { + exceed(); + } + + /** + * 更新培训记录超期状态 + * TODO 以后需要交由PowerJob服务统一管理 + */ + @Scheduled(cron = "0 0 0 * * ?") // 每天凌晨0点执行 + public void exceed() { + cultivateDetailService.exceed(); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CultivateDetailMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CultivateDetailMapper.java index b21bd807..34b87a7d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CultivateDetailMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CultivateDetailMapper.java @@ -37,4 +37,8 @@ public interface CultivateDetailMapper extends BaseMapper */ List exportCultivateDetail(@Param("ew") Wrapper queryWrapper); + /** + * 培训超期 + */ + void exceed(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CultivateDetailMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CultivateDetailMapper.xml index 76ba2cec..1a7f9c64 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CultivateDetailMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CultivateDetailMapper.xml @@ -122,4 +122,16 @@ FROM MES_CULTIVATE_DETAIL ${ew.customSqlSegment} + + UPDATE MES_CULTIVATE_DETAIL cd + SET cd.CA_STATUS = 4, -- 4表示已到期 + cd.UPDATE_TIME = SYSDATE + WHERE cd.CA_STATUS = 3 -- 当前状态为已下发-培训中 + AND cd.IS_DELETED = 0 + AND EXISTS (SELECT 1 + FROM MES_TRAINING_PLAN tp + WHERE tp.ID = cd.PLAN_ID + AND tp.IS_DELETED = 0 + AND SYSDATE > (cd.DISTRIBUTE_TIME + tp.CYCLE)) + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/ICultivateDetailService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/ICultivateDetailService.java index 38b7e05e..9a558f5a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/ICultivateDetailService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/ICultivateDetailService.java @@ -35,4 +35,8 @@ public interface ICultivateDetailService extends BaseService exportCultivateDetail(Wrapper queryWrapper); + /** + * 培训超期 + */ + void exceed(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/CultivateDetailServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/CultivateDetailServiceImpl.java index cdc4e3a4..e66d9306 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/CultivateDetailServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/CultivateDetailServiceImpl.java @@ -37,4 +37,9 @@ public class CultivateDetailServiceImpl extends BaseServiceImpl