package com.ruoyi.personnel.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.personnel.dto.*;
import com.ruoyi.personnel.pojo.PersonTraining;
import com.ruoyi.personnel.pojo.PersonTrainingDetailed;
import com.ruoyi.personnel.pojo.PersonTrainingRecord;
import com.ruoyi.personnel.service.PersonTrainingDetailedService;
import com.ruoyi.personnel.service.PersonTrainingRecordService;
import com.ruoyi.personnel.service.PersonTrainingService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
/**
*
* 培训计划 前端控制器
*
*
* @author 芯导软件(江苏)有限公司
* @since 2024-10-11 01:11:49
*/
@Api(tags = "人员 - 培训计划")
@RestController
@RequestMapping("/personTraining")
public class PersonTrainingController {
@Autowired
private PersonTrainingService personTrainingService;
@Autowired
private PersonTrainingDetailedService personTrainingDetailedService;
@Autowired
private PersonTrainingRecordService personTrainingRecordService;
@Resource
private NumberGenerator numberGenerator;
@ApiOperation(value = "培训计划 导入")
@PostMapping("personTrainingImport")
public Result> personTrainingImport(@RequestPart("file") MultipartFile file) {
personTrainingService.personTrainingImport(file);
return Result.success();
}
@ApiOperation(value = "培训计划 删除")
@DeleteMapping("personTrainingDelete")
public Result> personTrainingDelete(@RequestParam("id") Integer id) {
personTrainingService.personTrainingDelete(id);
return Result.success();
}
@ApiOperation(value = "培训计划 查询")
@GetMapping("personTrainingSelect")
public Result> personTrainingSelect(Page page, String compilerName, Integer departmentId) {
IPage iPage = personTrainingService.personTrainingSelect(page, compilerName, departmentId);
return Result.success(iPage);
}
@ApiOperation(value = "培训计划 年度计划明细表 删除")
@DeleteMapping("/deleteDetail")
public Result> deleteDetail( Integer id) {
personTrainingService.deleteDetail(id);
return Result.success();
}
@ApiOperation(value = "年度培训计划 审核")
@PostMapping("reviewAnnualPersonnelTraining")
public Result> reviewAnnualPersonnelTraining(@RequestBody PersonTrainingUpdateDto personTrainingUpdateDto) {
personTrainingService.reviewAnnualPersonnelTraining(personTrainingUpdateDto);
return Result.success();
}
@ApiOperation(value = "培训计划 批准")
@PostMapping("approveAnnualPersonnelTraining")
public Result> approveAnnualPersonnelTraining(@RequestBody PersonTrainingUpdateDto personTrainingUpdateDto) {
personTrainingService.approveAnnualPersonnelTraining(personTrainingUpdateDto);
return Result.success();
}
@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);
}
// 如果是新增 年度计划表需要重新审核、批准
if(Objects.isNull(personTrainingDetailed.getId())) {
PersonTraining byId = personTrainingService.getById(personTrainingDetailed.getPlanId());
personTrainingService.update(new LambdaUpdateWrapper()
.set(PersonTraining::getReviewerId,null)
.set(PersonTraining::getAuditDate,null)
.set(PersonTraining::getReviewerStatus,null)
.set(PersonTraining::getApproverId,null)
.set(PersonTraining::getApprovalStatus,null)
.set(PersonTraining::getApprovalDate,null)
.eq(PersonTraining::getId,byId.getId()));
}
// 如果时间已经到了,那么状态就要改为已结束
LocalDateTime now = LocalDateTime.now();
String trainingDateTwo = personTrainingDetailed.getTrainingDateTwo(); // 日期
String endTime = personTrainingDetailed.getEndTime(); // 结束时间
LocalDateTime parse = LocalDateTime.parse(trainingDateTwo + "T" + endTime);
if(now.isAfter(parse)) {
personTrainingDetailed.setState(4);
}
personTrainingDetailedService.saveOrUpdate(personTrainingDetailed);
return Result.success();
}
@ApiOperation(value = "年度计划明细表 批量删除")
@DeleteMapping("deleteAnnualPlanDetailTable")
public Result> deleteAnnualPlanDetailTable(@RequestParam("ids") String ids) {
personTrainingDetailedService.deleteAnnualPlanDetailTable(ids);
return Result.success();
}
@ApiOperation(value = "年度计划明细表 查询")
@GetMapping("queryTheAnnualPlanDetailsTable")
public Result> queryTheAnnualPlanDetailsTable(Page page,
String trainingLecturerName, String courseCode,
String trainingDate, String id, Integer userId,
Integer departId,
Integer state) {
Integer planId = 0;
if(ObjectUtils.isNull(id) || StringUtils.isEmpty(id)) {
planId = null;
} else {
planId = Integer.parseInt(id);
}
IPage iPage = personTrainingDetailedService.queryTheAnnualPlanDetailsTable(page,
trainingLecturerName, courseCode, trainingDate, planId, userId,departId,state);
return Result.success(iPage);
}
@ApiOperation(value = "年度计划明细表-结果明细-文件上传")
@PostMapping("/fileUpload")
public Result> fileUpload(@RequestParam MultipartFile file,@RequestParam Integer id) {
return Result.success(personTrainingDetailedService.fileUpload(file,id));
}
@ApiOperation(value = "查看所有部门")
@GetMapping("/selectDepartLims")
public Result> selectDepartLims() {
return Result.success(personTrainingDetailedService.selectDepartLims());
}
@ApiOperation(value = "培训与考核记录 查询")
@GetMapping("trainingAndAssessmentRecordsPage")
public Result> trainingAndAssessmentRecordsPage(Integer trainingDetailedId,
String userName) {
List list = personTrainingRecordService.trainingAndAssessmentRecordsPage(trainingDetailedId, userName);
return Result.success(list);
}
@ApiOperation(value = "培训与考核记录 新增人员")
@PostMapping("newPersonnelAddedToTrainingRecords")
public Result> newPersonnelAddedToTrainingRecords(@RequestBody List personTrainingRecord) {
personTrainingRecordService.saveBatch(personTrainingRecord);
return Result.success();
}
@ApiOperation(value = "培训与考核记录 认领")
@PostMapping("claimOfTrainingAndAssessmentRecords")
public Result> claimOfTrainingAndAssessmentRecords(@RequestBody Map map) {
Boolean claimAndClaim = (Boolean)map.get("claimAndClaim");
Integer courseId = (Integer)map.get("courseId");
personTrainingRecordService.claimOfTrainingAndAssessmentRecords(claimAndClaim, courseId);
return Result.success();
}
@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())
.set(PersonTrainingDetailed::getTrainingAbstract,personTrainingRecordSubmitDto.getTrainingAbstract()));
return Result.success();
}
@ApiOperation(value = "培训与考核记录 删除")
@DeleteMapping("deleteTrainingAndAssessmentRecords")
public Result> deleteTrainingAndAssessmentRecords(@RequestParam("ids") String ids) {
personTrainingRecordService.deleteTrainingAndAssessmentRecords(ids);
return Result.success();
}
@PostMapping("outOfFocusPreservation")
public Result> outOfFocusPreservation(@RequestBody PersonTrainingRecord personTrainingRecord) {
personTrainingRecordService.outOfFocusPreservation(personTrainingRecord);
return Result.success();
}
/**
* 导出人员培训计划
* @return
*/
@ApiOperation(value = "导出人员培训计划")
@GetMapping("/exportPersonTraining")
public void exportPersonTraining(Integer id, HttpServletResponse response){
personTrainingService.exportPersonTraining(id, response);
}
/**
* 导出人员培训与考核记录
* @return
*/
@ApiOperation(value = "导出人员培训与考核记录")
@GetMapping("/exportPersonTrainingRecord")
public void exportPersonTrainingRecord(Integer id, HttpServletResponse response){
personTrainingService.exportPersonTrainingRecord(id, response);
}
/**
* 年度计划明细表 附件查询
*/
@GetMapping("/getFileData")
@ApiOperation(value = "附件查询")
public Result> getFileData(Integer detailedId) {
return Result.success(personTrainingDetailedService.getFileData(detailedId));
}
/**
* 年度计划明细表 附件删除
*/
@DeleteMapping("/deleteFile")
@ApiOperation(value = "附件删除")
public Result> deleteFile(Integer id) {
personTrainingDetailedService.deleteFile(id);
return Result.success();
}
/**
* 附件下载
*/
@ApiOperation(value = "附件下载")
@GetMapping("/fileDownLoad")
public Result> fileDownLoad(Integer id,HttpServletResponse response) {
personTrainingDetailedService.fileDownLoad(id,response);
return Result.success();
}
}