package com.yiboshi.science.rest.v1; import com.yiboshi.arch.base.ResponseDataModel; import com.yiboshi.science.base.Pagination; import com.yiboshi.science.config.annotation.Logs; import com.yiboshi.science.config.bean.SystemProperties; import com.yiboshi.science.config.security.SecurityUserHolder; import com.yiboshi.science.entity.ComProjectAudit; import com.yiboshi.science.entity.ComProjectConclusion; import com.yiboshi.science.enumeration.CommonEnum; import com.yiboshi.science.param.dto.ComProjectConclusionDTO; import com.yiboshi.science.param.dto.ComUnitDTO; import com.yiboshi.science.param.dto.DataStatisticsDTO; import com.yiboshi.science.param.query.ComProjectConclusionQueryVO; import com.yiboshi.science.rest.BaseController; import com.yiboshi.science.service.ComProjectConclusionService; import com.yiboshi.science.service.ComUnitService; import com.yiboshi.science.utils.StringUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.io.IOException; /** * 功能:结题信息表 接口 * @author lkl * @version 2021-08-26 */ @Api(tags = "com-project-conclusion",description = "结题信息表") @RestController @RequestMapping("/v1/science-admin/com-project-conclusion") public class ComProjectConclusionController extends BaseController<ComProjectConclusionService, ComProjectConclusionQueryVO, ComProjectConclusionDTO, ComProjectConclusion> { @Autowired private ComProjectConclusionService comProjectConclusionService; @Autowired private ComUnitService comUnitService; private final SystemProperties properties; public ComProjectConclusionController(SystemProperties properties) { this.properties = properties; } /** * 功能:分页查询 * * @param vo 查询条件 */ @ApiOperation(value = "分页查询", httpMethod = "GET", notes = "根据参数获取列表") @GetMapping @RequestMapping("/getListByPage") @PreAuthorize("hasAnyRole(\"REPORT\",\"ADMIN\")") public ResponseDataModel<Pagination<ComProjectConclusionDTO>> getListByPage(@Validated ComProjectConclusionQueryVO vo, BindingResult bindingResult) { if (!StringUtil.isContainsRole(SecurityUserHolder.getRoles(), CommonEnum.systemRole.sys.getCode().toString())) { vo.setAppPersonId(SecurityUserHolder.getPersonId()); } return getPaginationResponseDataModel(vo); } /** * 获取统计数据 */ @ApiOperation(value = "获取统计数据", httpMethod = "GET", notes = "获取统计数据") @GetMapping @RequestMapping("/getCount") public ResponseDataModel<DataStatisticsDTO> getCount(@Validated ComProjectConclusionDTO vo) { vo.setAppPersonId(SecurityUserHolder.getPersonId()); return ResponseDataModel.ok(comProjectConclusionService.getCount(vo)); } /** * 功能:分页查询 * * @param vo 查询条件 */ @ApiOperation(value = "分页查询", httpMethod = "GET", notes = "根据参数获取列表") @GetMapping @RequestMapping("/getAuditListByPage") @PreAuthorize("hasAnyRole(\"GOV\")") public ResponseDataModel<Pagination<ComProjectConclusionDTO>> getAuditListByPage(@Validated ComProjectConclusionQueryVO vo, BindingResult bindingResult) { return getPaginationResponseDataModel(vo); } private ResponseDataModel<Pagination<ComProjectConclusionDTO>> getPaginationResponseDataModel(@Validated ComProjectConclusionQueryVO vo) { Pagination<ComProjectConclusionDTO> page = comProjectConclusionService.getListByPage(vo); if (null != page && null != page.getDataList() && page.getDataList().size() != 0) { page.getDataList().forEach((e) -> { if (null != e.getProjState()) e.setStateName(CommonEnum.conclusionState.getEnum(e.getState()).getDescription()); }); } return ResponseDataModel.ok(page); } /** * 根据id获取结题信息 * * @param id 查询条件 */ @ApiOperation(value = "根据id获取结题信息", httpMethod = "GET", notes = "根据id获取结题信息") @GetMapping @RequestMapping("/getConclusionByProjId") public ResponseDataModel<ComProjectConclusionDTO> getConclusionByProjId(@Validated String id) { return ResponseDataModel.ok(comProjectConclusionService.getByProjId(id)); } /** * 保存项目结题信息 * * @param comProjectConclusionDTO */ @ApiOperation(value = "保存项目结题信息", httpMethod = "POST", notes = "保存项目结题信息") @PostMapping @RequestMapping("/save") @Logs(value = CommonEnum.logType.conclusionSave) public ResponseDataModel<String> save(@Validated @RequestBody ComProjectConclusionDTO comProjectConclusionDTO, BindingResult bindingResult) { return ResponseDataModel.ok(comProjectConclusionService.save(comProjectConclusionDTO)); } /** * 上传论文 * * @param comProjectConclusionDTO */ @ApiOperation(value = "上传论文", httpMethod = "POST", notes = "上传论文") @PostMapping @RequestMapping("/saveThesis") @Logs(value = CommonEnum.logType.conclusionSave) public ResponseDataModel<String> saveThesis(@Validated @RequestBody ComProjectConclusionDTO comProjectConclusionDTO, BindingResult bindingResult) { return ResponseDataModel.ok(comProjectConclusionService.saveThesis(comProjectConclusionDTO,"ef2123fc-e7c0-4521-be59-244f9052253b")); } /** * 项目结题上报 * * @param */ @ApiOperation(value = "项目结题", httpMethod = "PUT", notes = "项目结题") @PostMapping @RequestMapping("/report") @Logs(value = CommonEnum.logType.conclusionReport) public ResponseDataModel<String> report(@Validated @RequestBody ComProjectConclusion e) { String treeCode = SecurityUserHolder.getUnitCode(); // 获取上级单位 treeCode = treeCode.substring(0, properties.getDefaultCodeLength()); ComUnitDTO unit = comUnitService.getByTreeCode(treeCode); return ResponseDataModel.ok(comProjectConclusionService.report(e.getProjId(),unit.getId(),treeCode)); } @ApiOperation(value = "论文审核", httpMethod = "POST", notes = "论文审核") @PostMapping @RequestMapping("/thesisAudit") @Logs(value = CommonEnum.logType.thesisAudit) public ResponseDataModel<String> thesisAudit(@Validated @RequestBody ComProjectAudit comProjectAudit, BindingResult bindingResult) { comProjectConclusionService.thesisAudit(comProjectAudit); return ResponseDataModel.ok("审核成功"); } @ApiOperation(value = "结题", httpMethod = "POST", notes = "结题") @RequestMapping(value = "createConclusionRecord/{id}") @PostMapping public ResponseDataModel<String> createConclusionRecord(@PathVariable String id){ comProjectConclusionService.createConclusionRecord(id,"ef2123fc-e7c0-4521-be59-244f9052253b"); return ResponseDataModel.ok("提交成功"); } @RequestMapping("/getPdfById") @GetMapping public void getPdfById(@Validated String id)throws IOException{ comProjectConclusionService.exportPdfById(response,id); } }