You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jp2demo/src/main/java/com/docus/demo/controller/SyncBasicDataController.java

249 lines
10 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.docus.demo.controller;
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.UploadJpgFileParam;
import com.docus.demo.entity.CommonResult;
import com.docus.demo.facade.ISyncBasicDataService;
import com.docus.demo.facade.ISyncBasicFileService;
import com.docus.demo.facade.IWebService;
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.multipart.MultipartFile;
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
@Slf4j
public class SyncBasicDataController {
@Autowired
private ISyncBasicDataService syncBasicDataService;
@Autowired
private ISyncBasicFileService syncBasicFileService;
@Autowired
private IWebService webService;
private static final ConcurrentHashMap<String,Object> SYNC_BASIC_DATA_BLOCK_MAP = new ConcurrentHashMap<>();
@ApiOperation("去除文件不存在的数据")
@PostMapping("/deleteSync")
public CommonResult<?> deleteSync(@RequestBody SyncBasicDataDto syncBasicDataDto){
return syncBasicFileService.deleteSync(syncBasicDataDto);
}
@ApiOperation("省厅-同步基础数据")
@PostMapping("/syncBasicData")
public CommonResult<?> syncBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto){
if(syncBasicDataDto == null){
return CommonResult.failed("无效的请求参数!");
}
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);
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);
String blockKey="syncSingleBasicData:"+ inpatientNo+":"+disDate;
if (SYNC_BASIC_DATA_BLOCK_MAP.containsKey(blockKey)) {
return CommonResult.failed("有正在同步的任务!");
}
SYNC_BASIC_DATA_BLOCK_MAP.put(blockKey,0);
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(){
String blockKey="syncLastMonthBasicData";
if (SYNC_BASIC_DATA_BLOCK_MAP.containsKey(blockKey)) {
return CommonResult.failed("有正在同步的任务!");
}
SYNC_BASIC_DATA_BLOCK_MAP.put(blockKey,0);
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);
}
}
@ApiOperation("同步检验图片数据")
@PostMapping("/syncInspection")
public CommonResult<?> syncInspection(@RequestBody SyncBasicDataDto syncBasicDataDto) {
return webService.syncInspection(syncBasicDataDto);
}
@ApiOperation("联众-同步基础数据")
@PostMapping("/syncLzBasicData")
public CommonResult<?> syncLzBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto){
return syncBasicDataService.syncLzBasicData(syncBasicDataDto);
}
@ApiOperation("同步文件数据")
@PostMapping("/syncBasicFile")
public CommonResult<?> syncBasicFile(@RequestBody SyncFileDto syncFileDto){
return syncBasicFileService.syncBasicFile(syncFileDto);
}
/**
* @description: 文件上传
* @params: files
* @params: uploadBatchFileParam
* @author linjj
* @date: 2024/6/28 10:38
*/
@ApiOperation("联众同步文件上传,删除旧的所有联众,新的增加")
@PostMapping(value = "fileUploadJpg")
@ResponseBody
public CommonResult<?> fileUploadJpg(@RequestPart("files") MultipartFile[] files, UploadJpgFileParam uploadJpgFileParam) {
try {
return syncBasicFileService.fileUploadJpg(files, uploadJpgFileParam);
} catch (Exception e) {
log.error("保存失败!异常处理" + e.getMessage(), e);
return CommonResult.failed("保存失败!异常处理" + e.getMessage());
}
}
/**
* @description: 文件上传
* @params: files
* @params: uploadBatchFileParam
* @author linjj
* @date: 2024/6/28 10:38
*/
@ApiOperation("联众同步文件上传,相同名字的删除,不同的添加,用于个别单次无法上传完毕的")
@PostMapping(value = "batchFileUploadJpg")
@ResponseBody
public CommonResult<?> batchFileUploadJpg(@RequestPart("files") MultipartFile[] files, UploadJpgFileParam uploadJpgFileParam) {
try {
return syncBasicFileService.batchFileUploadJpg(files, uploadJpgFileParam);
} catch (Exception e) {
log.error("保存失败!异常处理" + e.getMessage(), e);
return CommonResult.failed("保存失败!异常处理" + e.getMessage());
}
}
/**
* @description: 文件上传
* @params: files
* @params: uploadBatchFileParam
* @author linjj
* @date: 2024/6/28 10:38
*/
@ApiOperation("标准版联众同步文件上传,相同名字的删除,不同的添加,用于个别单次无法上传完毕的")
@PostMapping(value = "/lianzhong/batchFileUploadJpg")
@ResponseBody
public CommonResult<?> lianZhongBatchFileUploadJpg(@RequestPart("files") MultipartFile[] files, UploadJpgFileParam uploadJpgFileParam) {
try {
LianZhongUploadInfo lianZhongUploadInfo = JSON.parseObject(uploadJpgFileParam.getUploadFileParams(), LianZhongUploadInfo.class);
syncBasicFileService.lianZhongBatchFileUploadJpg(files, lianZhongUploadInfo);
return CommonResult.success("成功!");
} catch (Exception e) {
log.error("联众同步文件上传,保存失败!异常处理" + e.getMessage(), e);
return CommonResult.failed("保存失败!异常处理" + e.getMessage());
}
}
@ApiOperation("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条")
@GetMapping("/choose")
public CommonResult<?> choose(){
log.info("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条");
try {
syncBasicDataService.choose();
log.info("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条,已完成!");
return CommonResult.success("筛选完成!");
} catch (Exception ex) {
log.error("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条,出现异常!" + ex.getMessage(), ex);
return CommonResult.failed("筛选异常!");
}
}
@ApiOperation("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条")
@PostMapping("/chooseByInpatientNo")
public CommonResult<?> chooseByInpatientNo(@RequestBody List<String> inpatientNos){
log.info("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条");
try {
syncBasicDataService.choose(inpatientNos);
log.info("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条,已完成!");
return CommonResult.success("筛选完成!");
} catch (Exception ex) {
log.error("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条,出现异常!" + ex.getMessage(), ex);
return CommonResult.failed("筛选异常!");
}
}
@ApiOperation("厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充,被选择的改为未归档状态")
@GetMapping("/xmzyyYidi/choose")
public CommonResult<?> xmzyyYidiChoose(){
log.info("厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充");
try {
syncBasicDataService.xmzyyYidiChoose();
log.info("厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充,已完成!");
return CommonResult.success("筛选完成!");
} catch (Exception ex) {
log.error("厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充,出现异常!" + ex.getMessage(), ex);
return CommonResult.failed("筛选异常!");
}
}
}