package com.casic.missiles.controller; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.meter.*; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.MeterTrainLog; import com.casic.missiles.model.MeterTrainPlan; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.IMeterTrainLogService; import com.casic.missiles.service.IMeterTrainPlanService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.validation.Valid; import java.io.IOException; import java.util.List; import java.util.Objects; /** * @Description: 培训管理 * @Author: wangpeng * @Date: 2022/11/21 20:31 */ @Api(tags = "培训管理接口") @Controller @RequestMapping("/meter/train") public class MeterTrainController extends ExportController { @Autowired private IMeterTrainPlanService trainPlanService; @Autowired private IMeterTrainLogService trainLogService; @ApiOperation("培训计划列表(分页)") @PostMapping("/plan/listPage") @ResponseBody public ReturnDTO<PageInfoBT<MeterTrainPlan>> planListPage(@RequestBody TrainPlanListRequest request) { Page<MeterTrainPlan> page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(trainPlanService.listPage(page, request))); } @ApiOperation("培训计划列表") @PostMapping("/plan/list") @ResponseBody public ReturnDTO<List<MeterTrainPlan>> planList(@RequestBody TrainPlanListRequest request) { return ReturnUtil.success(trainPlanService.planList(request)); } @ApiOperation("培训计划导出") @PostMapping("/plan/listExport") @ResponseBody public void export(@RequestBody TrainPlanListRequest request) throws IOException { super.exportExcel(MeterTrainPlan.class, trainPlanService.planList(request), ExportEnum.TRAIN_PLAN_EXPORT.getSheetName()); } @ApiOperation("培训计划新建") @PostMapping("/plan/add") @ResponseBody public ReturnDTO planAdd(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } return trainPlanService.addTrainPlan(trainPlan); } @ApiOperation("培训计划更新") @PostMapping("/plan/update") @ResponseBody public ReturnDTO planUpdate(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { Assert.isFalse(Objects.isNull(trainPlan.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); Assert.isFalse(bindingResult.hasErrors(), () -> { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); }); return trainPlanService.updateTrainPlan(trainPlan); } @ApiOperation("培训计划删除") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return trainPlanService.deleteTrainPlan(idDTO.getId()); } @ApiOperation("培训计划批量删除") @PostMapping("/plan/batchDelete") @ResponseBody public ReturnDTO planBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return trainPlanService.deleteBatchTrainPlan(idsDTO.getIds()); } @ApiOperation("培训计划详情") @PostMapping("/plan/detail") @ResponseBody public ReturnDTO<TrainPlanDetailResponse> planDetail(@RequestBody @Valid IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return trainPlanService.trainPlanDetail(idDTO.getId()); } @ApiOperation("培训记录列表(分页)") @PostMapping("/log/listPage") @ResponseBody public ReturnDTO<PageInfoBT<MeterTrainLog>> logListPage(@RequestBody TrainLogListRequest request) { Page<MeterTrainLog> page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(trainLogService.listPage(page, request))); } @ApiOperation("培训计划列表") @PostMapping("/log/list") @ResponseBody public ReturnDTO<List<MeterTrainLog>> logList(@RequestBody TrainLogListRequest request) { return ReturnUtil.success(trainLogService.logList(request)); } @ApiOperation("培训计划导出") @PostMapping("/log/listExport") @ResponseBody public void export(@RequestBody TrainLogListRequest request) throws IOException { super.exportExcel(MeterTrainLog.class, trainLogService.logList(request), ExportEnum.TRAIN_LOG_EXPORT.getSheetName()); } @ApiOperation("培训记录新建") @PostMapping("/log/add") @ResponseBody public ReturnDTO logAdd(@RequestBody TrainLogAddRequest request) { Assert.isFalse(Objects.isNull(request.getPlanId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); Assert.isFalse(CollectionUtils.isEmpty(request.getTrainStaffList()), () -> { throw new BusinessException(BusinessExceptionEnum.TRAIN_STAFF_NULL); }); return trainLogService.addTrainLog(request); } @ApiOperation("培训记录更新") @PostMapping("/log/update") @ResponseBody public ReturnDTO logUpdate(@RequestBody TrainLogUpdateRequest request) { Assert.isFalse(Objects.isNull(request.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); Assert.isFalse(CollectionUtils.isEmpty(request.getTrainStaffList()), () -> { throw new BusinessException(BusinessExceptionEnum.TRAIN_STAFF_NULL); }); return trainLogService.updateTrainLog(request); } @ApiOperation("培训记录详情") @PostMapping("/log/detail") @ResponseBody public ReturnDTO<TrainLogDetailResponse> logDetail(@RequestBody @Valid IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return trainLogService.trainLogDetail(idDTO.getId()); } /** * 计量人员列表(可根据培训计划查询) * 培训记录中学员从培训计划中人员中选择 */ /** * 培训计划审批 */ }