From d58c1dba3578014bffdb0c1465a5b78c278836a0 Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Wed, 8 Jan 2025 11:41:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=90=8C=E6=AD=A5=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=B9=B6=E5=8F=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SyncBasicDataController.java | 73 ++++++++++++++----- 1 file changed, 56 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/docus/demo/controller/SyncBasicDataController.java b/src/main/java/com/docus/demo/controller/SyncBasicDataController.java index 0accff6..12dda3c 100644 --- a/src/main/java/com/docus/demo/controller/SyncBasicDataController.java +++ b/src/main/java/com/docus/demo/controller/SyncBasicDataController.java @@ -1,6 +1,7 @@ package com.docus.demo.controller; +import com.alibaba.fastjson.JSON; import com.docus.demo.dto.SyncBasicDataDto; import com.docus.demo.dto.SyncFileDto; import com.docus.demo.dto.UploadJpgFileParam; @@ -19,6 +20,7 @@ import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; import java.util.Collections; import java.util.List; +import java.util.concurrent.ConcurrentHashMap; @Api(value = "数据同步接口", tags = "数据同步接口") @RestController("/sync") @@ -32,6 +34,8 @@ public class SyncBasicDataController { @Autowired private IWebService webService; + private static final ConcurrentHashMap SYNC_BASIC_DATA_BLOCK_MAP = new ConcurrentHashMap<>(); + @ApiOperation("去除文件不存在的数据") @PostMapping("/deleteSync") @@ -43,34 +47,68 @@ public class SyncBasicDataController { @ApiOperation("省厅-同步基础数据") @PostMapping("/syncBasicData") public CommonResult syncBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto){ - return syncBasicDataService.syncBasicData(syncBasicDataDto); + if(syncBasicDataDto == null){ + return CommonResult.failed("无效的请求参数!"); + } + String blockKey="syncBasicData:"+ JSON.toJSONString(syncBasicDataDto); + if (SYNC_BASIC_DATA_BLOCK_MAP.putIfAbsent(blockKey, 0) != null) { + return CommonResult.failed("有正在同步的任务!"); + } + try { + return syncBasicDataService.syncBasicData(syncBasicDataDto); + }catch (Exception ex){ + return CommonResult.failed("同步失败!"); + }finally { + SYNC_BASIC_DATA_BLOCK_MAP.remove(blockKey); + } + } @ApiOperation("省厅-同步单个患者基础数据") @GetMapping("/syncSingleBasicData") public CommonResult syncSingleBasicData(@RequestParam(name = "disDate") String disDate,@RequestParam(name = "inpatientNo") String inpatientNo){ log.info("省厅-同步单个患者基础数据,disDate={},inpatientNo={}", disDate, inpatientNo); - LocalDate localDate = LocalDate.parse(disDate); - SyncBasicDataDto dto = new SyncBasicDataDto(); - dto.setStartDate(localDate.toString()); - dto.setEndDate(localDate.toString()); - dto.setInpatientNoList(Collections.singletonList(inpatientNo)); - dto.setLimit(100); - return syncBasicDataService.syncBasicData(dto); + String blockKey="syncSingleBasicData:"+ inpatientNo+":"+disDate; + if (SYNC_BASIC_DATA_BLOCK_MAP.putIfAbsent(blockKey, 0) != null) { + return CommonResult.failed("有正在同步的任务!"); + } + try { + LocalDate localDate = LocalDate.parse(disDate); + SyncBasicDataDto dto = new SyncBasicDataDto(); + dto.setStartDate(localDate.toString()); + dto.setEndDate(localDate.toString()); + dto.setInpatientNoList(Collections.singletonList(inpatientNo)); + dto.setLimit(100); + return syncBasicDataService.syncBasicData(dto); + }catch (Exception ex){ + return CommonResult.failed("同步失败!"); + }finally { + SYNC_BASIC_DATA_BLOCK_MAP.remove(blockKey); + } } @ApiOperation("省厅-同步上个月基础数据") @GetMapping("/syncLastMonthBasicData") public CommonResult syncLastMonthBasicData(){ - LocalDate today = LocalDate.now(); - LocalDate firstDayOfLastMonth = today.minusMonths(1).with(TemporalAdjusters.firstDayOfMonth()); - LocalDate lastDayOfLastMonth = today.minusMonths(1).with(TemporalAdjusters.lastDayOfMonth()); - - SyncBasicDataDto dto = new SyncBasicDataDto(); - dto.setStartDate(firstDayOfLastMonth.toString()); - dto.setEndDate(lastDayOfLastMonth.toString()); - dto.setLimit(1000); - return syncBasicDataService.syncBasicData(dto); + String blockKey="syncLastMonthBasicData"; + if (SYNC_BASIC_DATA_BLOCK_MAP.putIfAbsent(blockKey, 0) != null) { + return CommonResult.failed("有正在同步的任务!"); + } + try { + LocalDate today = LocalDate.now(); + LocalDate firstDayOfLastMonth = today.minusMonths(1).with(TemporalAdjusters.firstDayOfMonth()); + LocalDate lastDayOfLastMonth = today.minusMonths(1).with(TemporalAdjusters.lastDayOfMonth()); + + SyncBasicDataDto dto = new SyncBasicDataDto(); + dto.setStartDate(firstDayOfLastMonth.toString()); + dto.setEndDate(lastDayOfLastMonth.toString()); + dto.setLimit(1000); + return syncBasicDataService.syncBasicData(dto); + }catch (Exception ex){ + return CommonResult.failed("同步失败!"); + }finally { + SYNC_BASIC_DATA_BLOCK_MAP.remove(blockKey); + } } @@ -83,6 +121,7 @@ public class SyncBasicDataController { @ApiOperation("联众-同步基础数据") @PostMapping("/syncLzBasicData") public CommonResult syncLzBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto){ + return syncBasicDataService.syncLzBasicData(syncBasicDataDto); }