培训安排:配置、批量下发、批量资料上传、批量培训完成、更新培训记录超期状态

develop-QA
qinyulong 3 months ago
parent e41dc018a1
commit e89e50e3fe
  1. 82
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CultivateDetailController.java
  2. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CultivateDetailMapper.java
  3. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CultivateDetailMapper.xml
  4. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/ICultivateDetailService.java
  5. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/CultivateDetailServiceImpl.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<CultivateDetailEntity> 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<CultivateDetailEntity> 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<CultivateDetailEntity> 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();
}
}

@ -37,4 +37,8 @@ public interface CultivateDetailMapper extends BaseMapper<CultivateDetailEntity>
*/
List<CultivateDetailExcel> exportCultivateDetail(@Param("ew") Wrapper<CultivateDetailEntity> queryWrapper);
/**
* 培训超期
*/
void exceed();
}

@ -122,4 +122,16 @@
FROM MES_CULTIVATE_DETAIL ${ew.customSqlSegment}
</select>
<update id="exceed">
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))
</update>
</mapper>

@ -35,4 +35,8 @@ public interface ICultivateDetailService extends BaseService<CultivateDetailEnti
*/
List<CultivateDetailExcel> exportCultivateDetail(Wrapper<CultivateDetailEntity> queryWrapper);
/**
* 培训超期
*/
void exceed();
}

@ -37,4 +37,9 @@ public class CultivateDetailServiceImpl extends BaseServiceImpl<CultivateDetailM
return cultivateDetailList;
}
@Override
public void exceed() {
baseMapper.exceed();
}
}

Loading…
Cancel
Save