|
|
|
@ -1,10 +1,13 @@
|
|
|
|
|
package com.docus.demo.controller;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
import com.docus.demo.dto.LianZhongUploadInfo;
|
|
|
|
|
import com.docus.demo.dto.SyncBasicDataDto;
|
|
|
|
|
import com.docus.demo.dto.SyncFileDto;
|
|
|
|
|
import com.docus.demo.dto.SyncLabReportDto;
|
|
|
|
|
import com.docus.demo.dto.UploadJpgFileParam;
|
|
|
|
|
import com.docus.demo.entity.CommonResult;
|
|
|
|
|
import com.docus.demo.facade.ISyncBasicDataService;
|
|
|
|
@ -14,10 +17,17 @@ import io.swagger.annotations.Api;
|
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestPart;
|
|
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
|
import java.time.temporal.TemporalAdjusters;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.List;
|
|
|
|
@ -35,45 +45,46 @@ public class SyncBasicDataController {
|
|
|
|
|
@Autowired
|
|
|
|
|
private IWebService webService;
|
|
|
|
|
|
|
|
|
|
private static final ConcurrentHashMap<String,Object> SYNC_BASIC_DATA_BLOCK_MAP = new ConcurrentHashMap<>();
|
|
|
|
|
private static final ConcurrentHashMap<String, Object> SYNC_BASIC_DATA_BLOCK_MAP = new ConcurrentHashMap<>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("去除文件不存在的数据")
|
|
|
|
|
@PostMapping("/deleteSync")
|
|
|
|
|
public CommonResult<?> deleteSync(@RequestBody SyncBasicDataDto syncBasicDataDto){
|
|
|
|
|
public CommonResult<?> deleteSync(@RequestBody SyncBasicDataDto syncBasicDataDto) {
|
|
|
|
|
return syncBasicFileService.deleteSync(syncBasicDataDto);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("省厅-同步基础数据")
|
|
|
|
|
@PostMapping("/syncBasicData")
|
|
|
|
|
public CommonResult<?> syncBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto){
|
|
|
|
|
if(syncBasicDataDto == null){
|
|
|
|
|
public CommonResult<?> syncBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto) {
|
|
|
|
|
if (syncBasicDataDto == null) {
|
|
|
|
|
return CommonResult.failed("无效的请求参数!");
|
|
|
|
|
}
|
|
|
|
|
String blockKey="syncBasicData:"+ JSON.toJSONString(syncBasicDataDto);
|
|
|
|
|
String blockKey = "syncBasicData:" + JSON.toJSONString(syncBasicDataDto);
|
|
|
|
|
if (SYNC_BASIC_DATA_BLOCK_MAP.containsKey(blockKey)) {
|
|
|
|
|
return CommonResult.failed("有正在同步的任务!");
|
|
|
|
|
}
|
|
|
|
|
SYNC_BASIC_DATA_BLOCK_MAP.put(blockKey,0);
|
|
|
|
|
SYNC_BASIC_DATA_BLOCK_MAP.put(blockKey, 0);
|
|
|
|
|
try {
|
|
|
|
|
return syncBasicDataService.syncBasicData(syncBasicDataDto);
|
|
|
|
|
}catch (Exception ex){
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
return CommonResult.failed("同步失败!");
|
|
|
|
|
}finally {
|
|
|
|
|
} finally {
|
|
|
|
|
SYNC_BASIC_DATA_BLOCK_MAP.remove(blockKey);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ApiOperation("省厅-同步单个患者基础数据")
|
|
|
|
|
@GetMapping("/syncSingleBasicData")
|
|
|
|
|
public CommonResult<?> syncSingleBasicData(@RequestParam(name = "disDate") String disDate,@RequestParam(name = "inpatientNo") String inpatientNo){
|
|
|
|
|
public CommonResult<?> syncSingleBasicData(@RequestParam(name = "disDate") String disDate, @RequestParam(name = "inpatientNo") String inpatientNo) {
|
|
|
|
|
log.info("省厅-同步单个患者基础数据,disDate={},inpatientNo={}", disDate, inpatientNo);
|
|
|
|
|
String blockKey="syncSingleBasicData:"+ inpatientNo+":"+disDate;
|
|
|
|
|
String blockKey = "syncSingleBasicData:" + inpatientNo + ":" + disDate;
|
|
|
|
|
if (SYNC_BASIC_DATA_BLOCK_MAP.containsKey(blockKey)) {
|
|
|
|
|
return CommonResult.failed("有正在同步的任务!");
|
|
|
|
|
}
|
|
|
|
|
SYNC_BASIC_DATA_BLOCK_MAP.put(blockKey,0);
|
|
|
|
|
SYNC_BASIC_DATA_BLOCK_MAP.put(blockKey, 0);
|
|
|
|
|
try {
|
|
|
|
|
LocalDate localDate = LocalDate.parse(disDate);
|
|
|
|
|
SyncBasicDataDto dto = new SyncBasicDataDto();
|
|
|
|
@ -82,9 +93,9 @@ public class SyncBasicDataController {
|
|
|
|
|
dto.setInpatientNoList(Collections.singletonList(inpatientNo));
|
|
|
|
|
dto.setLimit(100);
|
|
|
|
|
return syncBasicDataService.syncBasicData(dto);
|
|
|
|
|
}catch (Exception ex){
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
return CommonResult.failed("同步失败!");
|
|
|
|
|
}finally {
|
|
|
|
|
} finally {
|
|
|
|
|
SYNC_BASIC_DATA_BLOCK_MAP.remove(blockKey);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -92,12 +103,12 @@ public class SyncBasicDataController {
|
|
|
|
|
|
|
|
|
|
@ApiOperation("省厅-同步上个月基础数据")
|
|
|
|
|
@GetMapping("/syncLastMonthBasicData")
|
|
|
|
|
public CommonResult<?> syncLastMonthBasicData(){
|
|
|
|
|
String blockKey="syncLastMonthBasicData";
|
|
|
|
|
public CommonResult<?> syncLastMonthBasicData() {
|
|
|
|
|
String blockKey = "syncLastMonthBasicData";
|
|
|
|
|
if (SYNC_BASIC_DATA_BLOCK_MAP.containsKey(blockKey)) {
|
|
|
|
|
return CommonResult.failed("有正在同步的任务!");
|
|
|
|
|
}
|
|
|
|
|
SYNC_BASIC_DATA_BLOCK_MAP.put(blockKey,0);
|
|
|
|
|
SYNC_BASIC_DATA_BLOCK_MAP.put(blockKey, 0);
|
|
|
|
|
try {
|
|
|
|
|
LocalDate today = LocalDate.now();
|
|
|
|
|
LocalDate firstDayOfLastMonth = today.minusMonths(1).with(TemporalAdjusters.firstDayOfMonth());
|
|
|
|
@ -108,9 +119,9 @@ public class SyncBasicDataController {
|
|
|
|
|
dto.setEndDate(lastDayOfLastMonth.toString());
|
|
|
|
|
dto.setLimit(1000);
|
|
|
|
|
return syncBasicDataService.syncBasicData(dto);
|
|
|
|
|
}catch (Exception ex){
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
return CommonResult.failed("同步失败!");
|
|
|
|
|
}finally {
|
|
|
|
|
} finally {
|
|
|
|
|
SYNC_BASIC_DATA_BLOCK_MAP.remove(blockKey);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -122,16 +133,71 @@ public class SyncBasicDataController {
|
|
|
|
|
return webService.syncInspection(syncBasicDataDto);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("同步检验图片数据(V2)")
|
|
|
|
|
@PostMapping("/syncLabReport")
|
|
|
|
|
public CommonResult<?> syncLabReport(@RequestBody SyncLabReportDto syncLabReportDto) {
|
|
|
|
|
try {
|
|
|
|
|
validateAndSet(syncLabReportDto);
|
|
|
|
|
webService.syncLabReport(syncLabReportDto);
|
|
|
|
|
return CommonResult.success("同步检验数据成功");
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
log.error("同步检验图片数据,出错了," + ex.getMessage(), ex);
|
|
|
|
|
return CommonResult.failed("同步检验数据出错," + ex.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void validateAndSet(SyncLabReportDto syncLabReportDto) {
|
|
|
|
|
List<SyncLabReportDto.SyncLabReportBasicDto> basicDtoList = syncLabReportDto.getBasicDtoList();
|
|
|
|
|
if (CollUtil.isEmpty(basicDtoList)) {
|
|
|
|
|
throw new RuntimeException("患者基础数据为空!");
|
|
|
|
|
}
|
|
|
|
|
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
for (SyncLabReportDto.SyncLabReportBasicDto basicDto : basicDtoList) {
|
|
|
|
|
|
|
|
|
|
if (StrUtil.isBlank(basicDto.getInpatientNo()) || StrUtil.isBlank(basicDto.getDisDate())) {
|
|
|
|
|
throw new RuntimeException("患者基础数据病案号或出院日期为空!");
|
|
|
|
|
}
|
|
|
|
|
LocalDate.parse(basicDto.getDisDate(), dateTimeFormatter);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
final String startDefault = "2018-01-01";
|
|
|
|
|
final String endDefault = LocalDate.now().toString() ;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String startDate = syncLabReportDto.getStartDate();
|
|
|
|
|
String endDate = syncLabReportDto.getEndDate();
|
|
|
|
|
if (StrUtil.isBlank(startDate)) {
|
|
|
|
|
startDate = startDefault;
|
|
|
|
|
}
|
|
|
|
|
if (StrUtil.isBlank(endDate)) {
|
|
|
|
|
endDate = endDefault;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LocalDate startLocalDate = LocalDate.parse(startDate, dateTimeFormatter);
|
|
|
|
|
LocalDate endLocalDate = LocalDate.parse(endDate, dateTimeFormatter);
|
|
|
|
|
if (startLocalDate.isAfter(endLocalDate)) {
|
|
|
|
|
throw new RuntimeException("三方查询接口开始时间不合法!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
syncLabReportDto.setStartDate(startLocalDate + " 00:00:00");
|
|
|
|
|
syncLabReportDto.setEndDate(endLocalDate + " 23:59:59");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("联众-同步基础数据")
|
|
|
|
|
@PostMapping("/syncLzBasicData")
|
|
|
|
|
public CommonResult<?> syncLzBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto){
|
|
|
|
|
public CommonResult<?> syncLzBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto) {
|
|
|
|
|
|
|
|
|
|
return syncBasicDataService.syncLzBasicData(syncBasicDataDto);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ApiOperation("同步文件数据")
|
|
|
|
|
@PostMapping("/syncBasicFile")
|
|
|
|
|
public CommonResult<?> syncBasicFile(@RequestBody SyncFileDto syncFileDto){
|
|
|
|
|
public CommonResult<?> syncBasicFile(@RequestBody SyncFileDto syncFileDto) {
|
|
|
|
|
return syncBasicFileService.syncBasicFile(syncFileDto);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -198,12 +264,9 @@ public class SyncBasicDataController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条")
|
|
|
|
|
@GetMapping("/choose")
|
|
|
|
|
public CommonResult<?> choose(){
|
|
|
|
|
public CommonResult<?> choose() {
|
|
|
|
|
log.info("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条");
|
|
|
|
|
try {
|
|
|
|
|
syncBasicDataService.choose();
|
|
|
|
@ -218,7 +281,7 @@ public class SyncBasicDataController {
|
|
|
|
|
|
|
|
|
|
@ApiOperation("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条")
|
|
|
|
|
@PostMapping("/chooseByInpatientNo")
|
|
|
|
|
public CommonResult<?> chooseByInpatientNo(@RequestBody List<String> inpatientNos){
|
|
|
|
|
public CommonResult<?> chooseByInpatientNo(@RequestBody List<String> inpatientNos) {
|
|
|
|
|
log.info("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条");
|
|
|
|
|
try {
|
|
|
|
|
syncBasicDataService.choose(inpatientNos);
|
|
|
|
@ -232,7 +295,7 @@ public class SyncBasicDataController {
|
|
|
|
|
|
|
|
|
|
@ApiOperation("厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充,被选择的改为未归档状态")
|
|
|
|
|
@GetMapping("/xmzyyYidi/choose")
|
|
|
|
|
public CommonResult<?> xmzyyYidiChoose(){
|
|
|
|
|
public CommonResult<?> xmzyyYidiChoose() {
|
|
|
|
|
log.info("厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充");
|
|
|
|
|
try {
|
|
|
|
|
syncBasicDataService.xmzyyYidiChoose();
|
|
|
|
|