package com.qmth.distributed.print.api;
import com.qmth.boot.api.constant.ApiConstant;
import com.qmth.distributed.print.business.bean.dto.TCStatisticsDto;
import com.qmth.distributed.print.business.bean.result.EditResult;
import com.qmth.distributed.print.business.enums.StatisticsStatusEnum;
import com.qmth.distributed.print.business.service.PrintCommonService;
import com.qmth.distributed.print.business.service.TCStatisticsService;
import com.qmth.distributed.print.business.templete.execute.AsyncStatisticsDataImportService;
import com.qmth.teachcloud.common.annotation.OperationLogDetail;
import com.qmth.teachcloud.common.bean.params.ArraysParams;
import com.qmth.teachcloud.common.contant.SystemConstant;
import com.qmth.teachcloud.common.entity.SysUser;
import com.qmth.teachcloud.common.entity.TBTask;
import com.qmth.teachcloud.common.enums.TaskTypeEnum;
import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
import com.qmth.teachcloud.common.util.Result;
import com.qmth.teachcloud.common.util.ResultUtil;
import com.qmth.teachcloud.common.util.ServletUtil;
import io.swagger.annotations.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.util.Arrays;
import java.util.Map;
import java.util.Objects;
/**
*
* 命题统计表 前端控制器
*
*
* @author wangliang
* @since 2021-09-09
*/
@Api(tags = "命题统计Controller")
@RestController
@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_STATISTICS)
@Validated
//@Aac(auth = BOOL.FALSE, strict = BOOL.FALSE)
public class TCStatisticsController {
private final static Logger log = LoggerFactory.getLogger(TCStatisticsController.class);
@Resource
TCStatisticsService tcStatisticsService;
@Resource
PrintCommonService printCommonService;
@Resource
AsyncStatisticsDataImportService asyncStatisticsDataImportService;
@ApiOperation(value = "命题计划统计-导入")
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
@RequestMapping(value = "/import", method = RequestMethod.POST)
@OperationLogDetail(operationType = OperationTypeEnum.IMPORT)
public Result dataImport(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
@ApiParam(value = "考试id", required = true) @RequestParam String examId) throws Exception {
Map map = printCommonService.saveTask(file, TaskTypeEnum.STATISTICS_IMPORT);
map.put("examId",examId);
asyncStatisticsDataImportService.importTask(map);
TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
}
@ApiOperation(value = "命题计划统计-列表")
@ApiResponses({@ApiResponse(code = 200, message = "命题统计信息", response = TCStatisticsDto.class)})
@RequestMapping(value = "/list", method = RequestMethod.POST)
public Result list(@ApiParam(value = "学期id") @RequestParam(required = false) String semesterId,
@ApiParam(value = "考试id") @RequestParam(required = false) String examId,
@ApiParam(value = "学院id") @RequestParam(required = false) String collegeId,
@ApiParam(value = "部门id") @RequestParam(required = false) String teachingRoomId,
@ApiParam(value = "完成状态") @RequestParam(required = false) StatisticsStatusEnum status,
@ApiParam(value = "课程名称") @RequestParam(required = false) String courseName,
@ApiParam(value = "任课老师名称") @RequestParam(required = false) String teacherName,
@ApiParam(value = "页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
@ApiParam(value = "数量", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
return ResultUtil.ok(tcStatisticsService.findExamTaskPrintStatistic(SystemConstant.convertIdToLong(semesterId), SystemConstant.convertIdToLong(examId), SystemConstant.convertIdToLong(collegeId), SystemConstant.convertIdToLong(teachingRoomId), status, courseName, teacherName, sysUser.getSchoolId(), sysUser.getId(),pageNumber,pageSize));
}
@ApiOperation(value = "命题计划统计-刷新数据")
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
@RequestMapping(value = "/freshen", method = RequestMethod.POST)
@OperationLogDetail(operationType = OperationTypeEnum.OTHER)
public Result freshen(@ApiParam(value = "考试id", required = true) @RequestParam String examId) {
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
tcStatisticsService.refreshTCStatisticByExamIdAndRequestUser(SystemConstant.convertIdToLong(examId),sysUser);
return ResultUtil.ok();
}
@ApiOperation(value = "命题计划统计-删除数据")
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
@RequestMapping(value = "/delete", method = RequestMethod.POST)
@OperationLogDetail(operationType = OperationTypeEnum.DELETE)
public Result delete(@Valid @RequestBody ArraysParams arraysParams, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
}
return ResultUtil.ok(tcStatisticsService.deleteData(Arrays.asList(arraysParams.getIds())));
}
}