docus-active-query-service_1.3
tan 2 years ago
parent e3bcc934d4
commit a8751d5b1e

@ -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,72 +1,23 @@
{
//,
"directory":["Msg","ReportInfo"],
//
"indexFlag":"就诊号",
//
"serialnum":"手术申请单号",
//
"filetitle":"文书名",
//
"downurl":"WEB_ADDRESS",
//id
"assortid":"15E7FE7803F545CB81390BC88E725240",
//,
"filterReport":"病理送检标签,处方笺,麻醉处方精二-1,麻醉处方精二-2,术后镇痛",
"assortid":"e3625e059eb74ad88772edb03abf3bf7",
//id
"collectorid":"14",
"collectorid":"24",
//( 1:2)
"filesource":1,
//(1:2ftp3)
"filestoragetype":1,
"filetype": 4,
//
"uploadConnector":"http://127.0.0.1:9291/api/downplatform/report",
//doubleBasic
"basicDirectory":["Msg","ReportInfo"],
//
"doubleBasic":["TestItemInfo","BioTestInfo"],
//
"bgtsParam":["Request","Msg","EMPI_ID"],
//
"bgtsRespon":["MsgInfo","Msg"],
//key
"examNo":"EXAM_NO",
//key
"examItemName":"EXAM_ITEM_NAME",
//
"pdfUrl":"PDF_URL",
//
"bgtsDetailParam":["Request","Msg","EXAM_NO"],
//
"bgtsDetailRespon":["MsgInfo","Msg","ReportInfo"],
//
"startCollectTime":"2016-04-11",
//
"startCollectTime":"2022-08-01",
//
"endCollectTime":"2022-08-01",
// 1: 0 :
"isStartCollect":"0",
//oracle
"namespace":"DOCUS",
//oracle
"tableName":"V_DOCUMENT_PDF",
//oracle
"collectTimeName":"ARCHIVE_DATE_TIME",
//
"collectStartDate": "2021-01-01",
//
"collectEndDate": "2022-04-01",
// 1: 0:
"collectOpen": "1",
// 1:af_collect_task 2:
"checkIntegrityType": "1",
//----------
//0 1
"syncFlag":"0",
"pageSize":"1000",
//
"newSyncTime":"",
//
"syncTableName":"CIS_EMR_DOCUMENT",
"syncTableNamespaces":"CDR",
//url
"replaceUrl": ["<FILES>","</FILES>","<FILE num=\"1\">","<FILE num=\"2\">","<FILE num=\"3\">","</FILE>","<!\\[CDATA\\[","]]>"]
"isStartCollect":"1",
// 1: 0 :
"isCollect":"0",
// 1: 0 :
"isStartCollectDay":"0"
}

@ -137,6 +137,7 @@
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
@ -163,6 +164,18 @@
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.2.2.jre8</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
</dependencies>
<build>

@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.List;
import java.util.Map;
@Component
public class MyConstruct {
@ -20,17 +22,34 @@ public class MyConstruct {
private Logger logger = LogManager.getLogger(MyConstruct.class);
/**
*
*
*/
@PostConstruct
public void startCollectAll(){
String startCollectTime = String.valueOf(FileUtils.getJsonByName("startCollectTime"));
String isStartCollect = String.valueOf(FileUtils.getJsonByName("isStartCollect"));
if(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();
// public void tests(){
// //页码
// int startrow;
// //每页10条数据
// int endrow;
// a: for (startrow=1;;startrow+=10){
// endrow = 10 +startrow;
// List<Map> maps = bgtsService.test(startrow,endrow-1);
// System.err.println(startrow+"---------------"+(endrow-1));
// System.err.println("处理数据---"+maps);
// if (null == maps || maps.size() <= 0) {
// break;
// }
// }
//
//
// }
/**
@ -46,7 +65,7 @@ public class MyConstruct {
// bgtsService.collectAll();
// }
// }
//

@ -43,17 +43,17 @@ public class MyScheduling {
private Logger logger = LogManager.getLogger(MyScheduling.class);
//5分钟执行一次心跳
@Scheduled(fixedRate = 1000 * 60 * 5)
public void beat() {
Map<String, String> params = new HashMap<>();
params.put("code", String.valueOf(FileUtils.getJsonByName("collectorid")));
try {
HttpUtils.get(beatUrl, params);
} catch (Exception e) {
e.printStackTrace();
logger.info("心跳推送出错,可能是住院服务没有开启");
}
}
// @Scheduled(fixedRate = 1000 * 60 * 5)
// public void beat() {
// Map<String, String> params = new HashMap<>();
// params.put("code", String.valueOf(FileUtils.getJsonByName("collectorid")));
// try {
// HttpUtils.get(beatUrl, params);
// } catch (Exception e) {
// e.printStackTrace();
// logger.info("心跳推送出错,可能是住院服务没有开启");
// }
// }
@ -68,24 +68,63 @@ public class MyScheduling {
// return;
// }
// bgtsService.timerCollect();
// }
/**
*
*/
// @Scheduled(fixedRate = 1000*10)
// public void collectJzone(){
// String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
// if (!collectorid.equals("24")){
// return;
// }
//bgtsService.timerCollectJz();
// }
/**
*
* 10
*
*/
@Scheduled(fixedDelay = 1000 * 60 * 10)
public void collectIncrement(){
String isCollect = String.valueOf(FileUtils.getJsonByName("isCollect"));
if (isCollect.equals("1")){
bgtsService.timerCollectSmIncrement();
}
}
/**
*
*/
@Scheduled(fixedRate = 1000 * 60 *10 )
public void collectByExamNo(){
String collectOpen = String.valueOf(FileUtils.getJsonByName("collectOpen"));
if (collectOpen.equals("1")){
logger.info("按需采集开始----------");
String collectStartDate = String.valueOf(FileUtils.getJsonByName("collectStartDate"));
String collectEndDate = String.valueOf(FileUtils.getJsonByName("collectEndDate"));
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
bgtsService.collectByDate(collectStartDate,collectEndDate,collectorid);
@Scheduled(cron ="0 0 0 * * ?")
public void collectSm(){
String isStartCollectDay = String.valueOf(FileUtils.getJsonByName("isStartCollectDay"));
if (isStartCollectDay.equals("1")){
bgtsService.timerCollectSmDay();
}
}
/**
*
* 10
*/
// @Scheduled(fixedRate = 1000 * 60 *10 )
// public void collectByExamNo(){
// String collectOpen = String.valueOf(FileUtils.getJsonByName("collectOpen"));
// if (collectOpen.equals("1")){
// logger.info("按需采集开始----------");
// String collectStartDate = String.valueOf(FileUtils.getJsonByName("collectStartDate"));
// String collectEndDate = String.valueOf(FileUtils.getJsonByName("collectEndDate"));
// String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
// bgtsService.collectByDate(collectStartDate,collectEndDate,collectorid);
// }
// }
/**
*
*/

@ -84,6 +84,43 @@ public class BgtsController {
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");
}
/**
*
* @param emamNo
@ -125,5 +162,19 @@ public class BgtsController {
return CommonResult.success("ok");
}
@GetMapping("/xx")
public void collectxx(){
bgtsService.collectAll();
}
@GetMapping("/collectById")
public CommonResult<String> collectById(@RequestParam("inPatientId") String inPatientId,@RequestParam("vistId") String vistId){
try{
bgtsService.SmCollect(inPatientId,vistId);
}catch (Exception e){
e.printStackTrace();
return CommonResult.failed(e.getMessage());
}
return CommonResult.success("ok");
}
}

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

@ -11,6 +11,8 @@ public class ReportDownScanFileDto {
private int filesource;
@ApiModelProperty(value = "下载类型(1:服务器本地2ftp服务器3共享文件夹)")
private int filestoragetype;
@ApiModelProperty(value = "文件类型(1:url2base643:url base64;4共享文件夹)")
private int filetype;
@ApiModelProperty(value = "下载地址")
private String downurl;
@ApiModelProperty(value = "档案信息")

@ -25,6 +25,10 @@ public interface IAfCollectTaskService extends IService<AfCollectTask> {
void insert(ReportDownDto reportDownDto);
String getJzhByInpatientNo(String inPatientNo,String visitId);
void insertServer(ReportDownDto reportDownDto);
void updateInterfaceCollect(String collectSubId, int state);
/**
@ -56,10 +60,24 @@ public interface IAfCollectTaskService extends IService<AfCollectTask> {
*/
List<String> getJzhByPatientId(List<String> patientIds);
/**
* patient_id
*/
String getPatientIdByInpatientNo(String inPatientNo,String visitId);
/**
* patient_id
*/
String getPatientIdByInpatientNoAndDate(String inPatientNo,String disDate);
/**
* jzh
* @param jzhs
* @return
*/
List<Map> getCompleteIntegrity(List<String> jzhs);
}

@ -1,4 +1,8 @@
package com.docus.bgts.facade;
import java.util.List;
import java.util.Map;
public interface IBgtsService {
/**
*
@ -6,6 +10,8 @@ public interface IBgtsService {
*/
void collect(String empId) throws Exception;
void collectPacs(String empId,String admissDate,String disDate,String times) throws Exception;
/**
*
* @param emamNo
@ -25,8 +31,21 @@ public interface IBgtsService {
*/
void collectAll();
void collectxx();
/**
*
*/
void timerCollect();
/**
*
*/
void timerCollectSmIncrement();
void timerCollectSmDay();
void SmCollect(String inPatientId,String vistId);
List<Map> test(int size,int current);
}

@ -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

@ -19,12 +19,22 @@ import java.util.List;
public interface AfCollectTaskMapper extends BaseMapper<AfCollectTask> {
/**
* id
* @param empId
* @param jzh
* @return
*/
String getpatientIdByEmpId(@Param("jzh") String empId);
String getpatientIdByEmpId(@Param("jzh") String jzh);
String getPatientIdByInpatientNo(@Param("inPatientNo") String inPatientNo,@Param("visitId") String visitId);
/**
* patient_id
* @param inPatientNo
* @param disDate
* @return
*/
String getPatientIdByInpatientNoAndDate(@Param("inPatientNo") String inPatientNo,@Param("disDate") String disDate);
String getJzhByInpatientNo(@Param("inPatientNo") String inPatientNo,@Param("visitId") String visitId);
/**
* jzh
* @param startDate
@ -60,4 +70,6 @@ public interface AfCollectTaskMapper extends BaseMapper<AfCollectTask> {
* @return
*/
List<JzhListSync> selectListByJzhs(@Param("jzhs") List<String> jzhs);
}

@ -52,8 +52,8 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
@Override
public void insert(ReportDownDto reportDownDto) {
AfCollectTask afCollectTask;
String patientId = getpatientIdByEmpId(reportDownDto.getPatient().getJzh());
if (StringUtils.isBlank(patientId)) {
String inpatientNo = getpatientIdByEmpId(reportDownDto.getPatient().getJzh());
if (StringUtils.isBlank(inpatientNo)) {
throw new RuntimeException("操作的病案信息不存在");
}
Date date = new Date();
@ -65,7 +65,7 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
if (afCollectTask == null) {
//不存在 新增
afCollectTask = new AfCollectTask();
afCollectTask.setPatientId(patientId);
afCollectTask.setPatientId(inpatientNo);
afCollectTask.setSysflag(reportDownDto.getCollectorid());
afCollectTask.setState("0");
afCollectTask.setSyncTime(date);
@ -81,7 +81,7 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
} else {
//存在就修改
afCollectTask.setPatientId(patientId);
afCollectTask.setPatientId(inpatientNo);
afCollectTask.setSysflag(reportDownDto.getCollectorid());
afCollectTask.setState("0");
afCollectTask.setSyncTime(date);
@ -95,6 +95,58 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
reportDownDto.setScanfiles(scanfiles);
}
@Override
public String getJzhByInpatientNo(String inPatientNo, String visitId) {
return afCollectTaskMapper.getJzhByInpatientNo(inPatientNo,visitId);
}
@Override
public void insertServer(ReportDownDto reportDownDto) {
AfCollectTask afCollectTask;
// String patientId = getpatientIdByEmpId(reportDownDto.getPatient().getJzh());
//String patientId = getPatientIdByInpatientNo(reportDownDto.getPatient().getInPatientNo(), reportDownDto.getPatient().getVisitId());
if (StringUtils.isBlank(reportDownDto.getPatient().getPatientid())) {
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(reportDownDto.getPatient().getPatientid());
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(reportDownDto.getPatient().getPatientid());
afCollectTask.setSysflag(reportDownDto.getCollectorid());
afCollectTask.setState("0");
afCollectTask.setSyncTime(date);
afCollectTask.setC1(scanfile.getSerialnum());
afCollectTask.setC2(scanfile.getFiletitle());
save = afCollectTaskMapper.updateById(afCollectTask);
log.warn(reportDownDto.getPatient().getPatientid()+"----修改病案成功"+scanfile.getSerialnum());
}
scanfile.setTaskid(afCollectTask.getId());
}
reportDownDto.setScanfiles(scanfiles);
}
@Override
public void updateInterfaceCollect(String collectSubId, int state) {
log.warn("开始记录采集");
@ -174,6 +226,17 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
return jzhs;
}
@Override
public String getPatientIdByInpatientNo(String inPatientNo, String visitId) {
return afCollectTaskMapper.getPatientIdByInpatientNo(inPatientNo, visitId);
}
@Override
public String getPatientIdByInpatientNoAndDate(String inPatientNo, String disDate) {
return afCollectTaskMapper.getPatientIdByInpatientNoAndDate(inPatientNo,disDate);
}
/**
* jzh
* @param jzhs

@ -1,36 +1,45 @@
package com.docus.bgts.service;
import ch.qos.logback.core.util.FileUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
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.dbmysql.*;
import com.docus.bgts.mapper.dboracle.VDocumentPdfMapper;
import com.docus.bgts.mapper.dbsqlserver.PatientBLMapper;
import com.docus.bgts.mapper.dbsqlserver.PatientBRMapper;
import com.docus.bgts.mapper.dbsqlserver.ScanningMapper;
import com.docus.bgts.mapper.dbsqlserver.TestttMapper;
import com.docus.bgts.utils.*;
import org.apache.commons.codec.digest.MurmurHash2;
import org.apache.commons.codec.digest.MurmurHash3;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.helpers.IOUtils;
import org.apache.http.client.utils.DateUtils;
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.Text;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Service;
import java.io.ByteArrayInputStream;
import java.io.*;
import java.lang.reflect.Method;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@Service
@ -61,6 +70,22 @@ public class BgtsServiceImpl implements IBgtsService {
@Autowired
AfCollectTaskMapper afCollectTaskMapper;
@Autowired
TestttMapper testMapper;
@Autowired
PatientBRMapper patientBRMapper;
@Autowired
PatientBLMapper patientBLMapper;
@Autowired
TBasicOutMapper tBasicOutMapper;
@Autowired
ScanningMapper scanningMapper;
@Override
public void collect(String empId) throws Exception {
//通过empId获取报告单号集合
@ -73,6 +98,22 @@ public class BgtsServiceImpl implements IBgtsService {
collectExams(exams, empId, reportDownDto);
}
@Override
public void collectPacs(String empId, String admissDate, String disDate, String times) throws Exception {
//通过empId获取报告单号集合
List<String[]> exams = getExamNo(empId, admissDate, disDate);
String jzh = afCollectTaskService.getJzhByInpatientNo(empId, times);
if (null == jzh) {
throw new RuntimeException("通过住院号与住院次数未匹配到患者");
}
//获取插入表数据
ReportDownDto reportDownDto = getUrlCreateReportDto(exams, jzh);
//插入文件af_collect_task表数据
afCollectTaskService.insert(reportDownDto);
//通过报告单号集合采集
collectExams(exams, empId, reportDownDto);
}
@Override
public void collectByExamNo(String emamNo, String empId) throws Exception {
String[] strings = new String[2];
@ -100,111 +141,36 @@ public class BgtsServiceImpl implements IBgtsService {
//当前日期
Date date = new Date();
String dateStr = simpleDateFormat.format(date);
collectByDates(startCollectTime, dateStr);
collectByDateJz(startCollectTime, dateStr);
//更新采集时间
addAfCollectAdd(date);
// addAfCollectAdd(date);
logger.info("--------------全量采集结束------------------");
}
/**
*
*
* @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);
@Override
public void collectxx() {
logger.info("----------全量采集开始-----------");
//1.获取最早采集日期
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startCollectTime = null;
startCollectTime = String.valueOf(FileUtils.getJsonByName("startCollectTime"));
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();
}
}
}
logger.info("----------采集初始时间:" + startCollectTime + " -------------------");
//当前日期
Date date = new Date();
String dateStr = simpleDateFormat.format(date);
collectByDateTest(startCollectTime, dateStr);
//更新采集时间
// addAfCollectAdd(date);
logger.info("--------------全量采集结束------------------");
}
/**
*
*
* @param startDate
* @param endDate
*/
// /**
// * 根据时间到采集任务 手麻
// *
// * @param startDate
// * @param endDate
// */
// private void collectByDates(String startDate, String endDate) {
// //页码
// int current;
@ -219,33 +185,42 @@ 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<>();
// List<String> fieldArr = new ArrayList<>();
// fieldArr.add(indexFlag);
// fieldArr.add(serialnum);
//// if(StringUtils.isNotBlank(filetitle)){
//// fieldArr.add(filetitle);
//// }
// 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(size-10, 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;
// }
// maps.stream().forEach(map -> {
// 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);
@ -255,15 +230,15 @@ public class BgtsServiceImpl implements IBgtsService {
// 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.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()));
// 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);
@ -272,16 +247,182 @@ public class BgtsServiceImpl implements IBgtsService {
// }
// } catch (Exception e) {
// //打印错误日志
// logger.info("采集出错:"+reportDownDto);
// logger.info("采集出错:" + reportDownDto);
// logger.info(e);
// String stackTrace = ExceptionUtils.getStackTrace(e);
// logger.info("错误信息----------"+stackTrace);
// logger.info("错误信息----------" + stackTrace);
// addMrReportErrorLog(reportDownDto);
// e.printStackTrace();
// }
// });
// }
// }
// }
/**
*
*
* @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"));
String inPatientNo = String.valueOf(FileUtils.getJsonByName("inPatientNo"));
String visitId = String.valueOf(FileUtils.getJsonByName("visitId"));
List<String> fieldArr = new ArrayList<>();
fieldArr.add(indexFlag);
fieldArr.add(serialnum);
fieldArr.add(inPatientNo);
fieldArr.add(visitId);
// 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(size - 10, size, startDate, endDate, namespace, tableName, fieldArr, collectTimeName);
logger.info("处理采集数据:" + maps);
if (null == maps || maps.size() <= 0) {
break;
}
maps.stream().forEach(map -> {
ReportDownDto reportDownDto = new ReportDownDto();
reportDownDto.setCollectorid(collectorid);
reportDownDto.setAssortid(assortid);
ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto();
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.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.insertServer(reportDownDto);
//String uploadConnector = String.valueOf(FileUtils.getJsonByName("uploadConnector"));
String jzh = afCollectTaskService.getJzhByInpatientNo(reportDownDto.getPatient().getInPatientNo(), reportDownDto.getPatient().getVisitId());
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);
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();
}
});
}
}
@Override
public void timerCollectSmDay() {
logger.info("------采集器开始采集---------");
//获取前一天开始结束时间
Map<String, String> time = getSmCollectionTime(new Date());
collectByDateSm(time.get("startDate"), time.get("endDate"));
//更新采集时间
logger.info("--------采集器结束采集------");
}
@Override
public void SmCollect(String inPatientId,String vistId) {
List<Map> maps = scanningMapper.selectByInPatientId(inPatientId,vistId);
int i = scanningMapper.selectRow(inPatientId,vistId);
logger.info(inPatientId+"患者扫描病历共"+i+"条----");
Map<String, Object> headMap = new HashMap<>();
headMap.put("Content-Type", "application/json");
int filesource = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")));
int filestoragetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")));
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
int filetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filetype")));
String assortid = String.valueOf(FileUtils.getJsonByName("assortid"));
int i1 =0;
for (Map map : maps) {
try {
i1++;
logger.info("当前第"+i1+"条------");
ReportDownDto reportDownDto = new ReportDownDto();
reportDownDto.setCollectorid(collectorid);
reportDownDto.setAssortid(String.valueOf(map.get("分类id")));
ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto();
// reportDownPatientDto.setInPatientNo(String.valueOf(map.get("住院号")));
// reportDownPatientDto.setVisitId(String.valueOf(map.get("次数")));
String patientId = afCollectTaskService.getPatientIdByInpatientNo(String.valueOf(map.get("住院号")), String.valueOf(map.get("次数")));
if (null != patientId) {
reportDownPatientDto.setPatientid(patientId);
reportDownDto.setPatient(reportDownPatientDto);
List<ReportDownScanFileDto> reportDownScanFileDtos = new ArrayList<>();
ReportDownScanFileDto reportDownScanFileDto = new ReportDownScanFileDto();
reportDownScanFileDto.setFiletype(filetype);
reportDownScanFileDto.setDownurl(String.valueOf(map.get("图像路径")) + "/" + String.valueOf(map.get("文件名")));
reportDownScanFileDto.setFiletitle(String.valueOf(map.get("文件名")).substring(0,map.get("文件名").toString().indexOf(".")));
//处理下载地址为唯一值
String ser = String.valueOf(map.get("主键")) + String.valueOf(map.get("分段名称")) + String.valueOf(map.get("文件名"));
reportDownScanFileDto.setSerialnum(ser);
reportDownScanFileDto.setFilestoragetype(filestoragetype);
reportDownScanFileDto.setFilesource(filesource);
reportDownScanFileDtos.add(reportDownScanFileDto);
reportDownDto.setScanfiles(reportDownScanFileDtos);
afCollectTaskService.insertServer(reportDownDto);
String post;
logger.info("上传下载参数-----" + 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")) {
logger.info("下载服务-------" + String.valueOf(resMap.get("msg")));
}
} else {
logger.info(String.valueOf(map.get("住院号")) + "患者基础信息不存在!");
}
} catch (Exception e) {
logger.error(String.valueOf(map.get("住院号")) + e.getMessage());
}
}
}
@Override
public void timerCollect() {
logger.info("------采集器开始采集---------");
@ -289,9 +430,11 @@ public class BgtsServiceImpl implements IBgtsService {
//1.获取上次采集时间
Date time;
if (collectorid.equals("5")) {
time = afCollectAddMapper.getTimeByAdd(5);
}else {
time = afCollectAddMapper.getTimeByAdd(5);
} else if (collectorid.equals("15")) {
time = afCollectAddMapper.getTimeByAdd(15);
} else {
time = afCollectAddMapper.getTimeByAdd(24);
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startDate = simpleDateFormat.format(time);
@ -304,6 +447,308 @@ public class BgtsServiceImpl implements IBgtsService {
logger.info("--------采集器结束采集------");
}
@Override
public void timerCollectSmIncrement() {
logger.info("------采集器开始采集---------");
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
//1.获取上次采集时间
Date time;
time = afCollectAddMapper.getTimeByAdd(25);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startDate = simpleDateFormat.format(time);
//当前日期
Date date = new Date();
String endDate = simpleDateFormat.format(date);
logger.info("增量采集开始----采集扫描日期区间为"+startDate+"-----"+endDate);
collectByDateSm(startDate, endDate);
//更新采集时间
addAfCollectAdd(date);
logger.info("--------采集器结束采集------");
}
/**
*
*
* @param date
* @return
*/
public static Map<String, String> getSmCollectionTime(Date date) {
Date dBefore;
Calendar calendar = Calendar.getInstance(); //得到日历
calendar.setTime(date);//把当前时间赋给日历
calendar.add(Calendar.DAY_OF_MONTH, -1); //设置为前一天
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;
}
/**
*
*/
private void collectByDateJz(String startDate, String endDate) {
//页码
int startrow;
//每页10条数据
int endrow;
//2.获取第一页10条数据开始采集
logger.info("开始时间-----" + startDate + "结束时间-----" + "\n" + endDate);
Map<String, Object> headMap = new HashMap<>();
headMap.put("Content-Type", "application/json");
int filesource = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")));
int filestoragetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")));
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
int filetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filetype")));
String assortid = String.valueOf(FileUtils.getJsonByName("assortid"));
List<Map> maps;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String format;
for (startrow = 1; ; startrow += 10) {
endrow = 10 + startrow;
maps = scanningMapper.selectAllByDisDate(startrow, endrow - 1, startDate, endDate);
logger.info("处理采集数据" + maps);
// List<Map> maps = patientBRMapper.selectAll(1,1,startDate,endDate);
if (null == maps || maps.size() <= 0) {
break;
}
try {
for (Map map : maps) {
try {
ReportDownDto reportDownDto = new ReportDownDto();
reportDownDto.setCollectorid(collectorid);
reportDownDto.setAssortid(String.valueOf(map.get("分类id")));
ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto();
// reportDownPatientDto.setInPatientNo(String.valueOf(map.get("住院号")));
// reportDownPatientDto.setVisitId(String.valueOf(map.get("次数")));
Date parse = simpleDateFormat.parse(String.valueOf(map.get("出院日期")));
format = simpleDateFormat.format(parse);
String patientId = afCollectTaskService.getPatientIdByInpatientNoAndDate(String.valueOf(map.get("住院号")),format);
if (null != patientId) {
reportDownPatientDto.setPatientid(patientId);
reportDownDto.setPatient(reportDownPatientDto);
List<ReportDownScanFileDto> reportDownScanFileDtos = new ArrayList<>();
ReportDownScanFileDto reportDownScanFileDto = new ReportDownScanFileDto();
reportDownScanFileDto.setFiletype(filetype);
reportDownScanFileDto.setDownurl(String.valueOf(map.get("图像路径")) + "/" + String.valueOf(map.get("文件名")));
reportDownScanFileDto.setFiletitle(String.valueOf(map.get("文件名")).substring(0,map.get("文件名").toString().indexOf(".")));
//处理下载地址为唯一值
String ser = String.valueOf(map.get("主键")) + String.valueOf(map.get("分段名称")) + String.valueOf(map.get("文件名"));
logger.info("唯一值++++++" + ser);
reportDownScanFileDto.setSerialnum(ser);
reportDownScanFileDto.setFilestoragetype(filestoragetype);
reportDownScanFileDto.setFilesource(filesource);
reportDownScanFileDtos.add(reportDownScanFileDto);
reportDownDto.setScanfiles(reportDownScanFileDtos);
afCollectTaskService.insertServer(reportDownDto);
String post;
logger.info("上传下载参数-----" + 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")) {
logger.info("下载服务-------" + String.valueOf(resMap.get("msg")));
}
} else {
logger.info(String.valueOf(map.get("住院号")) + "患者基础信息不存在!");
}
} catch (Exception e) {
logger.error(String.valueOf(map.get("住院号")) + e.getMessage());
}
}
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
} catch (Throwable e) {
logger.error("throwable{}", e.getMessage());
}
// System.err.println(startrow+"---------------"+(endrow-1));
// System.err.println("处理数据---"+maps);
maps.clear();
}
}
/**
*
*/
private void collectByDateTest(String startDate, String endDate) {
//页码
int startrow;
//每页10条数据
int endrow;
//2.获取第一页10条数据开始采集
logger.info("开始时间-----" + startDate + "结束时间-----" + "\n" + endDate);
Map<String, Object> headMap = new HashMap<>();
headMap.put("Content-Type", "application/json");
int filesource = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")));
int filestoragetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")));
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
int filetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filetype")));
String assortid = String.valueOf(FileUtils.getJsonByName("assortid"));
List<Map> maps;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String format;
for (startrow = 1; ; startrow += 10) {
endrow = 10 + startrow;
maps = scanningMapper.selectAllByDisDate(startrow, endrow - 1, startDate, endDate);
logger.info("处理采集数据" + maps);
// List<Map> maps = patientBRMapper.selectAll(1,1,startDate,endDate);
if (null == maps || maps.size() <= 0) {
break;
}
try {
for (Map map : maps) {
try {
ReportDownDto reportDownDto = new ReportDownDto();
reportDownDto.setCollectorid(collectorid);
reportDownDto.setAssortid(String.valueOf(map.get("分类id")));
ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto();
// reportDownPatientDto.setInPatientNo(String.valueOf(map.get("住院号")));
// reportDownPatientDto.setVisitId(String.valueOf(map.get("次数")));
Date parse = simpleDateFormat.parse(String.valueOf(map.get("出院日期")));
format = simpleDateFormat.format(parse);
String patientId = afCollectTaskService.getPatientIdByInpatientNoAndDate(String.valueOf(map.get("住院号")), format);
if (null != patientId) {
reportDownPatientDto.setPatientid(patientId);
reportDownDto.setPatient(reportDownPatientDto);
List<ReportDownScanFileDto> reportDownScanFileDtos = new ArrayList<>();
ReportDownScanFileDto reportDownScanFileDto = new ReportDownScanFileDto();
reportDownScanFileDto.setFiletype(filetype);
reportDownScanFileDto.setDownurl(String.valueOf(map.get("图像路径")) + "/" + String.valueOf(map.get("文件名")));
reportDownScanFileDto.setFiletitle(String.valueOf(map.get("文件名")));
//处理下载地址为唯一值
String ser = String.valueOf(map.get("图像路径").hashCode()) + "/" + String.valueOf(map.get("文件名").hashCode());
int i1 = MurmurHash2.hash32(ser);
reportDownScanFileDto.setSerialnum(Integer.toBinaryString(i1).toString());
reportDownScanFileDto.setFilestoragetype(filestoragetype);
reportDownScanFileDto.setFilesource(filesource);
reportDownScanFileDtos.add(reportDownScanFileDto);
reportDownDto.setScanfiles(reportDownScanFileDtos);
afCollectTaskService.insertServer(reportDownDto);
String post;
logger.info("上传下载参数-----" + 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")) {
logger.info("下载服务-------" + String.valueOf(resMap.get("msg")));
}
} else {
logger.info(String.valueOf(map.get("住院号")) + "患者基础信息不存在!");
}
} catch (Exception e) {
logger.error(String.valueOf(map.get("住院号")) + e.getMessage());
}
}
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
} catch (Throwable e) {
logger.error("throwable{}", e.getMessage());
}
// System.err.println(startrow+"---------------"+(endrow-1));
// System.err.println("处理数据---"+maps);
maps.clear();
}
}
/**
*
*/
private void collectByDateSm(String startDate, String endDate) {
//页码
int startrow;
//每页10条数据
int endrow;
//2.获取第一页10条数据开始采集
logger.info("开始时间-----" + startDate + "结束时间-----" + "\n" + endDate);
Map<String, Object> headMap = new HashMap<>();
headMap.put("Content-Type", "application/json");
int filesource = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")));
int filestoragetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")));
int filetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filetype")));
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
String assortid = String.valueOf(FileUtils.getJsonByName("assortid"));
List<Map> maps;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String format;
for (startrow = 1; ; startrow += 10) {
endrow = 10 + startrow;
maps = scanningMapper.selectAll(startrow, endrow - 1, startDate, endDate);
// List<Map> maps = patientBRMapper.selectAll(1,1,startDate,endDate);
if (null == maps || maps.size() <= 0) {
break;
}
try {
logger.info("处理采集数据" + maps);
for (Map map : maps) {
try {
ReportDownDto reportDownDto = new ReportDownDto();
reportDownDto.setCollectorid(collectorid);
reportDownDto.setAssortid(String.valueOf(map.get("分类id")));
ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto();
// reportDownPatientDto.setInPatientNo(String.valueOf(map.get("住院号")));
// reportDownPatientDto.setVisitId(String.valueOf(map.get("次数")));
Date parse = simpleDateFormat.parse(String.valueOf(map.get("出院日期")));
format = simpleDateFormat.format(parse);
String patientId = afCollectTaskService.getPatientIdByInpatientNoAndDate(String.valueOf(map.get("住院号")), format);
reportDownPatientDto.setPatientid(patientId);
reportDownDto.setPatient(reportDownPatientDto);
List<ReportDownScanFileDto> reportDownScanFileDtos = new ArrayList<>();
ReportDownScanFileDto reportDownScanFileDto = new ReportDownScanFileDto();
reportDownScanFileDto.setFiletype(filetype);
reportDownScanFileDto.setDownurl(String.valueOf(map.get("图像路径")) + "/" + String.valueOf(map.get("文件名")));
reportDownScanFileDto.setFiletitle(String.valueOf(map.get("文件名")).substring(0,map.get("文件名").toString().indexOf(".")));
//处理下载地址为唯一值
String ser = String.valueOf(map.get("主键")) + String.valueOf(map.get("分段名称")) + String.valueOf(map.get("文件名"));
reportDownScanFileDto.setFiletitle(String.valueOf(map.get("文件名")));
reportDownScanFileDto.setSerialnum(ser);
reportDownScanFileDto.setFilestoragetype(filestoragetype);
reportDownScanFileDto.setFilesource(filesource);
reportDownScanFileDtos.add(reportDownScanFileDto);
reportDownDto.setScanfiles(reportDownScanFileDtos);
afCollectTaskService.insertServer(reportDownDto);
String post;
logger.info("上传下载参数-----" + 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")) {
logger.info("下载服务{}", String.valueOf(resMap.get("msg")));
}
} catch (Exception e) {
logger.error(String.valueOf(map.get("住院号") + "错误信息" + e.getMessage()));
}
}
} catch (Exception e) {
e.printStackTrace();
} catch (Throwable t) {
logger.error("throwable{}", t.getMessage());
}
maps.clear();
}
}
/**
*
*/
@ -376,6 +821,7 @@ public class BgtsServiceImpl implements IBgtsService {
return reportDownDto;
}
/**
* ReportDownScanFileDto
*
@ -416,7 +862,62 @@ public class BgtsServiceImpl implements IBgtsService {
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);
}
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 pacs
*
* @param empId
* @return
*/
private List<String[]> getExamNo(String empId, String admissDate, String disDate) 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_INDEX_NO").setText(empId);
reqElement.element("BEGIN_DATE").setText(admissDate);
reqElement.element("END_DATE").setText(disDate);
logger.info("-------根据患者主索引号查询多个报告单号,地址:" + wsUrl + ",方法:" + wsLocalMethod + "---------");
String xml = reqXmlUtils.getDocument().asXML();
logger.info("---------------------------");
@ -489,8 +990,8 @@ public class BgtsServiceImpl implements IBgtsService {
// }
try {
for (String patientId : patientIds) {
if (patientId!=null){
logger.info("按需采集------患者"+patientId);
if (patientId != null) {
logger.info("按需采集------患者" + patientId);
collect(patientId);
}
}
@ -506,6 +1007,10 @@ public class BgtsServiceImpl implements IBgtsService {
}
public List<Map> test(int size, int current) {
return testMapper.selectAll(size, current);
}
/**
* web service
*
@ -524,5 +1029,6 @@ public class BgtsServiceImpl implements IBgtsService {
return str;
}
}

@ -25,10 +25,15 @@ 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
sqlserver-docus:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: 123456
url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=jizhen

@ -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>

@ -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

@ -5,7 +5,7 @@
<mapper namespace="com.docus.bgts.mapper.dbmysql.AfCollectTaskMapper">
<select id="getpatientIdByEmpId" resultType="string">
select patient_id
from docus_medicalrecord.t_basic
from docus_medicalrecord.t_basic_out
where jzh = #{jzh}
</select>
<select id="getjzhByDate" resultType="string">
@ -58,6 +58,29 @@
#{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}
and ph is null
</select>
<select id="getJzhByInpatientNo" resultType="java.lang.String">
select jzh
from docus_medicalrecord.t_basic
where inpatient_no=#{inPatientNo}
and admiss_times=#{visitId}
and ph is null
</select>
<select id="getPatientIdByInpatientNoAndDate" resultType="java.lang.String">
select patient_id
from docus_medicalrecord.t_basic
where inpatient_no=#{inPatientNo}
and DATE_FORMAT(dis_date,'%Y-%m-%d')=#{disDate}
and ph is null
</select>
<resultMap id="groupByJzh" type="com.docus.bgts.entity.JzhListSync">
<result property="jzh" column="jzh"></result>

Loading…
Cancel
Save