package com.yiboshi.science.rest.v1; import com.yiboshi.arch.base.ResponseDataModel; import com.yiboshi.arch.exception.BusinessException; 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.ComUnit; import com.yiboshi.science.enumeration.CommonEnum; import com.yiboshi.science.param.dto.*; import com.yiboshi.science.param.query.ComProjectAuditQueryVO; import com.yiboshi.science.rest.BaseController; import com.yiboshi.science.service.ComProjectAssignService; import com.yiboshi.science.service.ComProjectAuditService; import com.yiboshi.science.service.ComUnitService; 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.util.Objects; /** * 功能:审核表 接口 * * @author lkl * @version 2021-08-26 */ @Api(tags = "com-project-report", description = "上报表") @RestController @RequestMapping("/v1/science-admin/com_project_audit") public class ComProjectAuditController extends BaseController<ComProjectAuditService, ComProjectAuditQueryVO, ComProjectAuditDTO, ComProjectAudit> { @Autowired private ComProjectAuditService comProjectAuditService; @Autowired private ComProjectAssignService comProjectAssignService; private final SystemProperties properties; @Autowired private ComUnitService comUnitService; public ComProjectAuditController(SystemProperties properties) { this.properties = properties; } /** * 功能:分页查询 * * @param vo 查询条件 */ @ApiOperation(value = "分页查询", httpMethod = "GET", notes = "根据参数获取列表") @GetMapping @RequestMapping(value = "/getListByPage") @PreAuthorize("hasAnyRole('ADMIN')") public ResponseDataModel<Pagination<ComProjectAuditDTO>> getListByPage(@Validated ComProjectAuditQueryVO vo, BindingResult bindingResult) { Pagination<ComProjectAuditDTO> page = comProjectAuditService.getListByPage(vo); if (null != page && null != page.getDataList() && page.getDataList().size() != 0) { page.getDataList().forEach((e) -> { if (Objects.nonNull(e.getAuditType())) e.setAuditTypeName(CommonEnum.auditType.getEnum(e.getAuditType()).getDescription()); if (Objects.nonNull(e.getAuditMethod())) e.setAuditMethodName(CommonEnum.auditMethod.getEnum(e.getAuditMethod()).getDescription()); if (Objects.nonNull(e.getAuditResult())) e.setAuditResultName(CommonEnum.auditResult.getEnum(e.getAuditResult()).getDescription()); }); } return ResponseDataModel.ok(page); } /** * 修改/添加评审记录 * * @param comProjectAuditDTO */ @ApiOperation(value = "修改/添加评审记录", httpMethod = "POST", notes = "修改/添加评审记录") @PostMapping @RequestMapping("/save") @PreAuthorize("hasAnyRole('ADMIN')") @Logs(value = CommonEnum.logType.auditRecordSave) public ResponseDataModel<String> save(@RequestBody ComProjectAuditDTO comProjectAuditDTO, BindingResult bindingResult) { if (Objects.nonNull(comProjectAuditDTO.getAuditUnitId())) { ComUnit unit = comUnitService.getById(comProjectAuditDTO.getAuditUnitId()); if (null == unit) throw new BusinessException("审核单位不存在!"); comProjectAuditDTO.setUnitLevel(unit.getTreeCode().length() / properties.getDefaultCodeLength()); }else throw new BusinessException("审核单位不存在!"); return ResponseDataModel.ok(comProjectAuditService.save(comProjectAuditDTO)); } /** * 删除评审记录 * * @param id * @return */ @ApiOperation(value = "删除评审记录", httpMethod = "DELETE", notes = "删除评审记录") @DeleteMapping @RequestMapping(value = "deleteRecord/{id}") @Logs(value = CommonEnum.logType.auditRecordDelete) public ResponseDataModel<String> deleteRecord(@PathVariable String id) { return ResponseDataModel.ok(comProjectAuditService.deleteRecord(id)); } /** * 功能:分页查询 * * @param vo 查询条件 */ @ApiOperation(value = "1.03 分页查询", httpMethod = "GET", notes = "1.02 根据参数获取列表") @GetMapping @RequestMapping("/getAuditListByPage") @PreAuthorize("hasAnyRole('UNIT','GOV')") public ResponseDataModel<Pagination<ComProjectAuditDTO>> getAuditListByPage(@Validated ComProjectAuditQueryVO vo, BindingResult bindingResult) { vo.setAuditUnitId(SecurityUserHolder.getUnitId()); vo.setAuditMethod(CommonEnum.auditMethod.audit.getCode()); return getPaginationResponseDataModel(vo); } @ApiOperation(value = "1.03 分页查询", httpMethod = "GET", notes = "1.02 根据参数获取列表") @GetMapping @RequestMapping("/getFinalAuditListByPage") @PreAuthorize("hasAnyRole('UNIT','GOV')") public ResponseDataModel<Pagination<ComProjectAuditDTO>> getFinalAuditListByPage(@Validated ComProjectAuditQueryVO vo, BindingResult bindingResult) { vo.setAuditUnitId(SecurityUserHolder.getUnitId()); vo.setAuditMethod(CommonEnum.auditMethod.last.getCode()); vo.setCompleted(1); return getPaginationResponseDataModel(vo); } private ResponseDataModel<Pagination<ComProjectAuditDTO>> getPaginationResponseDataModel(@Validated ComProjectAuditQueryVO vo) { Pagination<ComProjectAuditDTO> page = comProjectAuditService.getAuditListByPage(vo); if (null != page && null != page.getDataList() && page.getDataList().size() != 0) { page.getDataList().forEach((e) -> { if (null != e.getAuditResult()) e.setAuditResultName(CommonEnum.auditResult.getEnum(e.getAuditResult()).getDescription()); if(vo.getAuditMethod().equals(CommonEnum.auditMethod.last.getCode())){ e.setAssignList(comProjectAssignService.getAssignExpertList(e.getAuditObjectId())); } }); } return ResponseDataModel.ok(page); } /** * 获取统计数据 */ @ApiOperation(value = "获取统计数据", httpMethod = "GET", notes = "获取统计数据") @GetMapping @RequestMapping("/getCount") @PreAuthorize("hasAnyRole('UNIT','GOV')") public ResponseDataModel<DataStatisticsDTO> getCount(ComProjectAuditQueryVO vo) { vo.setAuditUnitId(SecurityUserHolder.getUnitId()); vo.setAuditMethod(CommonEnum.auditMethod.audit.getCode()); return ResponseDataModel.ok(comProjectAuditService.getCount(vo)); } /** * 获取统计数据 */ @ApiOperation(value = "获取统计数据", httpMethod = "GET", notes = "获取统计数据") @GetMapping @RequestMapping("/getConclusionAuditCount") @PreAuthorize("hasAnyRole('UNIT','GOV')") public ResponseDataModel<DataStatisticsDTO> getConclusionAuditCount(ComProjectAuditQueryVO vo) { vo.setAuditUnitId(SecurityUserHolder.getUnitId()); vo.setAuditMethod(CommonEnum.auditMethod.audit.getCode()); return ResponseDataModel.ok(comProjectAuditService.getConclusionAuditCount(vo)); } /** * 获取统计数据 */ @ApiOperation(value = "获取统计数据", httpMethod = "GET", notes = "获取统计数据") @GetMapping @RequestMapping("/getFinalCount") @PreAuthorize("hasAnyRole('UNIT','GOV')") public ResponseDataModel<DataStatisticsDTO> getFinalCount(ComProjectAuditQueryVO vo) { vo.setAuditUnitId(SecurityUserHolder.getUnitId()); vo.setAuditMethod(CommonEnum.auditMethod.last.getCode()); vo.setCompleted(1); return ResponseDataModel.ok(comProjectAuditService.getCount(vo)); } /** * 功能:分页查询 * * @param vo 查询条件 */ @ApiOperation(value = "1.03 分页查询", httpMethod = "GET", notes = "1.02 根据参数获取列表") @GetMapping @RequestMapping("/getStatisticListByPage") @PreAuthorize("hasAnyRole('UNIT','GOV')") public ResponseDataModel<Pagination<ComProjectAuditDTO>> getStatisticListByPage(@Validated ComProjectAuditQueryVO vo, BindingResult bindingResult) { vo.setAuditUnitId(SecurityUserHolder.getUnitId()); vo.setAuditMethod(CommonEnum.auditMethod.audit.getCode()); Pagination<ComProjectAuditDTO> page = comProjectAuditService.getStatisticListByPage(vo); if (null != page && null != page.getDataList() && page.getDataList().size() != 0) { page.getDataList().forEach((e) -> { if (null != e.getAuditResult()) e.setAuditResultName(CommonEnum.auditResult.getEnum(e.getAuditResult()).getDescription()); if (null != e.getProjState()) e.setProjStateName(CommonEnum.projState.getEnum(e.getProjState()).getDescription()); }); } return ResponseDataModel.ok(page); } @ApiOperation(value = "项目分配列表", httpMethod = "GET", notes = "项目分配列表") @GetMapping @RequestMapping("/getAssignProjectListByPage") public ResponseDataModel<Pagination<ComProjectAuditDTO>> getAssignProjectListByPage(@Validated ComProjectAuditQueryVO vo, BindingResult bindingResult) { vo.setAuditUnitId(SecurityUserHolder.getUnitId()); vo.setProjType(SecurityUserHolder.projectType()); vo.setAuditType(1); vo.setAuditMethod(CommonEnum.auditMethod.last.getCode()); return ResponseDataModel.ok(comProjectAuditService.getAuditListByPage(vo)); } @ApiOperation(value = "获取未分配的项目列表", httpMethod = "GET", notes = "获取未分配的项目列表") @GetMapping @RequestMapping("/getUnAssignProjectListByPage") public ResponseDataModel<Pagination<ComProjectAuditDTO>> getUnAssignProjectListByPage(@Validated ComProjectAuditQueryVO vo, BindingResult bindingResult) { vo.setAuditUnitId(SecurityUserHolder.getUnitId()); vo.setKnowledgeId(null); //vo.setProjType(SecurityUserHolder.projectType()); vo.setAuditType(1); vo.setAuditMethod(CommonEnum.auditMethod.last.getCode()); return ResponseDataModel.ok(comProjectAuditService.getUnAssignProjectListByPage(vo)); } }