package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.dto.*;
import com.yuanchu.mom.numgen.NumberGenerator;
import com.yuanchu.mom.pojo.PersonTraining;
import com.yuanchu.mom.pojo.PersonTrainingDetailed;
import com.yuanchu.mom.pojo.PersonTrainingRecord;
import com.yuanchu.mom.service.PersonTrainingDetailedService;
import com.yuanchu.mom.service.PersonTrainingRecordService;
import com.yuanchu.mom.service.PersonTrainingService;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/**
*
* 培训计划 前端控制器
*
*
* @author
* @since 2024-10-11 01:11:49
*/
@Api(tags = "人员 - 培训计划")
@RestController
@RequestMapping("/personTraining")
//@CustomClazzName(name = "资源要求", index = 8)
public class PersonTrainingController {
@Autowired
private PersonTrainingService personTrainingService;
@Autowired
private PersonTrainingDetailedService personTrainingDetailedService;
@Autowired
private PersonTrainingRecordService personTrainingRecordService;
@Autowired
private NumberGenerator numberGenerator;
@ValueClassify("培训计划")
@ApiOperation(value = "培训计划 导入")
@PostMapping("personTrainingImport")
public Result> personTrainingImport(@RequestPart("file") MultipartFile file) {
personTrainingService.personTrainingImport(file);
return Result.success();
}
@ValueClassify("培训计划")
@ApiOperation(value = "培训计划 删除")
@DeleteMapping("personTrainingDelete")
public Result> personTrainingDelete(@RequestParam("id") Integer id) {
personTrainingService.personTrainingDelete(id);
return Result.success();
}
@ValueClassify("培训计划")
@ApiOperation(value = "培训计划 查询")
@GetMapping("personTrainingSelect")
public Result> personTrainingSelect(Page page, String compilerName, String departmentId) {
IPage iPage = personTrainingService.personTrainingSelect(page, compilerName, departmentId);
return Result.success(iPage);
}
@ValueClassify("培训计划")
@ApiOperation(value = "年度培训计划 审核")
@PostMapping("reviewAnnualPersonnelTraining")
public Result> reviewAnnualPersonnelTraining(@RequestBody PersonTrainingUpdateDto personTrainingUpdateDto) {
personTrainingService.reviewAnnualPersonnelTraining(personTrainingUpdateDto);
return Result.success();
}
@ValueClassify("培训计划")
@ApiOperation(value = "培训计划 批准")
@PostMapping("approveAnnualPersonnelTraining")
public Result> approveAnnualPersonnelTraining(@RequestBody PersonTrainingUpdateDto personTrainingUpdateDto) {
personTrainingService.approveAnnualPersonnelTraining(personTrainingUpdateDto);
return Result.success();
}
@ValueClassify("培训计划")
@ApiOperation(value = "年度计划明细表 新增/编辑")
@PostMapping("addOrUpdatePersonTrainingDetailed")
public Result> addOrUpdatePersonTrainingDetailed(@RequestBody PersonTrainingDetailed personTrainingDetailed) {
if (ObjectUtils.isEmpty(personTrainingDetailed.getId())) {
personTrainingDetailed.setState(3);
String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
String processNumber = numberGenerator.generateNumberWithPrefix(4, "KC" + month + "-" + year + month, PersonTrainingDetailed::getCourseCode);
personTrainingDetailed.setCourseCode(processNumber);
}
personTrainingDetailedService.saveOrUpdate(personTrainingDetailed);
return Result.success();
}
@ValueClassify("培训计划")
@ApiOperation(value = "年度计划明细表 批量删除")
@PostMapping("deleteAnnualPlanDetailTable")
public Result> deleteAnnualPlanDetailTable(@RequestParam("ids") String ids) {
personTrainingDetailedService.deleteAnnualPlanDetailTable(ids);
return Result.success();
}
@ValueClassify("培训计划")
@ApiOperation(value = "年度计划明细表 查询")
@GetMapping("queryTheAnnualPlanDetailsTable")
public Result> queryTheAnnualPlanDetailsTable(Page page,
String trainingLecturerName, String courseCode,
String trainingDate, Integer id, Integer userId) {
IPage iPage = personTrainingDetailedService.queryTheAnnualPlanDetailsTable(page,
trainingLecturerName, courseCode, trainingDate, id, userId);
return Result.success(iPage);
}
@ValueClassify("培训计划")
@ApiOperation(value = "培训与考核记录 查询")
@GetMapping("trainingAndAssessmentRecordsPage")
public Result> trainingAndAssessmentRecordsPage(Integer trainingDetailedId,
String userName) {
List list = personTrainingRecordService.trainingAndAssessmentRecordsPage(trainingDetailedId, userName);
return Result.success(list);
}
@ValueClassify("培训计划")
@ApiOperation(value = "培训与考核记录 新增人员")
@PostMapping("newPersonnelAddedToTrainingRecords")
public Result> newPersonnelAddedToTrainingRecords(@RequestBody List personTrainingRecord) {
personTrainingRecordService.saveBatch(personTrainingRecord);
return Result.success();
}
@ValueClassify("培训计划")
@ApiOperation(value = "培训与考核记录 认领")
@PostMapping("claimOfTrainingAndAssessmentRecords")
public Result> claimOfTrainingAndAssessmentRecords(@RequestParam("claimAndClaim") Boolean claimAndClaim,
@RequestParam("courseId") Integer courseId) {
personTrainingRecordService.claimOfTrainingAndAssessmentRecords(claimAndClaim, courseId);
return Result.success();
}
@ValueClassify("培训计划")
@ApiOperation(value = "培训与考核记录 提交/撤销")
@PostMapping("trainingAndAssessmentRecordsAdded")
public Result> trainingAndAssessmentRecordsAdded(@RequestBody PersonTrainingRecordSubmitDto personTrainingRecordSubmitDto) {
personTrainingDetailedService.update(Wrappers.lambdaUpdate()
.eq(PersonTrainingDetailed::getId, personTrainingRecordSubmitDto.getTrainingDetailedId())
.set(PersonTrainingDetailed::getAssessmentMethod, personTrainingRecordSubmitDto.getAssessmentMethod())
.set(PersonTrainingDetailed::getComprehensiveAssessment, personTrainingRecordSubmitDto.getComprehensiveAssessment())
.set(PersonTrainingDetailed::getAssessmentUserId, personTrainingRecordSubmitDto.getAssessmentUserId())
.set(PersonTrainingDetailed::getAssessmentDate, personTrainingRecordSubmitDto.getAssessmentDate())
.set(PersonTrainingDetailed::getState, personTrainingRecordSubmitDto.getState()));
return Result.success();
}
@ValueClassify("培训计划")
@ApiOperation(value = "培训与考核记录 删除")
@PostMapping("deleteTrainingAndAssessmentRecords")
public Result> deleteTrainingAndAssessmentRecords(@RequestParam("ids") String ids) {
personTrainingRecordService.deleteTrainingAndAssessmentRecords(ids);
return Result.success();
}
@PostMapping("outOfFocusPreservation")
@ValueAuth
public Result> outOfFocusPreservation(@RequestBody PersonTrainingRecord personTrainingRecord) {
personTrainingRecordService.updateById(personTrainingRecord);
return Result.success();
}
/**
* 导出人员培训计划
* @return
*/
@ValueAuth
@ApiOperation(value = "导出人员培训计划")
@GetMapping("/exportPersonTraining")
public void exportPersonTraining(Integer id, HttpServletResponse response){
personTrainingService.exportPersonTraining(id, response);
}
/**
* 导出人员培训与考核记录
* @return
*/
@ValueAuth
@ApiOperation(value = "导出人员培训与考核记录")
@GetMapping("/exportPersonTrainingRecord")
public void exportPersonTrainingRecord(Integer id, HttpServletResponse response){
personTrainingService.exportPersonTrainingRecord(id, response);
}
}