版本一

master
lzy 4 years ago
parent b1acbca521
commit 4a9f97e3b5

18
.gitignore vendored

@ -1,4 +1,3 @@
# ---> Java
# Compiled class file
*.class
@ -19,7 +18,18 @@
*.zip
*.tar.gz
*.rar
*.iml
# 直接在这里添加即可,注意加上备注,好知道是忽略什么文件 #
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
##############################
## Folders ##
##############################
target
out
log
configLog
.idea
.project
**/.mvn
**/mvnw
**/mvnw.cmd

@ -0,0 +1,27 @@
{
//,
"directory":["DOCUMENT"],
//
"indexFlag":"VISITING_SERIAL_NUMBER",
//
"serialnum":"UNIQUE_ID",
//
"filetitle":"DOCUMENT_TITLE",
//
"downurl":"BASE64&REPORT_URL",
//id
"assortid":"OW1PA2SR2Z5XX2JR10KR29SK2OW101",
//id
"collectorid":"2",
//( 1:2)
"filesource":1,
//(1:2ftp3)
"filestoragetype":1,
//
"uploadConnector":"http://192.168.1.107:9291/api/downplatform/report",
// //doubleBasic
"basicDirectory":["DOCUMENT"],
//
"doubleBasic":["TestItemInfo","BioTestInfo"]
}

@ -0,0 +1 @@
lombok.var.flagUsage = ALLOW

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.docus</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>docus-mz-empcllect</name>
<description>电子病历采集</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/jaxen/jaxen -->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.14</version>
</dependency>
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.9.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.axis/axis-jaxrpc -->
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis-jaxrpc</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/wsdl4j/wsdl4j -->
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,16 @@
package com.docus.bgts;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
SpringApplication.run(DemoApplication.class, args);
}
}

@ -0,0 +1,40 @@
//package com.docus.bgts.config;
//
//
//import com.docus.bgts.utils.FileUtils;
//import com.docus.bgts.utils.HttpUtils;
//import org.apache.logging.log4j.LogManager;
//import org.apache.logging.log4j.Logger;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//
//import java.net.URISyntaxException;
//import java.util.HashMap;
//import java.util.Map;
//
//@Component
//public class MyScheduling {
//
// @Value("${beat.url}")
// private String beatUrl;
//
// private Logger logger = LogManager.getLogger(MyScheduling.class);
//
// //10分钟执行一次
// @Scheduled(fixedRate = 1000 * 60 * 5)
// public void beat() {
// logger.info("------------心跳开始---------------");
// Map<String, String> params = new HashMap<>();
// params.put("code", String.valueOf(FileUtils.getJsonByName("collectorid")));
// try {
// HttpUtils.get(beatUrl, params);
// } catch (URISyntaxException e) {
// e.printStackTrace();
// logger.info("心跳推送出错,可能是住院服务没有开启");
// } finally {
// logger.info("-------------心跳结束---------------");
// }
// }
//
//}

@ -0,0 +1,66 @@
package com.docus.bgts.config;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import lombok.RequiredArgsConstructor;
import lombok.experimental.var;
import org.apache.ibatis.logging.nologging.NoLoggingImpl;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.annotation.PostConstruct;
import java.util.Objects;
@Configuration
@RequiredArgsConstructor
@EnableTransactionManagement
@MapperScan("com.docus.bgts.mapper")
@ConditionalOnClass(value = {PaginationInterceptor.class})
public class MybatisPlusConfig {
private final MybatisPlusProperties mybatisPlusProperties;
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
return paginationInterceptor;
}
@PostConstruct
public void initMybatisConfig(){
mybatisPlusProperties.setMapperLocations(new String[]{"classpath*:/mapper/*Mapper.xml"});
mybatisPlusProperties.setTypeAliasesPackage("com.docus.bgts.entity");
MybatisConfiguration configuration = mybatisPlusProperties.getConfiguration();
if(Objects.isNull(configuration)){
configuration=new MybatisConfiguration();
}
configuration.setMapUnderscoreToCamelCase(true);
configuration.setCacheEnabled(true);
configuration.setLogImpl(NoLoggingImpl.class);
mybatisPlusProperties.setConfiguration(configuration);
var globalConfig = mybatisPlusProperties.getGlobalConfig();
if(Objects.isNull(globalConfig)){
globalConfig=new GlobalConfig();
}
GlobalConfig.DbConfig dbConfig = globalConfig.getDbConfig();
if(Objects.isNull(dbConfig)){
dbConfig=new GlobalConfig.DbConfig();
}
configuration.setCallSettersOnNulls(true);
dbConfig.setIdType(IdType.ASSIGN_ID);
dbConfig.setTableUnderline(true);
dbConfig.setLogicDeleteValue("1");
dbConfig.setLogicNotDeleteValue("0");
dbConfig.setLogicDeleteField("def_flag");
globalConfig.setDbConfig(dbConfig);
globalConfig.setBanner(false);
}
}

@ -0,0 +1,35 @@
package com.docus.bgts.config;
import com.docus.bgts.handler.ITBasicWebService;
import com.docus.bgts.handler.TBasicWebService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.xml.ws.Endpoint;
@Configuration
public class WebServiceConfig {
@Value("${system.code}")
private String systemCode;
@Value("${system.prop}")
private String systemProp;
//把实现类交给spring管理
@Bean
public ITBasicWebService tBasicWebService() {
return new TBasicWebService();
}
@Bean
public Endpoint endpoint() {
System.out.println("-----------------------web service服务已发布-------------------------");
// String address = "http://"+"0.0.0.0"+":" + Codes.EXTERNAL.getCode()+"/" + Codes.EXTERNAL.getMessage();
String address = "http://"+"0.0.0.0"+":" + systemProp+"/" + systemCode;
Endpoint publish = Endpoint.publish(address, tBasicWebService());
System.out.println(" "+address);
return publish;
}
}

@ -0,0 +1,68 @@
package com.docus.bgts.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author
* @since 2021-05-07
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "AfCollectTask对象", description = "病案采集任务")
public class AfCollectTask implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id 雪花算法")
@TableId(value = "id", type = IdType.ID_WORKER_STR)
private Long id;
@ApiModelProperty(value = "病案主键")
private String patientId;
@ApiModelProperty(value = "af_archive_detail表id")
private Long afArchiveDetailId;
@ApiModelProperty(value = "来源 1护理文书2 电子病历3 Pacs检查4心电图5手麻系统6 Lis检验7病案首页8长临医嘱")
private String sysflag;
@ApiModelProperty(value = "开始时间")
private Date startTime;
@ApiModelProperty(value = "结束时间")
private Date endTime;
@ApiModelProperty(value = "任务状态 0未开始1:完成2重新采集")
private String state;
@ApiModelProperty(value = "同步时间")
private Date syncTime;
@ApiModelProperty(value = "最新重新采集时间")
private Date recollectTime;
@ApiModelProperty(value = "最新重新采集人")
private String recollectName;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty("报告唯一单号")
private String c1;
@ApiModelProperty("文件标题")
private String c2;
@ApiModelProperty("记账号")
private String c3;
}

@ -0,0 +1,25 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
@ApiModel("文件库中的省中医病案采集表")
public class AfInterfaceCollect implements Serializable {
private Long id;
@ApiModelProperty(value = "任务流水号")
private String serialnum;
@ApiModelProperty(value = "记账号")
private String jzh;
@ApiModelProperty(value = "任务数")
private Integer taskCount;
@ApiModelProperty(value = "完成数")
private Integer completeCount;
@ApiModelProperty(value = "创建时间")
private Date createTime;
}

@ -0,0 +1,27 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("文件库中的省中医病案采集-子任务表")
public class AfInterfaceCollectSub implements Serializable {
private Long id;
@ApiModelProperty(value = "af_interface_collect表id")
private Long afInterfaceCollectId;
@ApiModelProperty(value = "采集器id")
private String collectsysCode;
@ApiModelProperty(value = "子任务流水号 同一份文件子任务需一致")
private String serialnumSub;
@ApiModelProperty(value = "记账号")
private String jzh;
@ApiModelProperty(value = "分类名称")
private String assortName;
@ApiModelProperty(value = "状态 0:未发起1成功2失败")
private Integer state;
@ApiModelProperty(value = "请求信息")
private String requestMessage;
}

@ -0,0 +1,20 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel("错误日志表")
public class MrReportError {
private Long id;
@ApiModelProperty("上报信息")
private String xml;
@ApiModelProperty("上报类型")
private Integer reportType;
@ApiModelProperty("上报时间")
private Date createTime;
}

@ -0,0 +1,25 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class ReportDownDto {
@ApiModelProperty(value = "采集器id")
private String collectorid;
@ApiModelProperty(value = "采集器ip")
private String ip;
@ApiModelProperty(value = "文件信息")
private List<ReportDownScanFileDto> scanfiles;
private ReportDownPatientDto patient;
@ApiModelProperty(value = "分类id")
private String assortid;
}

@ -0,0 +1,10 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ReportDownPatientDto {
@ApiModelProperty(value = "记帐号")
private String jzh;
}

@ -0,0 +1,25 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ReportDownScanFileDto {
@ApiModelProperty(value = "文件标题")
private String filetitle;
@ApiModelProperty(value = "采集类型(文件来源 1:采集器2扫描生产软件)")
private int filesource;
@ApiModelProperty(value = "下载类型(1:服务器本地2ftp服务器3共享文件夹)")
private int filestoragetype;
@ApiModelProperty(value = "下载地址")
private String downurl;
@ApiModelProperty(value = "档案信息")
private String recordid;
@ApiModelProperty("采集流水号")
private String serialnum;
@ApiModelProperty(value = "任务id")
private Long taskid;
@ApiModelProperty("文件类型(1:url,2:base64)")
private Integer filetype = 1;
}

@ -0,0 +1,53 @@
package com.docus.bgts.enums;
/**
*
*/
public enum Codes {
//接口成功
SUCCESS("1", "成功"),
//接口失败
ERROR("0", "失败"),
//web service返回根节点
RESPONSE("100","Response"),
//web service返回二级节点
RET_INFO("101","Result"),
//web service 返回代码
RET_CODE("102","Code"),
//web service返回描述部分
RET_CON("103","Msg"),
//静态文件存放位置
JSON_ADDRESS("999","\\dataConfig\\homeQualitySet.json"),
//接收二级节点
MSG("201","Msg"),
//节点根
DIRECTORY("1000","directory"),
//上传接口地址
UPLOAD("0","uploadConnector"),
//患者主索引号
EMP_ID("0","indexFlag"),
//错误日志编号
ERROR_CODE("500","12"),
//接收三级节点
// PAT_INFO("202","PatInfo"),
//静态文件根元素名
SELECT_COLUMNS("10000","selectColumns")
;
//代码
private String code;
//描述
private String message;
private Codes(String code, String messgae) {
this.code = code;
this.message = messgae;
}
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
}

@ -0,0 +1,25 @@
package com.docus.bgts.facade;
import com.baomidou.mybatisplus.extension.service.IService;
import com.docus.bgts.entity.AfCollectTask;
import com.docus.bgts.entity.ReportDownDto;
/**
* <p>
*
* </p>
*
* @author
* @since 2021-05-07
*/
public interface IAfCollectTaskService extends IService<AfCollectTask> {
/**
* id
*/
String getpatientIdByEmpId(String empId);
void insert(ReportDownDto reportDownDto);
void updateInterfaceCollect(String collectSubId, int state);
}

@ -0,0 +1,10 @@
package com.docus.bgts.facade;
import com.docus.bgts.entity.MrReportError;
public interface IMrReportErrorService{
void insert(String xml);
}

@ -0,0 +1,19 @@
package com.docus.bgts.handler;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface ITBasicWebService {
/**
*
* @return
*/
@WebMethod
String pushSurveyReport(String xml);
@WebMethod
String EmrDocumentArchive(String xml);
}

@ -0,0 +1,215 @@
package com.docus.bgts.handler;
import com.alibaba.fastjson.JSON;
import com.docus.bgts.entity.ReportDownDto;
import com.docus.bgts.entity.ReportDownPatientDto;
import com.docus.bgts.entity.ReportDownScanFileDto;
import com.docus.bgts.enums.Codes;
import com.docus.bgts.facade.IAfCollectTaskService;
import com.docus.bgts.facade.IMrReportErrorService;
import com.docus.bgts.utils.FileUtils;
import com.docus.bgts.utils.HttpUtils;
import com.docus.bgts.utils.ResultUtils;
import com.docus.bgts.utils.XmlUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.springframework.beans.factory.annotation.Autowired;
import javax.jws.WebService;
import java.io.ByteArrayInputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@WebService
public class TBasicWebService implements ITBasicWebService {
@Autowired
IAfCollectTaskService afCollectTaskService;
@Autowired
IMrReportErrorService mrReportErrorService;
private Logger logger = LogManager.getLogger(TBasicWebService.class);
private Element getElementFromString(String s) {
SAXReader builder = new SAXReader();
Document doc = null;
Element element = null;
try {
doc = builder.read(new StringReader(s));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (doc != null) {
element = doc.getRootElement();
}
return element;
}
@Override
public String pushSurveyReport(String xml) {
try {
logger.info("报告推送入参:" + xml);
// 1、创建document对象
// Document document = DocumentHelper.createDocument();
// Element rootElement = getElementFromString(xml);
// document.setRootElement(rootElement);
xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + xml;
//解析XML
XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(xml.getBytes("UTF-8")));
// 获取患者主索引号
String empId = String.valueOf(FileUtils.getJsonByName(Codes.EMP_ID.getMessage()));
Map<String, Object> headMap = new HashMap<>();
headMap.put("Content-Type", "application/json");
ReportDownDto reportDownDto;
//获取数据存在的节点节点
Element elementRoot = xmlUtils.getMsgElement();
//key
String serialnmnKey = String.valueOf(FileUtils.getJsonByName("serialnum"));
// String empId = String.valueOf(FileUtils.getJsonByName("indexFlag"));
String filetitleKey = String.valueOf(FileUtils.getJsonByName("filetitle"));
String downurlKey = String.valueOf(FileUtils.getJsonByName("downurl"));
ReportDownScanFileDto reportDownScanFileDto;
ReportDownPatientDto reportDownPatientDto;
//临时资料存储
String serialnum;
String filetitle;
String downurl;
String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid"));
// String collectorid = getCollectorid(elementList.get(0));
// String assortid = String.valueOf(FileUtils.getJsonByName("assortid"));
String assortid = getAssortid(elementRoot);
reportDownDto = new ReportDownDto();
reportDownDto.setCollectorid(collectorid);
reportDownDto.setAssortid(assortid);
//获取基本数据信息
List<ReportDownScanFileDto> reportDownDtoArr = new ArrayList<>();
reportDownPatientDto = new ReportDownPatientDto();
// String empIdText = elementList.get(0).element(empId).getText();
//获取jzh
String empIdText = getElementText(elementRoot, empId.split(","));
//获取采集流水号
serialnum = getElementText(elementRoot, serialnmnKey.split(","));
reportDownPatientDto.setJzh(empIdText);
logger.info("患者主索引号:" + empIdText);
reportDownDto.setPatient(reportDownPatientDto);
List<Element> elementList = xmlUtils.getJsonByName(elementRoot);
for (Element element : elementList) {
// serialnum = element.element(serialnmnKey).getText();
// filetitle = element.element(filetitleKey).getText();
filetitle = getElementText(element, filetitleKey.split(","));
// downurl = element.element(downurlKey).getText();
downurl = getElementText(element, downurlKey.split(","));
reportDownScanFileDto = new ReportDownScanFileDto();
reportDownScanFileDto.setDownurl(downurl);
reportDownScanFileDto.setFiletitle(filetitle);
reportDownScanFileDto.setSerialnum(serialnum);
reportDownScanFileDto.setFilesource(Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource"))));
reportDownScanFileDto.setFilestoragetype(Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype"))));
//判断是否为base64
if (reportDownScanFileDto.getDownurl().length() > 200) {
reportDownScanFileDto.setFiletype(2);
}
reportDownDtoArr.add(reportDownScanFileDto);
}
if (reportDownDtoArr.size() <= 0) {
throw new RuntimeException("不存在必要的基本信息");
} else {
reportDownDto.setScanfiles(reportDownDtoArr);
}
//插入文件af_collect_task表数据
afCollectTaskService.insert(reportDownDto);
String post = "";
logger.info("--------执行上传功能----------");
Map params = JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class);
logger.info("上传参数:" + params);
post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, params);
// String post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), map, headMap);
if (StringUtils.isBlank(post)) {
logger.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 {
return ResultUtils.success().asXML();
}
} catch (RuntimeException e) {
e.printStackTrace();
mrReportErrorService.insert(xml);
return ResultUtils.fail(e.getMessage());
} catch (Exception e) {
e.printStackTrace();
mrReportErrorService.insert(xml);
return ResultUtils.fail(e.getMessage());
}
}
@Override
public String EmrDocumentArchive(String xml) {
return pushSurveyReport(xml);
}
/**
* key
*
* @param element
* @param args
* @return
*/
private String getElementText(Element element, String[] args) {
String resText = "";
Element byElement = (Element) element.clone();
String[] split;
for (String arg : args) {
split = arg.split("&");
if (split.length > 1) {
for (String spi : split) {
byElement = byElement.element(spi);
if (byElement != null) {
break;
}
}
} else {
byElement = byElement.element(arg);
}
if (byElement != null) {
resText = byElement.getText();
} else {
break;
}
}
return resText;
}
/**
* id
*
* @return
*/
private String getAssortid(Element element) {
String assortId = String.valueOf(FileUtils.getJsonByName("assortid"));
if (StringUtils.isBlank(assortId)) {
String assortIdKey = String.valueOf(FileUtils.getJsonByName("assortidParamKey"));
if (StringUtils.isBlank(assortIdKey)) {
assortId = "";
} else {
assortId = element.element(assortIdKey).getText();
}
}
return assortId;
}
}

@ -0,0 +1,23 @@
package com.docus.bgts.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docus.bgts.entity.AfCollectTask;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* Mapper
* </p>
*
* @author
* @since 2021-05-07
*/
public interface AfCollectTaskMapper extends BaseMapper<AfCollectTask> {
/**
* id
* @param empId
* @return
*/
String getpatientIdByEmpId(@Param("jzh") String empId);
}

@ -0,0 +1,8 @@
package com.docus.bgts.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docus.bgts.entity.AfInterfaceCollect;
public interface AfInterfaceCollectMapper extends BaseMapper<AfInterfaceCollect> {
}

@ -0,0 +1,7 @@
package com.docus.bgts.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docus.bgts.entity.AfInterfaceCollectSub;
public interface AfInterfaceCollectSubMapper extends BaseMapper<AfInterfaceCollectSub> {
}

@ -0,0 +1,9 @@
package com.docus.bgts.mapper;
import com.docus.bgts.entity.MrReportError;
import org.apache.ibatis.annotations.Param;
public interface MrReportErrorMapper {
void save(@Param("mrReportError") MrReportError mrReportError);
}

@ -0,0 +1,119 @@
package com.docus.bgts.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.docus.bgts.entity.*;
import com.docus.bgts.facade.IAfCollectTaskService;
import com.docus.bgts.mapper.AfCollectTaskMapper;
import com.docus.bgts.mapper.AfInterfaceCollectMapper;
import com.docus.bgts.mapper.AfInterfaceCollectSubMapper;
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.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author
* @since 2021-05-07
*/
@Service
public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, AfCollectTask> implements IAfCollectTaskService {
private Logger log= LogManager.getLogger();
@Autowired
AfCollectTaskMapper afCollectTaskMapper;
@Autowired
AfInterfaceCollectMapper afInterfaceCollectMapper;
@Autowired
AfInterfaceCollectSubMapper afInterfaceCollectSubMapper;
@Override
public String getpatientIdByEmpId(String empId) {
String patientId = afCollectTaskMapper.getpatientIdByEmpId(empId);
return patientId;
}
@Transactional
@Override
public void insert(ReportDownDto reportDownDto) {
log.info("新增任务表初始数据:"+reportDownDto);
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);
} else {
//存在就修改
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.updateById(afCollectTask);
}
if (save <= 0) {
log.info("任务表操作出错");
throw new RuntimeException("插入病案任务表数据出错");
}
scanfile.setTaskid(afCollectTask.getId());
}
reportDownDto.setScanfiles(scanfiles);
}
@Override
public void updateInterfaceCollect(String collectSubId, int state) {
AfInterfaceCollectSub afInterfaceCollectSub = afInterfaceCollectSubMapper.selectById(collectSubId);
if (afInterfaceCollectSub == null) {
throw new RuntimeException("afInterfaceCollectSub表数据为空");
}
int i;
afInterfaceCollectSub.setState(state);
i = afInterfaceCollectSubMapper.updateById(afInterfaceCollectSub);
if (i <= 0) {
throw new RuntimeException("记录任务数时出错");
}
if (state == 1) {
AfInterfaceCollect afInterfaceCollect = afInterfaceCollectMapper.selectById(afInterfaceCollectSub.getAfInterfaceCollectId());
afInterfaceCollect.setCompleteCount(afInterfaceCollect.getCompleteCount() + 1);
i = afInterfaceCollectMapper.updateById(afInterfaceCollect);
if (i <= 0) {
throw new RuntimeException("记录任务数时出错");
}
}
}
}

@ -0,0 +1,32 @@
package com.docus.bgts.service;
import com.docus.bgts.entity.MrReportError;
import com.docus.bgts.facade.IMrReportErrorService;
import com.docus.bgts.mapper.MrReportErrorMapper;
import com.docus.bgts.utils.FileUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
@Slf4j
@Service
public class MrReportErrorServiceImpl implements IMrReportErrorService {
@Autowired
MrReportErrorMapper mrReportErrorMapper;
@Override
public void insert(String xml) {
log.info("------发送错误:并记录日志------");
MrReportError mrReportError=new MrReportError();
mrReportError.setXml(xml);
mrReportError.setCreateTime(new Date());
Integer collectorid = Integer.valueOf(String.valueOf(FileUtils.getJsonByName("collectorid")));
mrReportError.setReportType(collectorid);
mrReportErrorMapper.save(mrReportError);
log.info("--------日志记录完成------");
}
}

@ -0,0 +1,43 @@
package com.docus.bgts.utils;
import com.alibaba.fastjson.JSON;
import com.docus.bgts.enums.Codes;
import java.io.File;
import java.io.IOException;
import java.util.Map;
public class FileUtils {
/**
* jar
*
* @return
*/
public static String currentPath() {
File dir = new File(".");
String currentpath = "";
try {
currentpath = dir.getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
}
return currentpath;
}
/**
*
* @param name
* @return
*/
public static Object getJsonByName(String name){
//获取目录结构
String path = FileUtils.currentPath();
//解析json映射文件
String json = JsonUtils.readJsonFile(path + Codes.JSON_ADDRESS.getMessage());
Map jsonMap = JSON.parseObject(json, Map.class);
return jsonMap.get(name);
}
}

@ -0,0 +1,211 @@
package com.docus.bgts.utils;
import com.alibaba.fastjson.JSON;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.*;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Map;
public class HttpUtils {
private static PoolingHttpClientConnectionManager cm;
private static String EMPTY_STR = "";
private static String UTF_8 = "UTF-8";
private static void init() {
if (cm == null) {
cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(50);// 整个连接池最大连接数
cm.setDefaultMaxPerRoute(5);// 每路由最大连接数默认值是2
}
}
/**
* HttpClient
*
* @return
*/
private static CloseableHttpClient getHttpClient() {
init();
return HttpClients.custom().setConnectionManager(cm).build();
}
/**
* @param url
* @return
*/
public static String get(String url) {
HttpGet httpGet = new HttpGet(url);
return getResult(httpGet);
}
/**
* @param urlparams
* @return
*/
public static String get(String url, Map<String, String > params) throws URISyntaxException {
URIBuilder ub = new URIBuilder();
ub.setPath(url);
ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
ub.setParameters(pairs);
HttpGet httpGet = new HttpGet(ub.build());
return getResult(httpGet);
}
/**
* @param urlheadersparams
* @return
*/
public static String get(String url, Map<String, Object> headers, Map<String, String> params)
throws URISyntaxException {
URIBuilder ub = new URIBuilder();
ub.setPath(url);
if (params != null) {
ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
ub.setParameters(pairs);
}
HttpGet httpGet = new HttpGet(ub.build());
for (Map.Entry<String, Object> param : headers.entrySet()) {
httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));
}
return getResult(httpGet);
}
/**
* @param url
* @return
*/
public static String post(String url) {
HttpPost httpPost = new HttpPost(url);
return getResult(httpPost);
}
/**
* @param urlparams
* @return
*/
public static String post(String url, Map<String, String> params) throws UnsupportedEncodingException {
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(covertParams2NVPS(params), "utf-8"));//设置表单提交编码
// httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_FORM_URLENCODED));
return getResult(httpPost);
}
public static String post(String url, Object params, Map<String, Object> head) throws UnsupportedEncodingException {
HttpPost httpPost = new HttpPost(url);
System.out.println(params);
httpPost.setEntity(new StringEntity(params.toString()));//设置表单提交编码
if (params != null) {
for (Map.Entry<String, Object> param : head.entrySet()) {
httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
}
}
// httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_FORM_URLENCODED));
return getResult(httpPost);
}
private static ArrayList<NameValuePair> covertParams2NVPS(Map<String, String> params) {
ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
for (Map.Entry<String, String> param : params.entrySet()) {
if (param.getValue() != null) {
pairs.add(new BasicNameValuePair(param.getKey(), param.getValue()));
}
}
return pairs;
}
/**
* @param urlheadersparams
* @return
*/
public static String post(String url, Map<String, Object> headers, Map<String, Object> params)
throws UnsupportedEncodingException {
HttpPost httpPost = new HttpPost(url);
System.out.println(params);
if (params != null) {
for (Map.Entry<String, Object> param : headers.entrySet()) {
httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
}
}
httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_JSON));
return getResult(httpPost);
}
/**
* Http
*
* @param request
* @return
*/
private static String getResult(HttpRequestBase request) {
// CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpClient httpClient = getHttpClient();
try {
CloseableHttpResponse response = httpClient.execute(request);
// response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
if (entity != null) {
// long len = entity.getContentLength();// -1 表示长度未知
String result = EntityUtils.toString(entity, UTF_8);
response.close();
// httpClient.close();
return result;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
return EMPTY_STR;
}
/**
* Http
*
* @param requestBuilder
* @return
*/
private static String getResult(RequestBuilder requestBuilder) {
// CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpClient httpClient = getHttpClient();
try {
CloseableHttpResponse response = httpClient.execute(requestBuilder.build());
// response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
if (entity != null) {
// long len = entity.getContentLength();// -1 表示长度未知
String result = EntityUtils.toString(entity, UTF_8);
response.close();
// httpClient.close();
return result;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
return EMPTY_STR;
}
}

@ -0,0 +1,44 @@
package com.docus.bgts.utils;
import java.io.*;
/**
* json
*/
public class JsonUtils {
/**
* json
* @param fileNamejson
* @return
*/
public static String readJsonFile(String fileName) {
String jsonStr = "";
Reader reader=null;
FileReader fileReader=null;
try {
File jsonFile = new File(fileName);
fileReader = new FileReader(jsonFile);
reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch);
}
fileReader.close();
reader.close();
jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
return null;
}finally {
try {
reader.close();
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

@ -0,0 +1,84 @@
package com.docus.bgts.utils;
import com.docus.bgts.enums.Codes;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
/**
*
*/
public class ResultUtils {
/**
* document
* @param response
* @return
*/
public static Element getElement(Document response){
Element element = response.getRootElement();
return element;
}
/**
*
* @return
*/
public static Document success(){
// 1、创建document对象
Document document= DocumentHelper.createDocument();
//2.创建根节点
Element response=document.addElement(Codes.RESPONSE.getMessage());
// 3、生成子节点及子节点内容
Element RetInfo = response.addElement(Codes.RET_INFO.getMessage());
//4.生成代码和描述节点
Element resCode = RetInfo.addElement(Codes.RET_CODE.getMessage());
Element retCon = RetInfo.addElement(Codes.RET_CON.getMessage());
//赋值
resCode.setText(String.valueOf(Codes.SUCCESS.getCode()));
retCon.setText(Codes.SUCCESS.getMessage());
return document;
}
/**
*
* @return
*/
public static String fail(){
// 1、创建document对象
Document document= DocumentHelper.createDocument();
//2.创建根节点
Element response=document.addElement(Codes.RESPONSE.getMessage());
// 3、生成子节点及子节点内容
Element RetInfo = response.addElement(Codes.RET_INFO.getMessage());
//4.生成代码和描述节点
Element resCode = RetInfo.addElement(Codes.RET_CODE.getMessage());
Element retCon = RetInfo.addElement(Codes.RET_CON.getMessage());
//赋值
resCode.setText(String.valueOf(Codes.ERROR.getCode()));
retCon.setText(Codes.ERROR.getMessage());
return document.asXML();
}
/**
*
* @return
*/
public static String fail(String message){
// 1、创建document对象
Document document= DocumentHelper.createDocument();
//2.创建根节点
Element response=document.addElement(Codes.RESPONSE.getMessage());
// 3、生成子节点及子节点内容
Element RetInfo = response.addElement(Codes.RET_INFO.getMessage());
//4.生成代码和描述节点
Element resCode = RetInfo.addElement(Codes.RET_CODE.getMessage());
Element retCon = RetInfo.addElement(Codes.RET_CON.getMessage());
//赋值
resCode.setText(String.valueOf(Codes.ERROR.getCode()));
retCon.setText(StringUtils.isNotBlank(message)?message: Codes.ERROR.getMessage());
return document.asXML();
}
}

@ -0,0 +1,158 @@
package com.docus.bgts.utils;
import com.alibaba.fastjson.JSON;
import com.docus.bgts.enums.Codes;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import sun.rmi.runtime.Log;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class XmlUtils {
//定义解析器和文档对象
private SAXReader saxReader;
private Document document;
public XmlUtils(String path) {
//获取解析器
saxReader = new SAXReader();
try {
//获取文档对象
document = saxReader.read(path);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public XmlUtils(InputStream path) {
//获取解析器
saxReader = new SAXReader();
try {
//获取文档对象
document = saxReader.read(path);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
*
* @return
*/
public String getElement(String name) {
//获取根节点
Element root = document.getRootElement();
Object directory = FileUtils.getJsonByName(Codes.DIRECTORY.getMessage());
Element current = root;
if (directory == null) {
throw new RuntimeException("没有定义目录结构");
}
List<String> directoryArr = (List<String>) directory;
for (String dire : directoryArr) {
current = current.element(dire);
}
return current.element(name) == null ? "" : current.element(name).getText();
}
/**
*
*
* @return
*/
public Element getElement(List<String> directory) {
//获取根节点
Element root = document.getRootElement();
Element current = root;
List<String> directoryArr = directory;
for (String dire : directoryArr) {
current = current.element(dire);
}
if (current == null) {
throw new RuntimeException("未找到对应节点");
}
return current;
}
/**
*
*/
public List<Element> getJsonByName(Element root) {
//获取目录结构
String path = FileUtils.currentPath();
//解析json映射文件
String json = JsonUtils.readJsonFile(path + Codes.JSON_ADDRESS.getMessage());
Map jsonMap = JSON.parseObject(json, Map.class);
//判断是否多条
List<String> basicArr = (List<String>) jsonMap.get("doubleBasic");
// List<String> directory = (List<String>) jsonMap.get("basicDirectory");
List<Element> elements = null;
// Element root = this.getElement(directory);
for (String basic : basicArr) {
elements = root.elements(basic);
if (elements != null && elements.size() > 0) {
break;
}
}
if (elements == null || elements.size() == 0) {
//只有一条
// List<String> rootDirectory = (List<String>) jsonMap.get("directory");
// root = this.getElement(rootDirectory);
elements = new ArrayList<>();
elements.add(root);
}
return elements;
}
/**
*
* @return
*/
public Element getMsgElement(){
//获取目录结构
String path = FileUtils.currentPath();
//解析json映射文件
String json = JsonUtils.readJsonFile(path + Codes.JSON_ADDRESS.getMessage());
Map jsonMap = JSON.parseObject(json, Map.class);
List<String> directory = (List<String>) jsonMap.get("directory");
Element root = this.getElement(directory);
return root;
}
/**
*
*
* @param name
* @return
*/
public String getElementText(String name) {
//定位根节点
Element root = document.getRootElement();
//根据名称定位节点
Element msg = root.element(Codes.MSG.getMessage());
if (msg == null) {
throw new RuntimeException("没有" + Codes.MSG.getMessage() + "节点");
}
// Element patInfo = msg.element(Codes.PAT_INFO.getMessage());
// if(patInfo==null){
// throw new RuntimeException("没有"+Codes.PAT_INFO.getMessage()+"节点");
// }
Element element = msg.element(name);
if (element == null) {
return null;
}
//返回节点内容
return element.getText();
}
}

@ -0,0 +1,28 @@
server:
port: 9701
# http
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
call-setters-on-nulls: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
field-strategy: NOT_EMPTY
db-type: MYSQL
#beat:
# url: http://localhost:9399/beat
system:
code: "EmrDocAr"
prop: 9801
# web service
spring:
datasource:
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=UTC&rewriteBatchedStatements=true

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, -->
<!-- appender是configuration的子节点是负责写日志的组件。 -->
<!-- ConsoleAppender把日志输出到控制台 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %p (%file:%line\)- %m%n</pattern>
<!-- 控制台也要使用UTF-8不要使用GBK否则会中文乱码 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- RollingFileAppender滚动记录文件先将日志记录到指定文件当符合某个条件时将日志记录到其他文件 -->
<!-- 以下的大概意思是1.先按日期存日志日期变了将前一天的日志文件名重命名为XXX%日期%索引新的日志仍然是demo.log -->
<!-- 2.如果日期没有发生变化但是当前日志的文件大小超过1KB时对当前日志进行分割 重命名-->
<appender name="demolog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>configLog/log.log</File>
<!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->
<!-- TimeBasedRollingPolicy 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 活动文件的名字会根据fileNamePattern的值每隔一段时间改变一次 -->
<!-- 文件名log/demo.2017-12-05.0.log -->
<fileNamePattern>log/demo.%d.%i.log</fileNamePattern>
<!-- 每产生一个日志文件该日志文件的保存期限为15天 -->
<maxHistory>15</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- maxFileSize:这是活动文件的大小默认值是10MB测试时可改成1KB看效果 -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- pattern节点用来设置日志的输入格式 -->
<pattern>
%d %p (%file:%line\)- %m%n
</pattern>
<!-- 记录日志的编码:此处设置字符集 - -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 控制台输出日志级别 -->
<root level="info">
<appender-ref ref="STDOUT" />
</root>
<!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
<!-- com.liyan为根包也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG -->
<!-- 级别依次为【从高到低】FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
<logger name="com.docus.bgts" level="INFO">
<appender-ref ref="demolog" />
</logger>
</configuration>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.bgts.mapper.AfCollectTaskMapper">
<select id="getpatientIdByEmpId" resultType="string">
select patient_id
from docus_medicalrecord.t_basic
where jzh=#{jzh}
</select>
</mapper>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.bgts.mapper.MrReportErrorMapper">
<insert id="save" parameterType="com.docus.bgts.entity.MrReportError">
insert into docus_medicalrecord.mr_report_error(xml,report_type,create_time)
values(#{mrReportError.xml},#{mrReportError.reportType},#{mrReportError.createTime})
</insert>
</mapper>
Loading…
Cancel
Save