Compare commits

...

10 Commits

Author SHA1 Message Date
tan 6be01e30f6 push 2 years ago
tan e3bcc934d4 按需采集更新 3 years ago
tan c71c830113 按需采集更新 3 years ago
tan a31072036e 按需采集更新
# Conflicts:
#	src/main/java/com/docus/bgts/config/MyScheduling.java
#	src/main/java/com/docus/bgts/controller/BgtsController.java
#	src/main/java/com/docus/bgts/facade/IMzSyncService.java
3 years ago
zengwh f62d172d71 重构完整性校验,增加根据af_collect_task采集情况校验 3 years ago
zengwh 69f2603413 梅州增加按jzh查任务视图补偿接口 3 years ago
zengwh 79f619a4e1 Merge branch 'docus-active-query-service_1.2' of http://8.134.10.251:3000/RecordCollectService/docus-active-query-service into docus-active-query-service_1.1
 Conflicts:
	dataConfig/homeQualitySet.json
	pom.xml
	src/main/java/com/docus/bgts/config/MyScheduling.java
3 years ago
zengwh b24415be6a 梅州增加按jzh查任务视图补偿接口 3 years ago
谭哲荣 f3bc1e2b0e 添加批量按需采集 3 years ago
zengwh 8c4cc8413a 修改完整性查询,特殊字符处理 3 years ago

@ -0,0 +1,6 @@
源码版本控制
1. master: 采集器
2. docus-active-query-service_1.1: 增加梅州完整性校验
3. docus-active-query-service_1.2: 完善梅州完整性校验与增加按需采集
4. docus-active-query-service_1.3: 增加根据af_collect_task校验完整性

@ -30,7 +30,7 @@
<OUTHOSP_INDEX_NO/>
<OUTHOSP_NO/>
<INHOSP_INDEX_NO></INHOSP_INDEX_NO>
<INHOSP_NO>1123</INHOSP_NO>
<INHOSP_NO></INHOSP_NO>
<EMPI_ID></EMPI_ID>
<BEGIN_DATE>20211213</BEGIN_DATE>
<END_DATE>20211222</END_DATE>

@ -1,6 +1,10 @@
{
//,
"directory":["Msg","ReportInfo"],
//pacs
"intervalDay":3,
//pacs 1: 0:
"intervalDayOpen":1,
//
"indexFlag":"就诊号",
//
@ -9,8 +13,12 @@
"filetitle":"文书名",
//
"downurl":"WEB_ADDRESS",
//
"dateFormat": "yyyy-MM-dd HH:mm:ss",
//id
"assortid":"",
"assortid":"15E7FE7803F545CB81390BC88E725240",
//,
"filterReport":"病理送检标签,处方笺,麻醉处方精二-1,麻醉处方精二-2,术后镇痛",
//id
"collectorid":"14",
//( 1:2)
@ -47,6 +55,14 @@
"tableName":"V_DOCUMENT_PDF",
//oracle
"collectTimeName":"ARCHIVE_DATE_TIME",
//
"collectStartDate": "2022-09-20",
//
"collectEndDate": "2022-09-20",
// 1: 0:
"collectOpen": "1",
// 1:af_collect_task 2:
"checkIntegrityType": "1",
//----------
//0 1
@ -56,5 +72,7 @@
"newSyncTime":"",
//
"syncTableName":"CIS_EMR_DOCUMENT",
"syncTableNamespaces":"CDR"
"syncTableNamespaces":"CDR",
//url
"replaceUrl": ["<FILES>","</FILES>","<FILE num=\"1\">","<FILE num=\"2\">","<FILE num=\"3\">","</FILE>","<!\\[CDATA\\[","]]>"]
}

@ -1 +1 @@
{"lastTime":"2022-03-25 00:00:00"}
{"lastTime":"2022-05-02 12:46:49"}

@ -152,6 +152,17 @@
<artifactId>hutool-all</artifactId>
<version>4.0.9</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
</dependencies>
<build>

@ -3,7 +3,10 @@ package com.docus.bgts;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
@EnableScheduling
@SpringBootApplication(exclude = {MybatisPlusAutoConfiguration.class})
@ -13,5 +16,11 @@ public class DemoApplication {
System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(3);
return taskScheduler;
}
}

@ -0,0 +1,25 @@
package com.docus.bgts.config;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
import java.util.WeakHashMap;
public class LocalBusFactory extends BusFactory {
private static Logger logger = LoggerFactory.getLogger(LocalBusFactory.class);
@Override
public Bus createBus() {
return null;
}
public static void printTHREAD_BUSSES(){
logger.info("THREAD_BUSSES SIZE {}",THREAD_BUSSES.size());
}
}

@ -4,6 +4,8 @@ import com.docus.bgts.enums.Codes;
import com.docus.bgts.facade.IBgtsService;
import com.docus.bgts.utils.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@ -15,18 +17,37 @@ public class MyConstruct {
@Autowired
IBgtsService bgtsService;
private Logger logger = LogManager.getLogger(MyConstruct.class);
/**
*
*
*/
@PostConstruct
public void startCollectAll(){
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
String startCollectTime = String.valueOf(FileUtils.getJsonByName("startCollectTime"));
String isStartCollect = String.valueOf(FileUtils.getJsonByName("isStartCollect"));
if(collectorid.equals(Codes.SMCODE.getCode())&& StringUtils.isNotBlank(startCollectTime)&&isStartCollect!=null&&isStartCollect.equals("1")){
bgtsService.collectAll();
}
}
// @PostConstruct
// public void startCollectAll(){
// logger.info("全量采集开始------");
// String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
// String startCollectTime = String.valueOf(FileUtils.getJsonByName("startCollectTime"));
// String isStartCollect = String.valueOf(FileUtils.getJsonByName("isStartCollect"));
// if(collectorid.equals(Codes.SMCODE.getCode())&& StringUtils.isNotBlank(startCollectTime)&&isStartCollect!=null&&isStartCollect.equals("1")){
// bgtsService.collectAll();
// }
// }
/**
*
*/
// @PostConstruct
// public void startCollectAll(){
// logger.info("全量采集开始------");
// String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
// String startCollectTime = String.valueOf(FileUtils.getJsonByName("startCollectTime"));
// String isStartCollect = String.valueOf(FileUtils.getJsonByName("isStartCollect"));
// if(collectorid.equals(Codes.ZZCODE.getCode())&& StringUtils.isNotBlank(startCollectTime)&&isStartCollect!=null&&isStartCollect.equals("1")){
// bgtsService.collectAll();
// }
// }
//在spring容器关闭时释放

@ -1,27 +1,35 @@
package com.docus.bgts.config;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.docus.bgts.entity.TableJsonRead;
import com.docus.bgts.enums.Codes;
import com.docus.bgts.facade.IBgtsService;
import com.docus.bgts.facade.IMzSyncService;
import com.docus.bgts.service.CheckIntegrityService;
import com.docus.bgts.utils.FileUtils;
import com.docus.bgts.utils.HttpUtils;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Component
public class MyScheduling {
@ -29,24 +37,27 @@ public class MyScheduling {
private String beatUrl;
public static String syncFlag;
private final String tempfilePrefix="dataConfig\\temp";
private final String tempDataFileName="collectTimeTemp";
private final String lastTimeStr="lastTime";
private final String tempfilePrefix = "dataConfig\\temp";
private final String tempDataFileName = "collectTimeTemp";
private final String lastTimeStr = "lastTime";
static {
syncFlag=FileUtils.getJsonByName("syncFlag").toString();
}
// static {
// syncFlag=FileUtils.getJsonByName("syncFlag").toString();
// }
@Autowired
IBgtsService bgtsService;
@Autowired
IMzSyncService mzSyncService;
CheckIntegrityService checkIntegrityService;
private Logger logger = LogManager.getLogger(MyScheduling.class);
//5分钟执行一次
/*@Scheduled(fixedRate = 1000 * 60 * 5)
@Autowired
private ThreadPoolExecutor threadPoolExecutor;
//5分钟执行一次心跳
@Scheduled(fixedRate = 1000 * 5)
public void beat() {
Map<String, String> params = new HashMap<>();
params.put("code", String.valueOf(FileUtils.getJsonByName("collectorid")));
@ -56,64 +67,177 @@ public class MyScheduling {
e.printStackTrace();
logger.info("心跳推送出错,可能是住院服务没有开启");
}
}*/
}
/**
*
* /
* 10
*/
/*@Scheduled(fixedRate = 1000 * 60 * 10)
public void collect() {
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
String isStartCollect = String.valueOf(FileUtils.getJsonByName("isStartCollect"));
if (isStartCollect.equals("0")) {
return;
}
if ((!collectorid.equals(Codes.SMCODE.getCode())) && (!collectorid.equals(Codes.ZZCODE.getCode()))) {
return;
}
bgtsService.timerCollect();
}*/
// @Scheduled(fixedRate = 1000 * 60 * 10)
// public void collect() {
// String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
// if ((!collectorid.equals(Codes.SMCODE.getCode())) && (!collectorid.equals(Codes.ZZCODE.getCode()))) {
// return;
// }
// bgtsService.timerCollect();
// }
// // 时间
// private static List<String> date = new ArrayList<>();
// // 上次任务执行时间
// private static int currentIndex = 0;
// public static void main(String[] args) throws Exception{
// MyScheduling myScheduling = new MyScheduling();
//
// for (int i = 0; i <=50;i++){
// myScheduling.collectByExamNo();
// TimeUnit.MILLISECONDS.sleep(500);
// }
//
//// System.out.println(date);
//// System.out.println(currentIndex);
// }
// private static void initDate() throws Exception {
// String configStart = String.valueOf(FileUtils.getJsonByName("collectStartDate"));
// String configEnd = String.valueOf(FileUtils.getJsonByName("collectEndDate"));
// if (StrUtil.isBlank(configStart) || StrUtil.isBlank(configEnd)) {
// throw new RuntimeException("check homeQualitySet.json collectStartDate AND collectEndDate confg");
// }
// DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// LocalDate localDate = LocalDate.parse(configStart, dtf);
// LocalDate end = LocalDate.parse(configEnd);
// while (!localDate.isAfter(end)) {
// date.add(localDate.toString());
// localDate = localDate.plusDays(1);
// }
// }
/**
*
*
* 10
*/
@Scheduled(fixedRate = 1000 * 5 * 60)
public void syncIntegrality() {
if (null == syncFlag || "0".equals(syncFlag)) {
} else {
//获取最后时间
String lastDate = getLastDate();
if(StringUtils.isNotBlank(lastDate)) {
Date date = new Date();
boolean flag = mzSyncService.addSyncIntegrality(lastDate, null);
if(flag) {
refreshLastDate(date);
}
}else{
logger.info("采集时间为空");
}
//
// @Scheduled(fixedDelay = 1000 * 60 * 10)
// public void collectByExamNo() {
// String collectOpen = String.valueOf(FileUtils.getJsonByName("collectOpen"));
// if (collectOpen.equals("1")) {
// logger.info("按需采集任务执行----");
//// if (CollUtil.isEmpty(date)) {
//// try {
//// initDate();
//// } catch (Exception e) {
//// logger.error(e.getMessage());
//// return;
//// }
//// }
//// if (currentIndex >= date.size()) {
//// currentIndex = 0;
//// }
//// logger.info("index:{},Thread {}", currentIndex, Thread.currentThread().getName());
//// String collectStartDate = date.get(currentIndex);
//// String collectEndDate = collectStartDate + "\t23:59:59";
// String collectStartDate = String.valueOf(FileUtils.getJsonByName("collectStartDate"))+ "\t00:00:00";
// String collectEndDate = String.valueOf(FileUtils.getJsonByName("collectEndDate"))+ "\t23:59:59";
// logger.info("按需采集开始----------开始时间---" + collectStartDate + "------结束时间---" + collectEndDate);
// String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
// CountDownLatch countDownLatch = new CountDownLatch(1);
// threadPoolExecutor.execute(() -> {
// bgtsService.collectByDate(collectStartDate, collectEndDate, collectorid);
// countDownLatch.countDown();
// });
// try {
// countDownLatch.await();
// } catch (Exception e) {
// logger.error("JUC countDownLatch error {}", e.getMessage());
// }
// logger.info("{},采集结束----", collectStartDate);
// currentIndex++;
// System.gc();
// }
//
// }
@Scheduled(cron ="0 0 0 * * ?")
public void collect(){
String intervalDayOpen = String.valueOf(FileUtils.getJsonByName("intervalDayOpen"));
if (intervalDayOpen.equals("1")){
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
int day = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("intervalDay")));
logger.info("0点采集前"+day+"天出院数据");
Map<String, String> dateCollectionTime = getDateCollectionTime(new Date(), day);
logger.info("采集"+dateCollectionTime.get("startDate")+"至-------"+dateCollectionTime.get("endDate")+"数据");
bgtsService.collectByDate(dateCollectionTime.get("startDate"),dateCollectionTime.get("endDate"),collectorid);
}
}
/**
* x
*
* @param date
* @return
*/
public static Map<String, String> getDateCollectionTime(Date date, int day) {
Date dBefore;
Calendar calendar = Calendar.getInstance(); //得到日历
calendar.setTime(date);//把当前时间赋给日历
calendar.add(Calendar.DAY_OF_MONTH, -day); //设置为前day天
dBefore = calendar.getTime(); //得到前一天的时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式
String defaultStartDate = sdf.format(dBefore); //格式化前一天
defaultStartDate = defaultStartDate + " 00:00:00";
String defaultEndDate = defaultStartDate.substring(0, 10) + " 23:59:59";
Map<String, String> map = new HashMap<>();
map.put("startDate", defaultStartDate);
map.put("endDate", defaultEndDate);
return map;
}
/**
*
*/
// @Scheduled(fixedRate = 1000 * 5 * 60)
// public void syncIntegrality() {
// if (null == syncFlag || "0".equals(syncFlag)) {
//
// } else {
// //获取最后时间
// String lastDate = getLastDate();
// if(StringUtils.isNotBlank(lastDate)) {
// Date date = new Date();
// boolean flag = checkIntegrityService.addSyncIntegrality(lastDate, null);
// if(flag) {
// refreshLastDate(date);
// }
// }else{
// logger.info("采集时间为空");
// }
// }
// }
/**
*
* @return
*/
private String getLastDate(){
TableJsonRead tableJsonRead = new TableJsonRead();
Map<String,String> map = tableJsonRead.Read(tempfilePrefix, tempDataFileName,Map.class);
return map.get(lastTimeStr);
}
// private String getLastDate(){
// TableJsonRead tableJsonRead = new TableJsonRead();
// Map<String,String> map = tableJsonRead.Read(tempfilePrefix, tempDataFileName,Map.class);
// return map.get(lastTimeStr);
// }
/**
*
*/
private void refreshLastDate(Date lastDate){
String lastTime = DateUtil.format(lastDate, "yyyy-MM-dd HH:mm:ss");
TableJsonRead tableJsonRead = new TableJsonRead();
Map<String, String> map = new HashMap<>();
map.put(lastTimeStr, lastTime);
tableJsonRead.Save(tempfilePrefix, tempDataFileName, JSON.toJSONString(map));
}
// private void refreshLastDate(Date lastDate){
// String lastTime = DateUtil.format(lastDate, "yyyy-MM-dd HH:mm:ss");
// TableJsonRead tableJsonRead = new TableJsonRead();
// Map<String, String> map = new HashMap<>();
// map.put(lastTimeStr, lastTime);
// tableJsonRead.Save(tempfilePrefix, tempDataFileName, JSON.toJSONString(map));
// }
}

@ -0,0 +1,32 @@
package com.docus.bgts.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.*;
@Configuration
public class ThreadPoolConfig {
@Bean
public ThreadPoolExecutor threadPoolExecutor() {
return new ThreadPoolExecutor(
Runtime.getRuntime().availableProcessors(),
(int) (Runtime.getRuntime().availableProcessors() / (1 - 0.9)),
60,
TimeUnit.SECONDS,
new LinkedBlockingQueue<>(Runtime.getRuntime().availableProcessors()),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.CallerRunsPolicy()
);
}
@Bean
public ScheduledThreadPoolExecutor scheduledThreadPoolExecutor() {
return new ScheduledThreadPoolExecutor(
Runtime.getRuntime().availableProcessors(),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.CallerRunsPolicy());
}
}

@ -6,6 +6,7 @@ import com.docus.bgts.entity.CommonResult;
import com.docus.bgts.facade.IAfCollectTaskService;
import com.docus.bgts.facade.IBgtsService;
import com.docus.bgts.facade.IMzSyncService;
import com.docus.bgts.service.CheckIntegrityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@ -25,7 +26,7 @@ public class BgtsController {
private final Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
IMzSyncService mzSyncService;
CheckIntegrityService checkIntegrityService;
@Autowired
IBgtsService bgtsService;
@ -39,22 +40,19 @@ public class BgtsController {
MyScheduling.syncFlag=flag;
}
@GetMapping("/test")
public String test(@RequestParam("empId") String empId,
@RequestParam("collectSubId") String collectSubId){
return bgtsService.test(collectSubId)+"---"+empId;
}
@GetMapping("/syncIntegrality")
public void syncIntegrality(){
mzSyncService.syncIntegrality();
}
@GetMapping("/addSyncIntegrality")
public void addSyncIntegrality(@RequestParam("startDate")String startDate,String endDate){
mzSyncService.addSyncIntegrality(startDate,endDate);
checkIntegrityService.addSyncIntegrality(startDate,endDate);
}
@GetMapping("/addSyncIntegralityByJzhs")
public CommonResult<String> addSyncIntegrality(@RequestParam("jzhs")String jzhs){
if(jzhs.split(",").length > 100){
return CommonResult.failed("jzh个数不能超过100个");
}
checkIntegrityService.addSyncIntegralityByJzhs(jzhs);
return CommonResult.success("完成");
}
@ApiOperation("采集接口")
@ApiImplicitParams({
@ -80,6 +78,82 @@ public class BgtsController {
}
return CommonResult.failed(e.getMessage());
}
catch (Exception e) {
e.printStackTrace();
}catch (Throwable t){
t.printStackTrace();
logger.error("throwable{}", t.getMessage());
}
return CommonResult.success("ok");
}
@ApiOperation("Pacs采集接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "empId",value = "患者主索引号",required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "collectSubId",value = "af_interface_collect_sub表id",required = true),
@ApiImplicitParam(name = "admissDate",value = "入院时间",required = true),
@ApiImplicitParam(name = "disDate",value = "出院时间",required = true),
@ApiImplicitParam(name = "times",value = "住院次数",required = true)
})
@GetMapping("/collectPacs")
public CommonResult<String> collect(@RequestParam("collectSubId") String collectSubId,
@RequestParam("empId") String empId,
@RequestParam("admissDate") String admissDate,
@RequestParam("disDate") String disDate,
@RequestParam("times") String times){
try {
logger.info("采集接口接收到参数:\nempId--"+empId+"\ncollectSubId--"+collectSubId);
bgtsService.collectPacs(empId,admissDate,disDate,times);
logger.info("采集完成");
afCollectTaskService.updateInterfaceCollect(collectSubId, 1);
logger.info("------------采集结束-----------");
} catch (RuntimeException e) {
e.printStackTrace();
try {
afCollectTaskService.updateInterfaceCollect(collectSubId, 0);
}catch (Exception e1) {
logger.info(e1.getMessage());
return CommonResult.failed(e1.getMessage());
}
return CommonResult.failed(e.getMessage());
}
catch (Exception e) {
e.printStackTrace();
}
return CommonResult.success("ok");
}
@ApiOperation("动态心电采集接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "empId",value = "患者主索引号",required = true,dataTypeClass = String.class),
@ApiImplicitParam(name = "collectSubId",value = "af_interface_collect_sub表id",required = true),
@ApiImplicitParam(name = "admissDate",value = "入院时间",required = true),
@ApiImplicitParam(name = "disDate",value = "出院时间",required = true),
@ApiImplicitParam(name = "times",value = "住院次数",required = true)
})
@GetMapping("/collectEcg")
public CommonResult<String> collectEcg(@RequestParam("collectSubId") String collectSubId,
@RequestParam("empId") String empId,
@RequestParam("admissDate") String admissDate,
@RequestParam("disDate") String disDate,
@RequestParam("times") String times){
try {
logger.info("采集接口接收到参数:\nempId--"+empId+"\ncollectSubId--"+collectSubId);
bgtsService.collectEcg(empId,admissDate,disDate,times);
logger.info("采集完成");
afCollectTaskService.updateInterfaceCollect(collectSubId, 1);
logger.info("------------采集结束-----------");
} catch (RuntimeException e) {
e.printStackTrace();
try {
afCollectTaskService.updateInterfaceCollect(collectSubId, 0);
}catch (Exception e1) {
logger.info(e1.getMessage());
return CommonResult.failed(e1.getMessage());
}
return CommonResult.failed(e.getMessage());
}
catch (Exception e) {
e.printStackTrace();
}
@ -113,4 +187,37 @@ public class BgtsController {
return CommonResult.success("ok");
}
/**
*
*/
@GetMapping("/collectByEx")
public CommonResult<String> collectByEx(@RequestParam("empId") String empId){
try{
bgtsService.collect(empId);
}catch (Exception e){
e.printStackTrace();
return CommonResult.failed(e.getMessage());
}
return CommonResult.success("ok");
}
/**
* pacs
*/
@ApiOperation("pacs按需采集接口")
@GetMapping("/collectByPacs")
public CommonResult<String> collectByPacs(){
try{
bgtsService.collectPacss();
}catch (Exception e){
e.printStackTrace();
return CommonResult.failed(e.getMessage());
}
return CommonResult.success("ok");
}
}

@ -0,0 +1,20 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author
* @description: jzh
* @createTime 2022/5/2 11:37
*/
@Data
public class JzhListSync {
private String jzh;
/**
*
*/
private List<TaskDetail> taskDetails;
}

@ -7,4 +7,8 @@ import lombok.Data;
public class ReportDownPatientDto {
@ApiModelProperty(value = "记帐号")
private String jzh;
@ApiModelProperty(value = "住院号")
private String inPatientNo;
@ApiModelProperty(value = "住院次数")
private String visitId;
}

@ -0,0 +1,17 @@
package com.docus.bgts.entity;
import lombok.Data;
/**
* @author
* @description: jzh
* @createTime 2022/5/2 11:49
*/
@Data
public class TaskDetail {
private Long id;
private String fileTitle;
private String state;
}

@ -4,6 +4,11 @@ package com.docus.bgts.facade;
import com.baomidou.mybatisplus.extension.service.IService;
import com.docus.bgts.entity.AfCollectTask;
import com.docus.bgts.entity.ReportDownDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -21,5 +26,55 @@ public interface IAfCollectTaskService extends IService<AfCollectTask> {
void insert(ReportDownDto reportDownDto);
String getJzhByInpatientNo(String inPatientNo,String visitId);
/**
* jzh
*/
String getJzhByJzh(String jzh);
void insertServer(ReportDownDto reportDownDto);
void updateInterfaceCollect(String collectSubId, int state);
/**
* jzh
* @param startDate
* @param endDate
* @return
*/
List<Map> getjzhByDate(String startDate,String endDate,int size,int current);
/**
*
* @param patientIds
* @return
*/
List<String> getC1ByPatientId(List<String> patientIds,String collectorId);
/**
* patient_id
* @param C1s
* @return
*/
List<String> getPatientIdByC1(List<String> C1s);
/**
* jzh
* @param patientIds
* @return
*/
List<String> getJzhByPatientId(List<String> patientIds);
/**
* patient_id
*/
String getPatientIdByInpatientNo(String inPatientNo,String visitId);
/**
* jzh
* @param jzhs
* @return
*/
List<Map> getCompleteIntegrity(List<String> jzhs);
}

@ -6,6 +6,11 @@ public interface IBgtsService {
*/
void collect(String empId) throws Exception;
void collectPacs(String empId,String admissDate,String disDate,String times) throws Exception;
void collectEcg(String empId,String admissDate,String disDate,String times) throws Exception;
void collectPacss();
/**
*
* @param emamNo
@ -13,6 +18,13 @@ public interface IBgtsService {
*/
void collectByExamNo(String emamNo, String empId) throws Exception;
/**
*
* @param startDate
* @param endDate
*/
void collectByDate(String startDate,String endDate,String collectorId);
/**
*
*/
@ -22,6 +34,4 @@ public interface IBgtsService {
*
*/
void timerCollect();
String test(String collectSubId);
}

@ -1,15 +1,10 @@
package com.docus.bgts.facade;
import java.util.Date;
import java.util.List;
import java.util.Map;
public interface IMzSyncService {
/**
*
*/
void syncIntegrality();
/**
*
*/
boolean addSyncIntegrality(String startDate, String endDate);
List<Map> getCompleteIntegrity(List<String> jzhs);
}

@ -14,7 +14,7 @@ public interface AfCollectAddMapper extends BaseMapper<AfCollectAdd> {
/**
*
*/
Date getTimeByAdd();
Date getTimeByAdd(Integer classIfy);
/**
* jzh
@ -24,6 +24,12 @@ public interface AfCollectAddMapper extends BaseMapper<AfCollectAdd> {
*/
List<String> listJzh(@Param("pageNumber") int pageNumber,@Param("pageSize") Integer pageSize);
/**
* jzh
* @param jzh
* @return
*/
Map<String,Date> selectDate(@Param("jzh") String jzh);
/**
*
* @param mzSyncs

@ -3,7 +3,12 @@ package com.docus.bgts.mapper.dbmysql;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docus.bgts.entity.AfCollectTask;
import com.docus.bgts.entity.JzhListSync;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -20,4 +25,45 @@ public interface AfCollectTaskMapper extends BaseMapper<AfCollectTask> {
* @return
*/
String getpatientIdByEmpId(@Param("jzh") String empId);
String getPatientIdByInpatientNo(@Param("inPatientNo") String inPatientNo,@Param("visitId") String visitId);
String getJzhByInpatientNo(@Param("inPatientNo") String inPatientNo,@Param("visitId") String visitId);
String getJzhByJzh(@Param("jzh") String jzh);
/**
* jzh
* @param startDate
* @param endDate
* @return
*/
List<Map> getjzhByDate(@Param("startDate") String startDate, @Param("endDate") String endDate, @RequestParam("size") int size, @RequestParam("current") int current);
/**
*
* @param patientIds
* @param collectorId
* @return
*/
List<String> getC1ByPatientId(@Param("patientIds") List<String> patientIds,@Param("collectorId") String collectorId);
/**
* patient_id
* @param C1s
* @return
*/
List<String> getPatientIdByC1(@Param("C1s") List<String> C1s);
/**
* jzh
* @param patientIds
* @return
*/
List<String> getJzhByPatientId(@Param("patientIds") List<String> patientIds);
/**
*
* @param jzhs
* @return
*/
List<JzhListSync> selectListByJzhs(@Param("jzhs") List<String> jzhs);
}

@ -8,8 +8,6 @@ import java.util.List;
public interface MzSyncMapper {
List<MzSync> listMzSync(@Param("jzhs") List<String> jzhs,
@Param("front") int front ,
@Param("later") int later,
@Param("tableName") String tableName,
@Param("tableNamespace") String tableNamespace);

@ -9,14 +9,14 @@ import com.docus.bgts.mapper.dbmysql.AfCollectTaskMapper;
import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectMapper;
import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectSubMapper;
import com.docus.bgts.mapper.dboracle.TestMapper;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* <p>
@ -29,6 +29,8 @@ import java.util.List;
@Service
public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, AfCollectTask> implements IAfCollectTaskService {
public static int MAX_SIZE_PER_TIME = 10;
@Autowired
TestMapper testMapper;
@ -49,8 +51,76 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
@Override
public void insert(ReportDownDto reportDownDto) {
synchronized (this) {
try {
AfCollectTask afCollectTask;
String patientId = getpatientIdByEmpId(reportDownDto.getPatient().getJzh());
if (StringUtils.isBlank(patientId)) {
throw new RuntimeException("操作的病案信息不存在");
}
Date date = new Date();
Integer save = null;
List<ReportDownScanFileDto> scanfiles = reportDownDto.getScanfiles();
for (ReportDownScanFileDto scanfile : scanfiles) {
// 判断任务是否已存在
afCollectTask = afCollectTaskMapper.selectOne(new QueryWrapper<AfCollectTask>().eq("C1", scanfile.getSerialnum()).eq("sysflag", reportDownDto.getCollectorid()));
if (afCollectTask == null) {
//不存在 新增
afCollectTask = new AfCollectTask();
afCollectTask.setPatientId(patientId);
afCollectTask.setSysflag(reportDownDto.getCollectorid());
afCollectTask.setState("0");
afCollectTask.setSyncTime(date);
afCollectTask.setC1(scanfile.getSerialnum());
afCollectTask.setC2(scanfile.getFiletitle());
afCollectTask.setC3(reportDownDto.getPatient().getJzh());
save = afCollectTaskMapper.insert(afCollectTask);
if (save <= 0) {
throw new RuntimeException("插入病案任务表数据出错");
} else {
log.warn("插入病案成功");
}
} else {
//存在就修改
afCollectTask.setPatientId(patientId);
afCollectTask.setSysflag(reportDownDto.getCollectorid());
afCollectTask.setState("0");
afCollectTask.setSyncTime(date);
afCollectTask.setC1(scanfile.getSerialnum());
afCollectTask.setC2(scanfile.getFiletitle());
save = afCollectTaskMapper.updateById(afCollectTask);
log.warn("修改病案成功");
}
scanfile.setTaskid(afCollectTask.getId());
}
reportDownDto.setScanfiles(scanfiles);
} catch (Exception e) {
log.error(reportDownDto.getPatient().getJzh() + "插入任务表出错! " + e.getMessage());
}
}
}
@Override
public String getJzhByInpatientNo(String inPatientNo, String visitId) {
return afCollectTaskMapper.getJzhByInpatientNo(inPatientNo,visitId);
}
@Override
public String getJzhByJzh(String jzh) {
return afCollectTaskMapper.getJzhByJzh(jzh);
}
@Override
public void insertServer(ReportDownDto reportDownDto) {
synchronized (this) {
String patientId;
AfCollectTask afCollectTask;
String patientId = getpatientIdByEmpId(reportDownDto.getPatient().getJzh());
if (StringUtils.isBlank(reportDownDto.getPatient().getJzh())) {
patientId = getPatientIdByInpatientNo(reportDownDto.getPatient().getInPatientNo(), reportDownDto.getPatient().getVisitId());
} else {
patientId = getpatientIdByEmpId(reportDownDto.getPatient().getJzh());
}
if (StringUtils.isBlank(patientId)) {
throw new RuntimeException("操作的病案信息不存在");
}
@ -73,7 +143,7 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
save = afCollectTaskMapper.insert(afCollectTask);
if (save <= 0) {
throw new RuntimeException("插入病案任务表数据出错");
}else {
} else {
log.warn("插入病案成功");
}
@ -92,6 +162,7 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
}
reportDownDto.setScanfiles(scanfiles);
}
}
@Override
public void updateInterfaceCollect(String collectSubId, int state) {
@ -119,4 +190,108 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
}
@Override
public List<Map> getjzhByDate(String startDate, String endDate,int size,int current) {
List<Map> patientIds = afCollectTaskMapper.getjzhByDate(startDate, endDate,size,current);
return patientIds;
}
@Override
public List<String> getC1ByPatientId(List<String> patientIds, String collectorId) {
List<List<String>> batchPatientIds = Lists.partition(patientIds, MAX_SIZE_PER_TIME);
List<String> c1s = new ArrayList<>();
for (List<String> batchPatientId : batchPatientIds) {
List<String> c1 = afCollectTaskMapper.getC1ByPatientId(batchPatientId, collectorId);
if (c1 != null && c1.size() != 0 ) {
for (String s : c1) {
c1s.add(s);
}
}
}
return c1s;
}
@Override
public List<String> getPatientIdByC1(List<String> C1s) {
List<List<String>> batchPatientIds = Lists.partition(C1s, MAX_SIZE_PER_TIME);
List<String> patientIds = new ArrayList<>();
for (List<String> batchC1s : batchPatientIds) {
List<String> patientId = afCollectTaskMapper.getPatientIdByC1(batchC1s);
if (patientId != null && patientId.size() != 0 ) {
for (String s : patientId) {
patientIds.add(s);
}
}
}
return patientIds;
}
@Override
public List<String> getJzhByPatientId(List<String> patientIds) {
List<String> jzhs = new ArrayList<>();
List<List<String>> batchPatientIds = Lists.partition(patientIds, MAX_SIZE_PER_TIME);
for (List<String> batchPatientId : batchPatientIds) {
List<String> jzh = afCollectTaskMapper.getJzhByPatientId(batchPatientId);
if (jzh != null && jzh.size() !=0 ) {
for (String s : jzh) {
jzhs.add(s);
}
}
}
return jzhs;
}
@Override
public String getPatientIdByInpatientNo(String inPatientNo, String visitId) {
return afCollectTaskMapper.getPatientIdByInpatientNo(inPatientNo, visitId);
}
/**
* jzh
* @param jzhs
* @return
*/
@Override
public List<Map> getCompleteIntegrity(List<String> jzhs) {
//根据记帐号查询任务完成情况
List<JzhListSync> taskList = afCollectTaskMapper.selectListByJzhs(jzhs);
List<Map> maps = new ArrayList<>();
if(!CollectionUtils.isEmpty(taskList)){
//遍历判断完整性
for(String jzh : jzhs){
//定义不完整描述
StringBuilder integrity = new StringBuilder();
for(JzhListSync jzhListSync : taskList){
if(jzhListSync.getJzh().equals(jzh)){
//获取jzh对应任务明细集合
List<TaskDetail> taskDetails = jzhListSync.getTaskDetails();
for(TaskDetail taskDetail : taskDetails) {
//获取完成状态
String state = taskDetail.getState();
if (StringUtils.isBlank(state) || !"3".equals(state)){
//未完成状态
if(StringUtils.isNotBlank(integrity)){
integrity.append(",");
}
integrity.append(taskDetail.getFileTitle()).append("缺失");
}
}
break;
}
}
//定义完整性map
Map<String,String> map = new HashMap<>();
if(StringUtils.isBlank(integrity)){
integrity = new StringBuilder("完整");
}
map.put("jzh",jzh);
map.put("file_title",integrity.toString());
maps.add(map);
}
}
return maps;
}
}

@ -1,33 +1,42 @@
package com.docus.bgts.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.docus.bgts.entity.*;
import com.docus.bgts.enums.Codes;
import com.docus.bgts.facade.IAfCollectTaskService;
import com.docus.bgts.facade.IBgtsService;
import com.docus.bgts.mapper.dbmysql.AfCollectAddMapper;
import com.docus.bgts.mapper.dbmysql.AfCollectTaskMapper;
import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectSubMapper;
import com.docus.bgts.mapper.dbmysql.MrReportErrorMapper;
import com.docus.bgts.mapper.dboracle.VDocumentPdfMapper;
import com.docus.bgts.utils.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.ByteArrayInputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadPoolExecutor;
@Service
public class BgtsServiceImpl implements IBgtsService {
@ -35,6 +44,8 @@ public class BgtsServiceImpl implements IBgtsService {
private String wsUrl;
@Value("${ws.localMethod}")
private String wsLocalMethod;
@Value("${ws.LocalMethodNj:null}")
private String wsLocalMethodNj;
private Logger logger = LogManager.getLogger(BgtsServiceImpl.class);
@ -53,18 +64,76 @@ public class BgtsServiceImpl implements IBgtsService {
@Autowired
AfCollectAddMapper afCollectAddMapper;
@Autowired
AfCollectTaskMapper afCollectTaskMapper;
@Autowired
private ThreadPoolExecutor threadPoolExecutor;
@Override
public void collect(String empId) throws Exception {
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
List<String[]> exams = new ArrayList<>();
//通过empId获取报告单号集合
if (collectorid.equals("14")){
exams = getExamNoNj(empId);
}else {
exams = getExamNo(empId);
}
//获取插入表数据
ReportDownDto reportDownDto = getUrlCreateReportDto(exams, empId);
//插入文件af_collect_task表数据
afCollectTaskService.insert(reportDownDto);
//通过报告单号集合采集
collectExams(exams, empId, reportDownDto);
}
@Override
public void collectPacs(String empId, String admissDate, String disDate, String times) throws Exception {
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
Date ad = sim.parse(admissDate);
Date di = sim.parse(disDate);
String admiss = sim.format(ad);
String dis = sim.format(di);
//通过empId获取报告单号集合
List<String[]> exams = getExamNo(empId, admiss, dis);
String jzh = afCollectTaskService.getJzhByInpatientNo(empId,times);
if (null == jzh) {
logger.info("通过住院号与住院次数未匹配到患者");
return;
}
//获取插入表数据
ReportDownDto reportDownDto = getUrlCreateReportDto(exams, jzh);
//插入文件af_collect_task表数据
afCollectTaskService.insert(reportDownDto);
//通过报告单号集合采集
collectExams(exams, empId, reportDownDto);
}
@Override
public void collectEcg(String empId, String admissDate, String disDate, String times) throws Exception {
Map<String, String> smCollectionTime = getSmCollectionTimeEcg(admissDate, disDate);
//通过empId获取报告单号集合
List<String[]> exams = getExamNo(empId);
List<String[]> exams = getExamNoEcg(empId, smCollectionTime.get("admissDate"), smCollectionTime.get("disDate"));
String jzh = afCollectTaskService.getpatientIdByEmpId(empId);
if (null == jzh) {
logger.info(empId+" 通过jzh未匹配到患者");
return;
}
//获取插入表数据
ReportDownDto reportDownDto = getUrlCreateReportDto(exams, empId);
//插入文件af_collect_task表数据
afCollectTaskService.insert(reportDownDto);
//通过报告单号集合采集
collectExams(exams, empId,reportDownDto);
collectExams(exams, empId, reportDownDto);
}
@Override
public void collectByExamNo(String emamNo, String empId) throws Exception {
String[] strings = new String[2];
@ -77,7 +146,7 @@ public class BgtsServiceImpl implements IBgtsService {
exams.add(strings);
//获取插入表数据
ReportDownDto reportDownDto = getUrlCreateReportDto(exams, empId);
collectExams(exams, empId,reportDownDto);
collectExams(exams, empId, reportDownDto);
}
@Override
@ -99,7 +168,161 @@ public class BgtsServiceImpl implements IBgtsService {
}
/**
*
*
*
* @param startDate
* @param endDate
*/
// private void collectByDates(String startDate, String endDate) {
// //页码
// int current;
// //每页10条数据
// int size;
// String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
// String assortid = String.valueOf(FileUtils.getJsonByName("assortid"));
// int filesource = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")));
// int filestoragetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")));
// Map<String, Object> headMap = new HashMap<>();
// headMap.put("Content-Type", "application/json");
// SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0);
// String indexFlag = String.valueOf(FileUtils.getJsonByName("indexFlag"));
// String serialnum = String.valueOf(FileUtils.getJsonByName("serialnum"));
// String filetitle = String.valueOf(FileUtils.getJsonByName("filetitle"));
// String downurl = String.valueOf(FileUtils.getJsonByName("downurl"));
// List<String> fieldArr = new ArrayList<>();
// fieldArr.add(indexFlag);
// fieldArr.add(serialnum);
// if (StringUtils.isNotBlank(filetitle)) {
// fieldArr.add(filetitle);
// }
// fieldArr.add(downurl);
// String namespace = String.valueOf(FileUtils.getJsonByName("namespace"));
// String tableName = String.valueOf(FileUtils.getJsonByName("tableName"));
// String collectTimeName = String.valueOf(FileUtils.getJsonByName("collectTimeName"));
// List<Map> maps;
// //2.获取第一页10条数据开始采集
// for (current = 1; ; current++) {
// size = 10 * current;
// maps = vDocumentPdfMapper.listCollectPage(size - 10, size, startDate, endDate, namespace, tableName, fieldArr, collectTimeName);
// logger.info("处理采集数据:" + maps);
// if (null == maps || maps.size() <= 0) {
// break;
// }
// maps:
// for (Map map : maps) {
// //获取过滤报告单
// String[] filterReports = String.valueOf(FileUtils.getJsonByName("filterReport")).split(",");
// if (filterReports.length > 0) {
// for (String filterReport : filterReports) {
// //需要过滤的报告单存在则不采集
// if (String.valueOf(map.get(filetitle)).equals(filterReport)) {
// continue maps;
// }
// }
// }
// ReportDownDto reportDownDto = new ReportDownDto();
// reportDownDto.setCollectorid(collectorid);
// reportDownDto.setAssortid(assortid);
// ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto();
// reportDownPatientDto.setJzh(String.valueOf(map.get(indexFlag)));
// reportDownDto.setPatient(reportDownPatientDto);
//
// List<ReportDownScanFileDto> reportDownScanFileDtos = new ArrayList<>();
// ReportDownScanFileDto reportDownScanFileDto = new ReportDownScanFileDto();
// reportDownScanFileDto.setDownurl(String.valueOf(map.get(downurl)));
// reportDownScanFileDto.setFilestoragetype(filestoragetype);
// reportDownScanFileDto.setFilesource(filesource);
// reportDownScanFileDto.setFiletitle(map.get(filetitle) == null ? "重症" + (System.currentTimeMillis()) : String.valueOf(map.get(filetitle)));
// reportDownScanFileDto.setSerialnum(StringUtils.isNotBlank(String.valueOf(map.get(serialnum))) ? String.valueOf(map.get(serialnum)) : String.valueOf(idWorker.nextId()));
// reportDownScanFileDtos.add(reportDownScanFileDto);
// reportDownDto.setScanfiles(reportDownScanFileDtos);
// String post;
// try {
// afCollectTaskService.insert(reportDownDto);
// //String uploadConnector = String.valueOf(FileUtils.getJsonByName("uploadConnector"));
// //调用下载接口
// post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class));
// Map resMap = JSON.parseObject(post, Map.class);
// logger.info(reportDownDto);
// if (String.valueOf(resMap.get("code")).equals("500")) {
// throw new RuntimeException(String.valueOf(resMap.get("msg")));
// }
// } catch (Exception e) {
// //打印错误日志
// logger.info("采集出错:" + reportDownDto);
// logger.info(e);
// String stackTrace = ExceptionUtils.getStackTrace(e);
// logger.info("错误信息----------" + stackTrace);
// addMrReportErrorLog(reportDownDto);
// e.printStackTrace();
// }
// }
// }
// }
// 时间
private static List<String> date = new ArrayList<>();
// 上次任务执行时间
private static int currentIndex = 0;
private static void initDate() throws Exception {
String configStart = String.valueOf(FileUtils.getJsonByName("collectStartDate"));
String configEnd = String.valueOf(FileUtils.getJsonByName("collectEndDate"));
if (StrUtil.isBlank(configStart) || StrUtil.isBlank(configEnd)) {
throw new RuntimeException("check homeQualitySet.json collectStartDate AND collectEndDate confg");
}
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse(configStart, dtf);
LocalDate end = LocalDate.parse(configEnd);
while (!localDate.isAfter(end)) {
date.add(localDate.toString());
localDate = localDate.plusDays(1);
}
}
public void collectPacss(){
logger.info("按需采集任务执行----");
// if (CollUtil.isEmpty(date)) {
// try {
// initDate();
// } catch (Exception e) {
// logger.error(e.getMessage());
// return;
// }
// }
// if (currentIndex >= date.size()) {
// currentIndex = 0;
// }
logger.info("index:{},Thread {}", currentIndex, Thread.currentThread().getName());
// String collectStartDate = date.get(currentIndex);
// String collectEndDate = collectStartDate + "\t23:59:59";
String collectStartDate = String.valueOf(FileUtils.getJsonByName("collectStartDate"))+"\t00:00:00";
String collectEndDate = String.valueOf(FileUtils.getJsonByName("collectEndDate"))+"\t23:59:59";
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
CountDownLatch countDownLatch = new CountDownLatch(1);
threadPoolExecutor.execute(() -> {
try {
collectByDate(collectStartDate, collectEndDate, collectorid);
}catch (Exception e) {
logger.info("按需采集出错{}",e.getMessage());
}
countDownLatch.countDown();
});
try {
countDownLatch.await();
} catch (Exception e) {
logger.error("JUC countDownLatch error {}", e.getMessage());
}
logger.info("{},采集结束----", collectStartDate);
// currentIndex++;
System.gc();
}
/**
*
*
* @param startDate
* @param endDate
@ -118,24 +341,32 @@ public class BgtsServiceImpl implements IBgtsService {
SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0);
String indexFlag = String.valueOf(FileUtils.getJsonByName("indexFlag"));
String serialnum = String.valueOf(FileUtils.getJsonByName("serialnum"));
String filetitle = String.valueOf(FileUtils.getJsonByName("filetitle"));
//String filetitle = String.valueOf(FileUtils.getJsonByName("filetitle"));
String downurl = String.valueOf(FileUtils.getJsonByName("downurl"));
List<String> fieldArr=new ArrayList<>();
String inPatientNo = String.valueOf(FileUtils.getJsonByName("inPatientNo"));
String visitId = String.valueOf(FileUtils.getJsonByName("visitId"));
String inJzh = String.valueOf(FileUtils.getJsonByName("jzh"));
List<String> fieldArr = new ArrayList<>();
fieldArr.add(indexFlag);
fieldArr.add(serialnum);
if(StringUtils.isNotBlank(filetitle)){
fieldArr.add(filetitle);
}
fieldArr.add(inPatientNo);
fieldArr.add(visitId);
fieldArr.add(inJzh);
// if(StringUtils.isNotBlank(filetitle)){
// fieldArr.add(filetitle);
// }
fieldArr.add(downurl);
String namespace = String.valueOf(FileUtils.getJsonByName("namespace"));
String tableName = String.valueOf(FileUtils.getJsonByName("tableName"));
String collectTimeName = String.valueOf(FileUtils.getJsonByName("collectTimeName"));
List<Map> maps;
//2.获取第一页10条数据开始采集
logger.info("开始时间-----" + startDate + "结束时间-----" + "\n" + endDate);
for (current = 1; ; current++) {
size = 10 * current;
maps = vDocumentPdfMapper.listCollectPage(current, size, startDate, endDate, namespace, tableName, fieldArr, collectTimeName);
logger.info("处理采集数据:"+maps);
maps = vDocumentPdfMapper.listCollectPage(size - 10, size, startDate, endDate, namespace, tableName, fieldArr, collectTimeName);
logger.info("处理采集数据:" + maps);
if (null == maps || maps.size() <= 0) {
break;
}
@ -143,30 +374,49 @@ public class BgtsServiceImpl implements IBgtsService {
ReportDownDto reportDownDto = new ReportDownDto();
reportDownDto.setCollectorid(collectorid);
reportDownDto.setAssortid(assortid);
ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto();
reportDownPatientDto.setJzh(String.valueOf(map.get(indexFlag)));
if (collectorid.equals("15")){
reportDownPatientDto.setJzh(String.valueOf(map.get(inJzh)));
}else {
reportDownPatientDto.setInPatientNo(String.valueOf(map.get(inPatientNo)));
reportDownPatientDto.setVisitId(String.valueOf(map.get(visitId)));
}
reportDownDto.setPatient(reportDownPatientDto);
// reportDownPatientDto.setJzh(String.valueOf(map.get(indexFlag)));
List<ReportDownScanFileDto> reportDownScanFileDtos = new ArrayList<>();
ReportDownScanFileDto reportDownScanFileDto = new ReportDownScanFileDto();
reportDownScanFileDto.setDownurl(String.valueOf(map.get(downurl)));
reportDownScanFileDto.setFilestoragetype(filestoragetype);
reportDownScanFileDto.setFilesource(filesource);
reportDownScanFileDto.setFiletitle(map.get(filetitle)==null?"重症"+(System.currentTimeMillis()):String.valueOf(map.get(filetitle)));
reportDownScanFileDto.setSerialnum(StringUtils.isNotBlank(String.valueOf(map.get(serialnum)))?String.valueOf(map.get(serialnum)):String.valueOf(idWorker.nextId()));
//reportDownScanFileDto.setFiletitle(map.get(filetitle)==null?"重症"+(System.currentTimeMillis()):String.valueOf(map.get(filetitle)));
reportDownScanFileDto.setFiletitle(StringUtils.isNotBlank(String.valueOf(map.get(serialnum))) ? String.valueOf(map.get(serialnum)) : String.valueOf(idWorker.nextId()));
reportDownScanFileDto.setSerialnum(StringUtils.isNotBlank(String.valueOf(map.get(serialnum))) ? String.valueOf(map.get(serialnum)) : String.valueOf(idWorker.nextId()));
reportDownScanFileDtos.add(reportDownScanFileDto);
reportDownDto.setScanfiles(reportDownScanFileDtos);
String post;
try {
afCollectTaskService.insert(reportDownDto);
post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class));
Map resMap = JSON.parseObject(post, Map.class);
if (String.valueOf(resMap.get("code")).equals("500")) {
throw new RuntimeException(String.valueOf(resMap.get("msg")));
afCollectTaskService.insertServer(reportDownDto);
//String uploadConnector = String.valueOf(FileUtils.getJsonByName("uploadConnector"));
String jzh = afCollectTaskService.getJzhByJzh(reportDownDto.getPatient().getJzh());
if (null != jzh && !("").equals(jzh)) {
reportDownPatientDto.setJzh(jzh);
reportDownDto.setPatient(reportDownPatientDto);
post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class));
Map resMap = JSON.parseObject(post, Map.class);
logger.info(reportDownDto.getPatient().getJzh()+" 调用下载参数:--\n"+JSON.parseObject(JSON.toJSONString(reportDownDto)));
if (String.valueOf(resMap.get("code")).equals("500")) {
logger.info(reportDownDto.getPatient().getJzh()+" 下载失败!");
throw new RuntimeException(String.valueOf(resMap.get("msg")));
}else {
logger.info(reportDownDto.getPatient().getJzh()+" 下载成功!");
}
}
} catch (Exception e) {
logger.info("采集出错:"+reportDownDto);
//打印错误日志
logger.info(reportDownDto.getPatient().getJzh()+" 采集出错:" + reportDownDto +e.getMessage());
// String stackTrace = ExceptionUtils.getStackTrace(e);
// logger.info("错误信息----------"+stackTrace);
addMrReportErrorLog(reportDownDto);
e.printStackTrace();
}
@ -177,8 +427,14 @@ public class BgtsServiceImpl implements IBgtsService {
@Override
public void timerCollect() {
logger.info("------采集器开始采集---------");
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
//1.获取上次采集时间
Date time = afCollectAddMapper.getTimeByAdd();
Date time;
if (collectorid.equals("5")) {
time = afCollectAddMapper.getTimeByAdd(5);
} else {
time = afCollectAddMapper.getTimeByAdd(15);
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startDate = simpleDateFormat.format(time);
//当前日期
@ -190,13 +446,6 @@ public class BgtsServiceImpl implements IBgtsService {
logger.info("--------采集器结束采集------");
}
@Override
public String test(String collectSubId) {
AfInterfaceCollectSub x = afInterfaceCollectSubMapper.selectById(collectSubId);
System.out.println(x);
return x.toString();
}
/**
*
*/
@ -204,7 +453,7 @@ public class BgtsServiceImpl implements IBgtsService {
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
AfCollectAdd afCollectAdd = new AfCollectAdd();
afCollectAdd.setBeginStageDate(date);
afCollectAddMapper.update(afCollectAdd,new QueryWrapper<AfCollectAdd>().eq("classify",collectorid));
afCollectAddMapper.update(afCollectAdd, new QueryWrapper<AfCollectAdd>().eq("classify", collectorid));
}
/**
@ -227,14 +476,15 @@ public class BgtsServiceImpl implements IBgtsService {
* @param exams
* @param empId
*/
private void collectExams(List<String[]> exams, String empId,ReportDownDto reportDownDto) throws Exception {
private void collectExams(List<String[]> exams, String empId, ReportDownDto reportDownDto) throws Exception {
//调用上传接口
Map<String, Object> headMap = new HashMap<>();
headMap.put("Content-Type", "application/json");
String post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class));
Map resMap = JSON.parseObject(post, Map.class);
System.out.println(resMap);
logger.info(empId+" 调用下载Map参数{}",JSON.toJSONString(reportDownDto));
if (String.valueOf(resMap.get("code")).equals("500")) {
logger.info(empId+"调用下载服务错误: "+(resMap.get("msg")));
throw new RuntimeException(String.valueOf(resMap.get("msg")));
}
}
@ -260,15 +510,29 @@ public class BgtsServiceImpl implements IBgtsService {
int filesource = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")));
int filestoragetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")));
for (String[] exam : exams) {
reportDownScanFileDto = getScanByExam(exam);
reportDownScanFileDto.setFilesource(filesource);
reportDownScanFileDto.setFilestoragetype(filestoragetype);
reportDownScanFileDtos.add(reportDownScanFileDto);
try {
reportDownScanFileDto = getScanByExam(exam);
reportDownScanFileDto.setFilesource(filesource);
reportDownScanFileDto.setFilestoragetype(filestoragetype);
//过滤pacs中病理报告
if (collectorid.equals("3")) {
if (!reportDownScanFileDto.getDownurl().contains("病理")
&& !reportDownScanFileDto.getDownurl().contains("胃肠镜")
&& !reportDownScanFileDto.getDownurl().contains("心电")) {
reportDownScanFileDtos.add(reportDownScanFileDto);
}
}else {
reportDownScanFileDtos.add(reportDownScanFileDto);
}
}catch (Exception e){
logger.error(exam[0]+"调用明细错误信息-----"+e.getMessage());
}
}
reportDownDto.setScanfiles(reportDownScanFileDtos);
return reportDownDto;
}
/**
* ReportDownScanFileDto
*
@ -276,19 +540,26 @@ public class BgtsServiceImpl implements IBgtsService {
* @return
*/
private ReportDownScanFileDto getScanByExam(String[] exam) throws Exception {
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
ReportDownScanFileDto reportDownScanFileDto = new ReportDownScanFileDto();
reportDownScanFileDto.setSerialnum(exam[0]);
reportDownScanFileDto.setSerialnum(exam[0]);
reportDownScanFileDto.setFiletitle(exam[1]);
XmlUtils reqXmlUtils=new XmlUtils(FileUtils.getXmlDetailsPath());
XmlUtils reqXmlUtils = new XmlUtils(FileUtils.getXmlDetailsPath());
Element esbEntry = reqXmlUtils.getMsgElement();
esbEntry.element("EXAM_NO").setText(exam[0]);
String resXml = invokeWs(reqXmlUtils.getDocument().asXML());
String resXml;
logger.info("明细入参------------" + reqXmlUtils.getDocument().asXML());
if (collectorid.equals("14")) {
resXml = invokeWsNj(reqXmlUtils.getDocument().asXML());
} else {
resXml = invokeWs(reqXmlUtils.getDocument().asXML());
}
//解析XML
XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(resXml.getBytes("UTF-8")));
String success = xmlUtils.isSuccess();
if(!success.equals("ok")){
logger.info("发送错误:"+success);
throw new RuntimeException(success);
if (!success.equals("ok")) {
logger.info("发送错误:" + success);
throw new RuntimeException("发送错误:" + success);
}
List<String> dis = (List<String>) FileUtils.getJsonByName("bgtsDetailRespon");
//数据所在节点
@ -297,6 +568,8 @@ public class BgtsServiceImpl implements IBgtsService {
return reportDownScanFileDto;
}
/**
* empId
*
@ -305,10 +578,64 @@ public class BgtsServiceImpl implements IBgtsService {
*/
private List<String[]> getExamNo(String empId) throws Exception {
List<String[]> exams = new ArrayList<>();
XmlUtils reqXmlUtils = new XmlUtils(FileUtils.getXmlPath());
Element reqElement = reqXmlUtils.getMsgElement();
Map<String, Date> map = afCollectAddMapper.selectDate(empId);
reqElement.element("INHOSP_NO").setText(empId);
reqElement.element("BEGIN_DATE").setText(new SimpleDateFormat(FileUtils.getJsonByName("dateFormat").toString()).format(map.get("admiss_date")));
reqElement.element("END_DATE").setText(new SimpleDateFormat(FileUtils.getJsonByName("dateFormat").toString()).format(map.get("dis_date")));
logger.info("-------根据患者主索引号查询多个报告单号,地址:" + wsUrl + ",方法:" + wsLocalMethod + "---------");
String xml = reqXmlUtils.getDocument().asXML();
logger.info("---------------------------");
logger.info(xml);
logger.info("----------------------------");
String resXml = invokeWs(xml);
logger.info("---------返回值-------------");
logger.info(resXml);
logger.info("-----------------------------");
//解析XML
XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(resXml.getBytes("UTF-8")));
String success = xmlUtils.isSuccess();
if (!success.equals("ok")) {
logger.info("发送错误:" + success);
throw new RuntimeException(success);
}
XmlUtils reqXmlUtils=new XmlUtils(FileUtils.getXmlPath());
List<String> dis = (List<String>) FileUtils.getJsonByName("bgtsRespon");
//数据所在节点
Element element = xmlUtils.getElement(dis);
List<Element> examInfos = element.elements("ExamInfo");
Element examNo;
String[] key;
for (Element examInfo : examInfos) {
key = new String[2];
examNo = examInfo.element(String.valueOf(FileUtils.getJsonByName("examNo")));
if (examNo != null) {
key[0] = examNo.getText();
}
Element examItemInfo = examInfo.element("ExamItemInfo");
if (examItemInfo != null) {
key[1] = examItemInfo.element(String.valueOf(FileUtils.getJsonByName("examItemName"))).getText();
}
exams.add(key);
}
return exams;
}
/**
* empId
*
* @param empId
* @return
*/
private List<String[]> getExamNoNj(String empId) throws Exception {
List<String[]> exams = new ArrayList<>();
XmlUtils reqXmlUtils = new XmlUtils(FileUtils.getXmlPath());
Element reqElement = reqXmlUtils.getMsgElement();
Map<String, Date> map = afCollectAddMapper.selectDate(empId);
reqElement.element("INHOSP_NO").setText(empId);
reqElement.element("BEGIN_DATE").setText(new SimpleDateFormat(FileUtils.getJsonByName("dateFormat").toString()).format(map.get("admiss_date")));
reqElement.element("END_DATE").setText(new SimpleDateFormat(FileUtils.getJsonByName("dateFormat").toString()).format(map.get("dis_date")));
logger.info("-------根据患者主索引号查询多个报告单号,地址:" + wsUrl + ",方法:" + wsLocalMethod + "---------");
String xml = reqXmlUtils.getDocument().asXML();
logger.info("---------------------------");
@ -321,8 +648,167 @@ public class BgtsServiceImpl implements IBgtsService {
//解析XML
XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(resXml.getBytes("UTF-8")));
String success = xmlUtils.isSuccess();
if(!success.equals("ok")){
logger.info("发送错误:"+success);
if (!success.equals("ok")) {
logger.info("发送错误:" + success);
throw new RuntimeException(success);
}
String examNo;
String[] key;
String examName;
List<String> dis = (List<String>) FileUtils.getJsonByName("bgtsRespon");
//数据所在节点
Element element = xmlUtils.getElement(dis);
List<Element> elements = element.elements("Msg");
for (int i = 0; i < elements.size(); i++) {
List<Element> examInfo = elements.get(i).elements("ExamInfo");
for (int j = 0; j < examInfo.size(); j++) {
examNo = examInfo.get(j).element(String.valueOf(FileUtils.getJsonByName("examNo"))).getText();
key = new String[2];
if (examNo != null) {
key[0] = examNo;
}
Element examItemInfo = examInfo.get(j).element("ExamItemInfo");
if (examItemInfo != null) {
key[1] = examItemInfo.element(String.valueOf(FileUtils.getJsonByName("examItemName"))).getText();
}
exams.add(key);
logger.info("报告单号---{}",examNo);
}
}
return exams;
}
public static Map<String, String> getSmCollectionTime(String admissDate, String disDate) {
Date dBefore;
Calendar calendar = Calendar.getInstance(); //得到日历
Map<String, String> map = new HashMap<>();
try {
calendar.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(admissDate));//把当前时间赋给日历
calendar.add(Calendar.HOUR, -6); //设置为前6小时
dBefore = calendar.getTime(); //得到前一天的时间
Calendar calendar1 = Calendar.getInstance(); //得到日历
calendar1.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(disDate));//把当前时间赋给日历
calendar1.add(Calendar.HOUR, 6); //设置为后6小时
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置时间格式
String defaultStartDate = sdf.format(dBefore); //格式化前6小时
String defaultEndDate = sdf.format(calendar1.getTime()); //格式化前6小时
map.put("admissDate", defaultStartDate);
map.put("disDate", defaultEndDate);
} catch (ParseException e) {
e.printStackTrace();
}
return map;
}
public static Map<String, String> getSmCollectionTimeEcg(String admissDate, String disDate) {
Date dBefore;
Calendar calendar = Calendar.getInstance(); //得到日历
Map<String, String> map = new HashMap<>();
try {
calendar.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(admissDate));//把当前时间赋给日历
calendar.add(Calendar.HOUR, -6); //设置为前6小时
dBefore = calendar.getTime(); //得到前一天的时间
Calendar calendar1 = Calendar.getInstance(); //得到日历
calendar1.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(disDate));//把当前时间赋给日历
calendar1.add(Calendar.HOUR, 30); //设置为后30小时
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置时间格式
String defaultStartDate = sdf.format(dBefore); //格式化前6小时
String defaultEndDate = sdf.format(calendar1.getTime()); //格式化前6小时
map.put("admissDate", defaultStartDate);
map.put("disDate", defaultEndDate);
} catch (ParseException e) {
e.printStackTrace();
}
return map;
}
/**
* empId pacs
*
* @param empId
* @return
*/
private List<String[]> getExamNo(String empId, String admissDate, String disDate) throws Exception {
List<String[]> exams = new ArrayList<>();
// Map<String, String> Time = getSmCollectionTime(admissDate, disDate);
XmlUtils reqXmlUtils = new XmlUtils(FileUtils.getXmlPath());
Element reqElement = reqXmlUtils.getMsgElement();
reqElement.element("INHOSP_INDEX_NO").setText(empId);
reqElement.element("BEGIN_DATE").setText(String.valueOf(admissDate));
reqElement.element("END_DATE").setText(String.valueOf(disDate));
logger.info("-------根据患者主索引号查询多个报告单号,地址:" + wsUrl + ",方法:" + wsLocalMethod + "---------");
String xml = reqXmlUtils.getDocument().asXML();
logger.info("---------------------------");
logger.info(xml);
logger.info("----------------------------");
String resXml = invokeWs(xml);
logger.info("---------返回值-------------");
logger.info(resXml);
logger.info("-----------------------------");
//解析XML
XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(resXml.getBytes("UTF-8")));
String success = xmlUtils.isSuccess();
if (!success.equals("ok")) {
logger.info("发送错误:" + success);
throw new RuntimeException(success);
}
List<String> dis = (List<String>) FileUtils.getJsonByName("bgtsRespon");
//数据所在节点
Element element = xmlUtils.getElement(dis);
List<Element> examInfos = element.elements("ExamInfo");
Element examNo;
String[] key;
for (Element examInfo : examInfos) {
key = new String[2];
examNo = examInfo.element(String.valueOf(FileUtils.getJsonByName("examNo")));
List<Element> examItemInfo = examInfo.elements("ExamItemInfo");
for (Element element1 : examItemInfo) {
if (examNo != null) {
key[0] = examNo.getText();
}
key[1] = element1.element(String.valueOf(FileUtils.getJsonByName("examItemName"))).getText();
}
exams.add(key);
}
return exams;
}
/**
* empId
*
* @param empId
* @return
*/
private List<String[]> getExamNoEcg(String empId, String admissDate, String disDate) throws Exception {
List<String[]> exams = new ArrayList<>();
XmlUtils reqXmlUtils = new XmlUtils(FileUtils.getXmlPath());
Element reqElement = reqXmlUtils.getMsgElement();
reqElement.element("INHOSP_NO").setText(empId);
reqElement.element("BEGIN_DATE").setText(String.valueOf(admissDate));
reqElement.element("END_DATE").setText(String.valueOf(disDate));
logger.info("-------根据患者主索引号查询多个报告单号,地址:" + wsUrl + ",方法:" + wsLocalMethod + "---------");
String xml = reqXmlUtils.getDocument().asXML();
logger.info("---------------------------");
logger.info(xml);
logger.info("----------------------------");
String resXml = invokeWs(xml);
logger.info("---------返回值-------------");
logger.info(resXml);
logger.info("-----------------------------");
//解析XML
XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(resXml.getBytes("UTF-8")));
String success = xmlUtils.isSuccess();
if (!success.equals("ok")) {
logger.info("发送错误:" + success);
throw new RuntimeException(success);
}
List<String> dis = (List<String>) FileUtils.getJsonByName("bgtsRespon");
@ -347,6 +833,73 @@ public class BgtsServiceImpl implements IBgtsService {
}
/**
*
*
* @param startDate
* @param endDate
* @param collectorId
*/
public void collectByDate(String startDate, String endDate, String collectorId) {
logger.info("按需采集开始----------开始时间---" + startDate + "------结束时间---" + endDate);
//页码
int startrow;
//每页10条数据
int endrow = 10;
//2.获取第一页10条数据开始采集
try{
List<Map> patientIds;
for (startrow = 0; ; startrow += 10) {
patientIds = afCollectTaskService.getjzhByDate(startDate, endDate, startrow, endrow);
if (null == patientIds || patientIds.size() <= 0) {
logger.info("未查询到按需采集患者!");
break;
}
for (Map patientId : patientIds) {
if (patientId != null) {
try {
logger.info("按需采集------患者" + patientId.get("inpatient_no"));
logger.info("处理按需采集第" + startrow + "条数据----");
if (collectorId.equals("3")) {
collectPacs(String.valueOf(patientId.get("inpatient_no")), String.valueOf(patientId.get("admiss_date"))
, String.valueOf(patientId.get("dis_date")), String.valueOf(patientId.get("admiss_times")));
} else if (collectorId.equals("4") || collectorId.equals("23")) {
collectEcg(String.valueOf(patientId.get("jzh")), String.valueOf(patientId.get("admiss_date"))
, String.valueOf(patientId.get("dis_date")), String.valueOf(patientId.get("admiss_times")));
} else {
collect(String.valueOf(patientId.get("jzh")));
}
} catch (Exception e) {
logger.error("按需采集-患者inpatient_no{},collectPacs() Error:{}", patientId.get("inpatient_no"), e.getMessage());
}
}
}
patientIds.clear();
}
}catch (Exception e){
logger.error(e.getMessage());
}catch (Throwable t) {
t.printStackTrace();
logger.error("throwable{}", t.getMessage());
}
}
private static JaxWsDynamicClientFactory wsDynamicClientFactory = JaxWsDynamicClientFactory.newInstance();
private static volatile Client client = null;
private Client getClient() {
if (client == null) {
synchronized (this.getClass()) {
client = wsDynamicClientFactory.createClient(wsUrl);
}
}
return client;
}
/**
* web service
*
@ -356,14 +909,60 @@ public class BgtsServiceImpl implements IBgtsService {
*/
public String invokeWs(String xml) throws Exception {
logger.info("-----\n客户端调用服务端" + wsUrl + "方法:" + wsLocalMethod + "\n------------");
JAXDynamicClientFactory dcf = JAXDynamicClientFactory.newInstance();
Client client = dcf.createClient(wsUrl);
// JAXDynamicClientFactory dcf = JAXDynamicClientFactory.newInstance();
// Client client = dcf.createClient(wsUrl);
// LocalBusFactory.printTHREAD_BUSSES();
// JaxWsDynamicClientFactory wsDynamicClientFactory = JaxWsDynamicClientFactory.newInstance();
// logger.info("JaxWsDynamicClientFactory object created!");
// Client client = wsDynamicClientFactory.createClient(wsUrl);
Client client = this.getClient();
HTTPConduit conduit = (HTTPConduit) client.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(10000);
policy.setReceiveTimeout(10000);
conduit.setClient(policy);
logger.info("Client started!");
Object[] objects = client.invoke(wsLocalMethod, xml);
logger.info("Client invoke after!");
String str = objects[0].toString();
logger.info("----------结果---------");
logger.info(str);
// client.destroy();
logger.info("----------结果---------\n{}", str);
// logger.info(str);
return str;
}
/**
* web service
*
* @param xml
* @return
* @throws Exception
*/
public String invokeWsNj(String xml) throws Exception {
logger.info("-----\n客户端调用服务端" + wsUrl + "方法:" + wsLocalMethodNj + "\n------------");
// JAXDynamicClientFactory dcf = JAXDynamicClientFactory.newInstance();
// Client client = dcf.createClient(wsUrl);
// LocalBusFactory.printTHREAD_BUSSES();
// JaxWsDynamicClientFactory wsDynamicClientFactory = JaxWsDynamicClientFactory.newInstance();
// logger.info("JaxWsDynamicClientFactory object created!");
// Client client = wsDynamicClientFactory.createClient(wsUrl);
Client client = this.getClient();
HTTPConduit conduit = (HTTPConduit) client.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(10000);
policy.setReceiveTimeout(10000);
conduit.setClient(policy);
logger.info("Client started!");
Object[] objects = client.invoke(wsLocalMethodNj, xml);
logger.info("Client invoke after!");
String str = objects[0].toString();
// client.destroy();
logger.info("----------结果---------\n{}", str);
// logger.info(str);
return str;
}
}

@ -0,0 +1,133 @@
package com.docus.bgts.service;
import com.docus.bgts.facade.IAfCollectTaskService;
import com.docus.bgts.facade.IMzSyncService;
import com.docus.bgts.mapper.dbmysql.AfCollectAddMapper;
import com.docus.bgts.utils.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @author
* @description:
* @createTime 2022/5/2 10:34
*/
@Service
public class CheckIntegrityService {
private final Logger log = LoggerFactory.getLogger(getClass());
@Autowired
AfCollectAddMapper afCollectAddMapper;
@Autowired
IMzSyncService iMzSyncService;
@Autowired
IAfCollectTaskService afCollectTaskService;
/**
*
* @param startDate
* @param endDate
* @return
*/
public boolean addSyncIntegrality(String startDate,String endDate) {
//1
//定义是否更新采集时间
boolean flag = true;
log.info("增量完整性同步开始");
long startTime = System.currentTimeMillis();
//获取分页数
Integer pageSize = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("pageSize")));
List<String> jzhs;
int front;
for (int i = 0; ; i++) {
front = i * pageSize;
jzhs = afCollectAddMapper.listJzhAndAdd(front, pageSize, startDate,endDate);
if (jzhs.size() == 0) {
if(i == 0){
flag = false;
}
break;
} else {
//校验完整性
addSyncIntegralityByJzhsMethod(jzhs);
}
}
long endTime = System.currentTimeMillis();
log.info("增量完整性同步结束,程序执行时间为:" + (endTime - startTime) + "毫秒");
return flag;
}
/**
*
* @param jzhs
*/
public void addSyncIntegralityByJzhsMethod(List<String> jzhs) {
//处理完整性描述
List<Map> maps = getCompleteInegruty(jzhs);
//完整性检验写入
integralityBySyncs(maps);
log.info("本次成功同步数:" + maps.size());
}
/**
*
* @return
*/
private List<Map> getCompleteInegruty(List<String> jzhs){
//获取配置的校验完整性方式1:根据af_collect_task完成情况 2:梅州根据信息科提供任务视图
Integer checkIntegrityType = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("checkIntegrityType")));
if(null == checkIntegrityType){
throw new RuntimeException("homeQualitySet文件中校验方式checkIntegrityType需要配置");
}
List<Map> maps = new ArrayList<>();
if(checkIntegrityType == 1){
//根据af_collect_task校验完整性
maps = afCollectTaskService.getCompleteIntegrity(jzhs);
}else if(checkIntegrityType == 2){
//校验梅州完整性
maps = iMzSyncService.getCompleteIntegrity(jzhs);
}
return maps;
}
/**
*
* @param maps {"jzh":,"file_title"}
*/
private void integralityBySyncs(List<Map> maps) {
StringBuilder sql;
if (!CollectionUtils.isEmpty(maps)) {
sql = new StringBuilder();
for (Map map : maps) {
sql.append("update docus_medicalrecord.t_basic set integrity_desc=");
sql.append("'");
sql.append(map.get("file_title"));
sql.append("',update_time=now()");
sql.append(" where jzh=");
sql.append("'");
sql.append(map.get("jzh"));
sql.append("'");
sql.append(";");
}
System.out.println(sql);
afCollectAddMapper.dynamicSql(sql.toString());
}
}
/**
* jzh
* @param jzhs
*/
public void addSyncIntegralityByJzhs(String jzhs) {
List<String> jzhList = Arrays.asList(jzhs.split(","));
addSyncIntegralityByJzhsMethod(jzhList);
}
}

@ -1,24 +1,16 @@
package com.docus.bgts.service;
import com.alibaba.fastjson.JSON;
import com.docus.bgts.entity.*;
import com.docus.bgts.enums.Codes;
import com.docus.bgts.facade.IAfCollectTaskService;
import com.docus.bgts.facade.IMzSyncService;
import com.docus.bgts.mapper.dbmysql.ZdAssortMapper;
import com.docus.bgts.mapper.dbmysql.AfCollectAddMapper;
import com.docus.bgts.mapper.dbmysql.TScanAssortMapper;
import com.docus.bgts.mapper.dboracle.MzSyncMapper;
import com.docus.bgts.utils.FileUtils;
import com.docus.bgts.utils.HttpUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.io.UnsupportedEncodingException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@ -59,133 +51,24 @@ public class MzSyncService implements IMzSyncService {
TScanAssortMapper tScanAssortMapper;
@Autowired
IAfCollectTaskService afCollectTaskService;
@Autowired
ZdAssortMapper zdAssortMapper;
private final Logger log = LoggerFactory.getLogger(getClass());
UpdateFileService updateFileService;
/**
* url
* @param str
*
* @param jzhs
* @return
*/
private String subStrUrl(String str) {
int beginIndex = str.indexOf("http");
int lastIndex = str.lastIndexOf(".pdf");
if (lastIndex == -1){
lastIndex = str.lastIndexOf(".jpg");
}
if(lastIndex == -1){
log.info("不存在pdf或jpg:"+ str);
return null;
}
String newStr = str.substring(beginIndex, lastIndex+4);
return newStr;
}
@Override
public boolean addSyncIntegrality(String startDate,String endDate) {
//定义是否更新采集时间
boolean flag = true;
log.info("增量完整性同步开始");
long startTime = System.currentTimeMillis();
//获取分页数
Integer pageSize = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("pageSize")));
int count = 0;
List<String> jzhs;
int front;
int later;
List<MzSync> mzSyncs;
for (int i = 0; ; i++) {
front = i * pageSize;
later = pageSize;
jzhs = afCollectAddMapper.listJzhAndAdd(front, later, startDate,endDate);
count += jzhs.size();
if (jzhs.size() == 0) {
if(i == 0){
flag = false;
}
break;
} else {
mzSyncs = mzSyncMapper.listMzSync(jzhs, front, later, tableName, tableNamespaces);
//完整性检验写入
integralityBySyncs(mzSyncs,jzhs);
}
if (mzSyncs.size() != 0) {
log.info("本次成功同步数:" + mzSyncs.size());
}
}
long endTime = System.currentTimeMillis();
log.info("增量完整性同步结束,程序执行时间为:" + (endTime - startTime) + "毫秒");
return flag;
}
/**
*
*/
// @Transactional
@Override
public void syncIntegrality() {
log.info("完整性同步开始");
long startTime = System.currentTimeMillis();
//获取分页数
Integer pageSize = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("pageSize")));
List<String> jzhs;
int front;
int later;
List<MzSync> mzSyncs;
for (int i = 0; ; i++) {
front = i * pageSize;
later = pageSize;
jzhs = afCollectAddMapper.listJzh(front, later);
if (jzhs.size() == 0) {
break;
} else {
mzSyncs = mzSyncMapper.listMzSync(jzhs, front, later, tableName, tableNamespaces);
//完整性检验写入
integralityBySyncs(mzSyncs,jzhs);
}
if (mzSyncs.size() != 0) {
log.info("本次成功同步数:" + mzSyncs.size());
}
}
long endTime = System.currentTimeMillis();
log.info("完整性同步结束,程序执行时间为:" + (endTime - startTime) + "毫秒");
}
/**
*
*
* @param mzSyncs
*/
private void integralityBySyncs(List<MzSync> mzSyncs,List<String> jzhs) {
StringBuilder sql;
if (mzSyncs.size() != 0) {
//List<Map> maps = afCollectAddMapper.integrality(mzSyncs);
List<Map> maps = verifyIntegrity(mzSyncs,jzhs);
System.out.println(maps);
sql = new StringBuilder();
for (Map map : maps) {
sql.append("update docus_medicalrecord.t_basic set integrity_desc=");
sql.append("'");
sql.append(map.get("file_title"));
sql.append("',update_time=now()");
sql.append(" where jzh=");
sql.append("'");
sql.append(map.get("jzh"));
sql.append("'");
sql.append(";");
}
System.out.println(sql);
afCollectAddMapper.dynamicSql(sql.toString());
}
public List<Map> getCompleteIntegrity(List<String> jzhs){
//根据记帐号查询任务视图
List<MzSync> mzSyncs = mzSyncMapper.listMzSync(jzhs,tableName, tableNamespaces);
//校验完整性
List<Map> maps = verifyIntegrity(mzSyncs,jzhs);
return maps;
}
/**
*
*
* @param mzSyncs
* @param jzhs
* @return
@ -202,13 +85,20 @@ public class MzSyncService implements IMzSyncService {
String jzh = mzSync.getJzh();
//遍历任务试图文件集合
List<MzSyncDetails> mzSyncDetails = mzSync.getMzSyncDetails();
//定义是否存在
boolean recordFlag = false;
//定义缺失文件集合
StringBuilder faultFileTitles = new StringBuilder();
for(MzSyncDetails mzSyncDetail : mzSyncDetails){
//获取文件名称
String fileTitle = mzSyncDetail.getFileTitle();
if(StringUtils.isNotBlank(fileTitle) && fileTitle.contains("急诊病历")){
recordFlag = true;
}
//获取文件序列号
String serialnum = mzSyncDetail.getSerialnum();
//获取采集器标识
String collectid = mzSyncDetail.getCollectid();
//定义是否存在
boolean flag = false;
if(!CollectionUtils.isEmpty(fileList)){
@ -220,7 +110,9 @@ public class MzSyncService implements IMzSyncService {
for(MzSyncDetails vo : mzSyncDetails1){
//获取文件序列号
String serialnum1 = vo.getSerialnum();
if(vo.getFileTitle().equals(fileTitle)){
//获取采集器标识
String collectid1 = vo.getCollectid();
if(serialnum.equals(serialnum1) && collectid.equals(collectid1)){
flag = true;
mzSyncDetail.setCollectid(vo.getCollectid());
break;
@ -236,9 +128,16 @@ public class MzSyncService implements IMzSyncService {
}
faultFileTitles.append(fileTitle + "缺失");
//调下载服务
updateFile(jzh,mzSyncDetail);
updateFileService.updateFile(jzh,mzSyncDetail);
}
}
//添加急诊病历缺失
if(!recordFlag){
if(StringUtils.isNotBlank(faultFileTitles)){
faultFileTitles.append(",");
}
faultFileTitles.append("急诊病历缺失");
}
if(StringUtils.isBlank(faultFileTitles)){
faultFileTitles = new StringBuilder("完整");
}
@ -248,114 +147,4 @@ public class MzSyncService implements IMzSyncService {
}
return maps;
}
/**
*{
* "assortid": "string",
* "collectorid": "string",
* "ip": "string",
* "patient": {
* "jzh": "string"
* },
* "scanfiles": [
* {
* "downurl": "string",
* "filesource": 0,
* "filestoragetype": 0,
* "filetitle": "string",
* "filetype": 0,
* "serialnum": "string",
* "taskid": 0
* }
* ],
* "scanusercode": "string",
* "scanusername": "string"
* }
*/
private void updateFile(String jzh,MzSyncDetails mzSyncDetail) {
ReportDownDto reportDownDto;
ReportDownScanFileDto reportDownScanFileDto;
ReportDownPatientDto reportDownPatientDto;
//临时资料存储
String serialnum;
String filetitle;
String downurl;
String collectorid = "";
String assortid = getAssortid(mzSyncDetail.getAssortName());
reportDownDto = new ReportDownDto();
reportDownDto.setAssortid(assortid);
//获取基本数据信息
List<ReportDownScanFileDto> reportDownDtoArr = new ArrayList<>();
reportDownPatientDto = new ReportDownPatientDto();
reportDownPatientDto.setJzh(jzh);
log.info("患者主索引号:" + jzh);
reportDownDto.setPatient(reportDownPatientDto);
filetitle = mzSyncDetail.getFileTitle();
downurl = mzSyncDetail.getFileUrl();
if(StringUtils.isBlank(downurl)){
return;
}
//特殊处理url
downurl = subStrUrl(downurl);
if(StringUtils.isBlank(downurl)){
return;
}
//获取采集流水号
serialnum = mzSyncDetail.getSerialnum();
collectorid = mzSyncDetail.getCollectid();
reportDownScanFileDto = new ReportDownScanFileDto();
reportDownScanFileDto.setDownurl(downurl);
reportDownScanFileDto.setFiletitle(filetitle);
reportDownScanFileDto.setSerialnum(serialnum);
reportDownScanFileDto.setFilesource(1);
reportDownScanFileDto.setFilestoragetype(1);
reportDownDtoArr.add(reportDownScanFileDto);
reportDownDto.setCollectorid(collectorid);
reportDownDto.setScanfiles(reportDownDtoArr);
afCollectTaskService.insert(reportDownDto);
String post = "";
log.info("--------执行上传功能----------");
Map params = JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class);
Map<String, Object> headMap = new HashMap<>();
headMap.put("Content-Type", "application/json");
try {
post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, params);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// String post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), map, headMap);
if (StringUtils.isBlank(post)) {
log.info("--------上传时出现错误,可能是文件服务没有启动----------");
throw new RuntimeException("上传时出现错误,可能是文件服务没有启动");
}
Map resMap = JSON.parseObject(post, Map.class);
if (String.valueOf(resMap.get("code")).equals("500")) {
throw new RuntimeException(String.valueOf(resMap.get("msg")));
} else {
log.info("----------执行成功-----------");
}
}
/**
* id
*
* @return
*/
private String getAssortid(String assortName) {
String assortId = String.valueOf(FileUtils.getJsonByName("assortid"));
if (StringUtils.isBlank(assortId)) {
List<ZdAssort> zdAssorts = zdAssortMapper.selectAll(assortName);
if (CollectionUtils.isEmpty(zdAssorts)) {
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
ZdAssort zdAssort = new ZdAssort();
zdAssort.setAssortName(assortName);
zdAssort.setAssortId(uuid);
zdAssort.setEffective(1);
zdAssortMapper.insertZdAssort(zdAssort);
assortId = uuid;
} else {
assortId = zdAssorts.get(0).getAssortId();
}
}
return assortId;
}
}

@ -0,0 +1,159 @@
package com.docus.bgts.service;
import com.alibaba.fastjson.JSON;
import com.docus.bgts.entity.*;
import com.docus.bgts.enums.Codes;
import com.docus.bgts.facade.IAfCollectTaskService;
import com.docus.bgts.mapper.dbmysql.ZdAssortMapper;
import com.docus.bgts.utils.FileUtils;
import com.docus.bgts.utils.HttpUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.io.UnsupportedEncodingException;
import java.util.*;
/**
* @author
* @description:
* @createTime 2022/5/2 10:48
*/
@Service
public class UpdateFileService {
private final Logger log = LoggerFactory.getLogger(getClass());
@Autowired
IAfCollectTaskService afCollectTaskService;
@Autowired
ZdAssortMapper zdAssortMapper;
/**
*{
* "assortid": "string",
* "collectorid": "string",
* "ip": "string",
* "patient": {
* "jzh": "string"
* },
* "scanfiles": [
* {
* "downurl": "string",
* "filesource": 0,
* "filestoragetype": 0,
* "filetitle": "string",
* "filetype": 0,
* "serialnum": "string",
* "taskid": 0
* }
* ],
* "scanusercode": "string",
* "scanusername": "string"
* }
*/
public void updateFile(String jzh, MzSyncDetails mzSyncDetail) {
ReportDownDto reportDownDto;
ReportDownScanFileDto reportDownScanFileDto;
ReportDownPatientDto reportDownPatientDto;
//临时资料存储
String serialnum;
String filetitle;
String downurl;
String collectorid = "";
String assortid = getAssortid(mzSyncDetail.getAssortName());
reportDownDto = new ReportDownDto();
reportDownDto.setAssortid(assortid);
//获取基本数据信息
List<ReportDownScanFileDto> reportDownDtoArr = new ArrayList<>();
reportDownPatientDto = new ReportDownPatientDto();
reportDownPatientDto.setJzh(jzh);
log.info("患者主索引号:" + jzh);
reportDownDto.setPatient(reportDownPatientDto);
filetitle = mzSyncDetail.getFileTitle();
downurl = mzSyncDetail.getFileUrl();
if(StringUtils.isBlank(downurl)){
return;
}
//特殊处理url
downurl = subStrUrl(downurl);
if(StringUtils.isBlank(downurl)){
return;
}
//获取采集流水号
serialnum = mzSyncDetail.getSerialnum();
collectorid = mzSyncDetail.getCollectid();
reportDownScanFileDto = new ReportDownScanFileDto();
reportDownScanFileDto.setDownurl(downurl);
reportDownScanFileDto.setFiletitle(filetitle);
reportDownScanFileDto.setSerialnum(serialnum);
reportDownScanFileDto.setFilesource(1);
reportDownScanFileDto.setFilestoragetype(1);
reportDownDtoArr.add(reportDownScanFileDto);
reportDownDto.setCollectorid(collectorid);
reportDownDto.setScanfiles(reportDownDtoArr);
afCollectTaskService.insert(reportDownDto);
String post = "";
log.info("--------执行上传功能----------");
Map params = JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class);
Map<String, Object> headMap = new HashMap<>();
headMap.put("Content-Type", "application/json");
try {
post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, params);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// String post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), map, headMap);
if (StringUtils.isBlank(post)) {
log.info("--------上传时出现错误,可能是文件服务没有启动----------");
throw new RuntimeException("上传时出现错误,可能是文件服务没有启动");
}
Map resMap = JSON.parseObject(post, Map.class);
if (String.valueOf(resMap.get("code")).equals("500")) {
throw new RuntimeException(String.valueOf(resMap.get("msg")));
} else {
log.info("----------执行成功-----------");
}
}
/**
* id
*
* @return
*/
private String getAssortid(String assortName) {
String assortId = String.valueOf(FileUtils.getJsonByName("assortid"));
if (StringUtils.isBlank(assortId)) {
List<ZdAssort> zdAssorts = zdAssortMapper.selectAll(assortName);
if (CollectionUtils.isEmpty(zdAssorts)) {
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
ZdAssort zdAssort = new ZdAssort();
zdAssort.setAssortName(assortName);
zdAssort.setAssortId(uuid);
zdAssort.setEffective(1);
zdAssortMapper.insertZdAssort(zdAssort);
assortId = uuid;
} else {
assortId = zdAssorts.get(0).getAssortId();
}
}
return assortId;
}
/**
* url
* @param str
* @return
*/
private String subStrUrl(String str) {
List<String> replaceUrls = (List<String>) FileUtils.getJsonByName("replaceUrl");
if(null != replaceUrls){
for(String replaceUrl : replaceUrls){
str = str.replaceAll(replaceUrl,"");
}
}
return str;
}
}

@ -1,3 +1,4 @@
#version:1.3
server:
port: 9308
# http
@ -17,6 +18,7 @@ beat:
ws:
url: http://192.168.1.115:8010/ws_server/weather?wsdl
localMethod: OperationA
LocalMethodNj: 111
spring:
datasource:
@ -24,9 +26,10 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver
username: docus
password: docus702
url: jdbc:mysql://db.docus.cn:3306/docus_archivefile?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&allowMultiQueries=true
url: jdbc:mysql://localhost:3306/docus_archivefile?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&allowMultiQueries=true
oracle-docus:
driver-class-name: oracle.jdbc.driver.OracleDriver
# url: jdbc:oracle:thin:@localhost:1521:ORCL
url: jdbc:oracle:thin:@192.168.117.100:1521:helowin
username: docus
password: docus702

@ -21,8 +21,8 @@
<!-- 活动文件的名字会根据fileNamePattern的值每隔一段时间改变一次 -->
<!-- 文件名log/demo.2017-12-05.0.log -->
<fileNamePattern>log/demo.%d.%i.log</fileNamePattern>
<!-- 每产生一个日志文件,该日志文件的保存期限为15-->
<maxHistory>15</maxHistory>
<!-- 每产生一个日志文件,该日志文件的保存期限为30-->
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- maxFileSize:这是活动文件的大小默认值是10MB测试时可改成1KB看效果 -->
<maxFileSize>10MB</maxFileSize>
@ -44,7 +44,7 @@
<!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
<!-- com.liyan为根包也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG -->
<!-- 级别依次为【从高到低】FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
<!--<logger name="com.docus.bgts" level="debug">
<logger name="com.docus.bgts" level="INFO">
<appender-ref ref="demolog" />
</logger>-->
</logger>
</configuration>

@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.bgts.mapper.dbmysql.AfCollectAddMapper">
<select id="getTimeByAdd" resultType="date">
select begin_stage_date from af_collect_add where classify=5 limit 0,1
select begin_stage_date from af_collect_add where classify=#{classIfy} limit 0,1
</select>
<select id="listJzh" resultType="string">
@ -15,6 +15,12 @@
limit ${pageNumber},${pageSize}
</select>
<select id="selectDate" resultType="java.util.Map">
select admiss_date,dis_date
from docus_medicalrecord.t_basic
where jzh=#{jzh}
</select>
<select id="integrality" resultType="map">
<foreach collection="mzSyncs" item="mzSync" separator=" union all ">
SELECT

@ -6,6 +6,85 @@
<select id="getpatientIdByEmpId" resultType="string">
select patient_id
from docus_medicalrecord.t_basic
where jzh = #{jzh}
</select>
<select id="getjzhByDate" resultType="map">
select inpatient_no,admiss_date,dis_date,admiss_times,jzh
from docus_medicalrecord.t_basic
where dis_date between #{startDate} and #{endDate}
order by dis_date
limit #{size},#{current}
</select>
<select id="getC1ByPatientId" resultType="string">
select C1
from af_collect_task
where
patient_id in
<foreach collection="patientIds" open="(" close=")" item="patientId" separator=",">
#{patientId}
</foreach>
and sysflag=#{collectorId}
</select>
<select id="getJzhByPatientId" resultType="String">
select jzh
from docus_medicalrecord.t_basic
where
patient_id in
<foreach collection="patientIds" open="(" close=")" item="patientId" separator=",">
#{patientId}
</foreach>
</select>
<select id="getPatientIdByC1" resultType="String">
select patient_id
from af_collect_task
where
C1 in
<foreach collection="C1s" open="(" close=")" item="c1" separator=",">
#{c1}
</foreach>
</select>
<!--根据jzh分组查询任务完成情况-->
<select id="selectListByJzhs" resultMap="groupByJzh">
SELECT
id,
c3 jzh,
c2 fileTitle,
state
FROM
af_collect_task
WHERE
c3 IN
(<foreach collection="jzhs" item="jzh" separator=",">
#{jzh}
</foreach>)
</select>
<select id="getPatientIdByInpatientNo" resultType="java.lang.String">
select patient_id
from docus_medicalrecord.t_basic
where inpatient_no=#{inPatientNo}
and admiss_times=#{visitId}
</select>
<select id="getJzhByInpatientNo" resultType="java.lang.String">
select jzh
from docus_medicalrecord.t_basic
where inpatient_no=#{inPatientNo}
and admiss_times=#{visitId}
and jzh is not null
</select>
<select id="getJzhByJzh" resultType="java.lang.String">
select jzh
from docus_medicalrecord.t_basic
where jzh=#{jzh}
</select>
<resultMap id="groupByJzh" type="com.docus.bgts.entity.JzhListSync">
<result property="jzh" column="jzh"></result>
<collection property="taskDetails" ofType="com.docus.bgts.entity.TaskDetail">
<result property="id" column="id"></result>
<result property="state" column="state"></result>
<result property="fileTitle" column="fileTitle"></result>
</collection>
</resultMap>
</mapper>

@ -4,21 +4,22 @@
<!--根据记账号集合查询文件信息集合-->
<select id="selectFilesByJzhs" resultMap="mzSyncAnddeI">
SELECT
jzh,
file_title,
source serialnum
C3 jzh,
sysflag collectid,
c1 serialnum,
c2 fileTitle
FROM
t_scan_assort
INNER JOIN docus_medicalrecord.t_basic t_basic ON t_scan_assort.patient_id = t_basic.patient_id
af_collect_task
WHERE
t_scan_assort.is_del != 1
AND jzh IN <foreach collection="jzhs" item="jzh" close=")" open="(" separator=",">#{jzh}</foreach>
state = '3'
AND C3 IN <foreach collection="jzhs" item="jzh" close=")" open="(" separator=",">#{jzh}</foreach>
</select>
<resultMap id="mzSyncAnddeI" type="com.docus.bgts.entity.MzSync">
<result property="jzh" column="jzh"></result>
<collection property="mzSyncDetails" ofType="com.docus.bgts.entity.MzSyncDetails">
<result property="serialnum" column="serialnum"></result>
<result property="fileTitle" column="file_title"></result>
<result property="collectid" column="collectid"></result>
</collection>
</resultMap>
</mapper>

@ -5,26 +5,29 @@
<mapper namespace="com.docus.bgts.mapper.dboracle.VDocumentPdfMapper">
<select id="listCollectPage" resultType="map">
SELECT
*
*
FROM
(
SELECT
"NAVICAT_TABLE".*,
ROWNUM "NAVICAT_ROWNUM"
FROM
(
SELECT
<foreach collection="fieldArr" item="field" separator=",">
${namespace}.${tableName}.${field}
</foreach>
FROM
${namespace}.${tableName}
WHERE
${collectTimeName} BETWEEN TO_DATE ( #{startTime}, 'YYYY-MM-DD HH24:MI:SS' )
AND TO_DATE ( #{endTime}, 'YYYY-MM-DD HH24:MI:SS' )
) "NAVICAT_TABLE"
SELECT
"NAVICAT_TABLE".*,
ROWNUM "NAVICAT_ROWNUM"
FROM
(
SELECT
<foreach collection="fieldArr" item="field" separator=",">
${namespace}.${tableName}.${field}
</foreach>
FROM
${namespace}.${tableName}
WHERE
${collectTimeName} BETWEEN TO_DATE ( #{startTime}, 'YYYY-MM-DD HH24:MI:SS' )
AND TO_DATE ( #{endTime}, 'YYYY-MM-DD HH24:MI:SS' )
) "NAVICAT_TABLE"
WHERE
ROWNUM &lt;= ${size}
)
WHERE
ROWNUM &lt;= ${size} ) WHERE "NAVICAT_ROWNUM" &gt;= ${current}
"NAVICAT_ROWNUM" &gt; ${current}
</select>
</mapper>
Loading…
Cancel
Save