package com.ruoyi.web.controller.bussiness; import com.alibaba.excel.EasyExcelFactory; import com.alibaba.excel.write.builder.ExcelWriterBuilder; import com.ruoyi.bussiness.domain.PlacementApplyRecord; import com.ruoyi.bussiness.object.request.placementApply.*; import com.ruoyi.bussiness.object.response.placementApply.PlacementApplyPageResponse; import com.ruoyi.bussiness.object.response.placementApply.PlacementApplyRecordIdRequest; import com.ruoyi.bussiness.object.response.placementApply.PlacementApplyRecordPageResponse; import com.ruoyi.bussiness.service.PlacementApplyService; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.domain.BaseResult; import com.ruoyi.common.core.domain.ResponseUtils; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.easyExcel.MultiDropdownWriteHandler; import com.ruoyi.common.exception.GlobalException; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.system.service.ISysDictTypeService; import com.ruoyi.bussiness.enums.TemplateFileTypeEnum; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; 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.RestController; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.lang.reflect.Method; import java.util.Collections; import java.util.List; import java.util.Objects; @Validated @Api(value = "自主购房安置申请批次表",tags = "自主购房安置申请批次表") @RestController @RequestMapping(value = "/placement-apply") public class PlacementApplyController { @Autowired private PlacementApplyService placementApplyService; @Autowired private ISysDictTypeService dictTypeService; @ApiOperation(value = "自主购房安置申请批次表-列表", notes = "自主购房安置申请批次表-列表") @PostMapping(value = "/page") public BaseResult page(@RequestBody PlacementApplyPageRequest request) { PlacementApplyPageResponse response = placementApplyService.page(request); return ResponseUtils.successResponse(response); } @ApiOperation(value = "自主购房安置申请批次表-详情", notes = "自主购房安置申请批次表-详情") @PostMapping(value = "/detail") public BaseResult detail(@Valid @RequestBody PlacementApplyRecordPageRequest request) { PlacementApplyRecordPageResponse response = placementApplyService.detail(request); return ResponseUtils.successResponse(response); } @ApiOperation(value = "自主购房安置申请批次表-删除", notes = "自主购房安置申请批次表-删除") @PostMapping(value = "/del") public BaseResult del(@RequestBody PlacementApplyIdRequest request) { placementApplyService.del(request); return ResponseUtils.successResponse(); } @RepeatSubmit @ApiOperation(value = "数据审核", notes = "数据审核") @PostMapping(value = "/data-approve") public BaseResult dataApprove(@RequestBody PlacementApplyIdRequest request){ placementApplyService.dataApprove(request); return ResponseUtils.successResponse(); } @RepeatSubmit @ApiOperation(value = "数据核对", notes = "数据核对") @PostMapping(value = "/record-check") public BaseResult recordCheck(@Valid @RequestBody PlacementApplyRecordIdRequest request){ placementApplyService.recordCheck(request); return ResponseUtils.successResponse(); } @RepeatSubmit @ApiOperation(value = "自主购房安置申请批次表-审核", notes = "自主购房安置申请批次表-审核") @PostMapping(value = "/approve") public BaseResult approve(@Valid @RequestBody PlacementApplyApproveRequest request) { placementApplyService.approve(request); return ResponseUtils.successResponse(); } @ApiOperation(value = "下载自主购房申请批次表模版", notes = "下载自主购房申请批次表模版") @PostMapping(value = "/download-template") public void downloadTemplate(HttpServletResponse response) throws IOException { try { //街道 List street = dictTypeService.selectDictDataByType("street"); TemplateFileTypeEnum pathByFileType = TemplateFileTypeEnum.getEnumByFileType(2); Method generateExampleDataMethod = pathByFileType.getClazz().getMethod("generateExampleData"); Method generateHeaderDataMethod = pathByFileType.getClazz().getMethod("generateHeaderData", List.class); Object exampleData = generateExampleDataMethod.invoke(null); Object headerData = generateHeaderDataMethod.invoke(null, street); FileUtils.setExcelResponseHeader(response, pathByFileType.getFileName()); ExcelWriterBuilder write = EasyExcelFactory.write(response.getOutputStream(), pathByFileType.getClazz()); if (Objects.nonNull(headerData)) { write.registerWriteHandler((MultiDropdownWriteHandler) headerData); } write.sheet("sheet") .doWrite(Collections.singletonList(exampleData)); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); } catch (Exception e) { throw new GlobalException("导出模版失败"); } } /** * 1.最外面的导入:没有申请表id的情况,需要汇总数据到申请汇总表,需要新建申请表 * 2.详情里面的导入:有申请表id的情况,直接追加数据到现有的申请表 * @return */ @ApiOperation(value = "导入自主购房申请批次表", notes = "导入自主购房申请批次表") @PostMapping(value = "/imports") public BaseResult imports(PlacementImportsRequest request) throws IOException { placementApplyService.imports(request); return ResponseUtils.successResponse(); } @ApiOperation(value = "自主购房申请批次表-记录添加") @PostMapping(value = "/record-add") public BaseResult recordAdd(@RequestBody PlacementApplyRecord placementApplyRecord){ placementApplyService.recordAdd(placementApplyRecord); return ResponseUtils.successResponse(); } @ApiOperation(value = "自主购房申请批次表-记录编辑") @PostMapping(value = "/record-detail") public BaseResult recordDetail(@Valid @RequestBody PlacementApplyIdRequest placementApplyRecord) { PlacementApplyRecord record = placementApplyService.recordDetail(placementApplyRecord); return ResponseUtils.successResponse(record); } @ApiOperation(value = "自主购房申请批次表-记录删除") @PostMapping(value = "/record-del") public BaseResult recordDel(@RequestBody PlacementApplyRecordIdRequest request){ placementApplyService.recordDel(request); return ResponseUtils.successResponse(); } @ApiOperation(value = "自主购房申请批次表-记录编辑") @PostMapping(value = "/record-edit") public BaseResult recordEdit(@RequestBody PlacementApplyRecord placementApplyRecord){ placementApplyService.recordEdit(placementApplyRecord); return ResponseUtils.successResponse(); } @ApiOperation(value = "自主购房申请批次表-问题数据导出") @PostMapping(value = "/problem-export") public void problemExport(@RequestBody ApplyProblemExportRequest request, HttpServletResponse response) throws IOException { placementApplyService.problemExport(request,response); } @ApiOperation(value = "自主购房申请批次表-全部数据导出") @PostMapping(value = "/exports") public void exports(@RequestBody ApplyAllExportRequest request, HttpServletResponse response) throws IOException { placementApplyService.allExport(request,response); } }