package com.ruoyi.web.controller.bussiness; import com.alibaba.excel.EasyExcelFactory; import com.alibaba.excel.write.builder.ExcelWriterBuilder; import com.ruoyi.bussiness.domain.Placement; import com.ruoyi.bussiness.domain.PlacementBatchHousehold; import com.ruoyi.bussiness.object.request.placement.PlacementIdRequest; import com.ruoyi.bussiness.object.request.placement.PlacementImportRequest; import com.ruoyi.bussiness.object.request.placement.PlacementPageRequest; import com.ruoyi.bussiness.object.response.placement.GetHouseHistoryRequest; import com.ruoyi.bussiness.object.response.placement.PlacementPageResponse; import com.ruoyi.bussiness.service.PlacementBatchHouseholdService; import com.ruoyi.bussiness.service.PlacementService; 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 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") public class PlacementController { @Autowired private PlacementService placementService; @Autowired private ISysDictTypeService dictTypeService; @ApiOperation(value = "列表", notes = "列表") @PostMapping(value = "/page") public BaseResult page(@RequestBody PlacementPageRequest request) { PlacementPageResponse response = placementService.page(request); return ResponseUtils.successResponse(response); } @ApiOperation(value = "查询安置购房信息", notes = "查询安置购房信息") @PostMapping(value = "/get-house-history") public BaseResult> getHouseHistory(@RequestBody GetHouseHistoryRequest request){ // List households = placementBatchHouseholdService.getHouseHistory(request); // return ResponseUtils.successResponse(households); return ResponseUtils.successResponse(null); } @RepeatSubmit @ApiOperation(value = "新增", notes = "新增") @PostMapping(value = "/add") public BaseResult add(@RequestBody Placement placement) { placementService.add(placement); return ResponseUtils.successResponse(); } @ApiOperation(value = "编辑", notes = "编辑") @PostMapping(value = "/edit") public BaseResult edit(@RequestBody Placement placement) { placementService.update(placement); return ResponseUtils.successResponse(); } @ApiOperation(value = "详情", notes = "详情") @PostMapping(value = "/detail") public BaseResult detail(@RequestBody PlacementIdRequest request) { Placement placement = placementService.detail(request); return ResponseUtils.successResponse(placement); } @ApiOperation(value = "删除", notes = "删除") @PostMapping(value = "/del") public BaseResult del(@RequestBody PlacementIdRequest request) { placementService.del(request); return ResponseUtils.successResponse(); } @ApiOperation(value = "下载模版", notes = "下载模版") @PostMapping(value = "/download-template") public void downloadTemplate(HttpServletResponse response) throws IOException { try { //街道 List street = dictTypeService.selectDictDataByType("street"); List relation = dictTypeService.selectDictDataByType("relation"); TemplateFileTypeEnum pathByFileType = TemplateFileTypeEnum.getEnumByFileType(1); Method generateExampleDataMethod = pathByFileType.getClazz().getMethod("generateExampleData"); Method generateHeaderDataMethod = pathByFileType.getClazz().getMethod("generateHeaderData",List.class,List.class); Object exampleData = generateExampleDataMethod.invoke(null); Object headerData = generateHeaderDataMethod.invoke(null,street,relation); 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("导出模版失败"); } } @ApiOperation(value = "导入", notes = "导入") @PostMapping(value = "/imports") public BaseResult imports(PlacementImportRequest request) { placementService.imports(request); return ResponseUtils.successResponse(); } }