|
|
@ -58,6 +58,7 @@ import javax.servlet.http.HttpServletResponse; |
|
|
|
import java.io.IOException; |
|
|
|
import java.io.InputStream; |
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.ExecutorService; |
|
|
|
import java.util.function.Function; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
@ -95,6 +96,8 @@ public class BuildingServiceImpl implements BuildingService { |
|
|
|
private IcNeighborHoodService neighborHoodService; |
|
|
|
@Autowired |
|
|
|
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; |
|
|
|
@Autowired |
|
|
|
private ExecutorService executorService; |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@ -403,33 +406,34 @@ public class BuildingServiceImpl implements BuildingService { |
|
|
|
* @date 2022/2/13 10:15 上午 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
@Async |
|
|
|
public Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file,Result<ImportTaskCommonResultDTO> importTask) throws IOException { |
|
|
|
ExcelReader excelReader = null; |
|
|
|
try { |
|
|
|
InputStream inputStream = null; |
|
|
|
executorService.submit(() -> { |
|
|
|
ExcelReader excelReader = null; |
|
|
|
try { |
|
|
|
inputStream = file.getInputStream(); |
|
|
|
} catch (IOException e) { |
|
|
|
return new Result<String>().error("读取文件失败"); |
|
|
|
} |
|
|
|
excelReader = EasyExcel.read(inputStream).build(); |
|
|
|
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
|
|
|
|
ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) |
|
|
|
.registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) |
|
|
|
.build(); |
|
|
|
excelReader.read(readSheet); |
|
|
|
} catch (Exception e){ |
|
|
|
ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); |
|
|
|
input.setOperatorId(formDTO.getUserId()); |
|
|
|
input.setTaskId(importTask.getData().getTaskId()); |
|
|
|
input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); |
|
|
|
epmetCommonServiceOpenFeignClient.finishImportTask(input); |
|
|
|
} finally { |
|
|
|
if (excelReader != null) { |
|
|
|
excelReader.finish(); |
|
|
|
InputStream inputStream = null; |
|
|
|
try { |
|
|
|
inputStream = file.getInputStream(); |
|
|
|
} catch (IOException e) { |
|
|
|
log.error("读取文件失败"); |
|
|
|
} |
|
|
|
excelReader = EasyExcel.read(inputStream).build(); |
|
|
|
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
|
|
|
|
ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) |
|
|
|
.registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService,epmetCommonServiceOpenFeignClient,importTask.getData().getTaskId())) |
|
|
|
.build(); |
|
|
|
excelReader.read(readSheet); |
|
|
|
} catch (Exception e){ |
|
|
|
ImportTaskCommonFormDTO input = new ImportTaskCommonFormDTO(); |
|
|
|
input.setOperatorId(formDTO.getUserId()); |
|
|
|
input.setTaskId(importTask.getData().getTaskId()); |
|
|
|
input.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); |
|
|
|
epmetCommonServiceOpenFeignClient.finishImportTask(input); |
|
|
|
} finally { |
|
|
|
if (excelReader != null) { |
|
|
|
excelReader.finish(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
return new Result<>(); |
|
|
|
} |
|
|
|
|
|
|
|