Browse Source

档案上传入库流程添加--初版

huangzhiyong 7 years ago
parent
commit
91dc7d3b8c

+ 2 - 2
hos-broker/src/main/resources/logback-spring.xml

@ -18,9 +18,9 @@
    </appender>
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">    
        <file>output.log</file>        
        <file>{LOG_HOME:-/usr/local/esb}/output.log</file>        
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>output.%d{yyyy-MM-dd_HH_mm}.%i.log.zip</fileNamePattern>
            <fileNamePattern>{LOG_HOME:-/usr/local/esb}/%d{yyyy-MM-dd_HH_mm}.%i.log.zip</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>3</maxIndex>
        </rollingPolicy>

+ 4 - 1
hos-camel2/pom.xml

@ -88,7 +88,10 @@
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-quartz</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-stream</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-mongodb</artifactId>

+ 28 - 7
hos-camel2/src/main/java/camel/central/archives/processor/ArchivesService.java

@ -1,8 +1,15 @@
package camel.central.archives.processor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.io.IOException;
/**
 * 数据入库
@ -13,15 +20,29 @@ import org.springframework.stereotype.Service;
@Service("archivesService")
public class ArchivesService {
    private static final Logger logger = LoggerFactory.getLogger(ArchivesService.class);
    private ObjectMapper objectMapper = new ObjectMapper();
    //入库服务调用(病人维度)
    public void storageArchive(String msg) {
        System.out.println(msg);
    }
    //入库服务参数设置
    public void storageArchive(Exchange exchange) {
        Message in = exchange.getIn();
        String body = in.getBody(String.class);
        if (!StringUtils.isEmpty(body)){
            try {
                ObjectNode objectNode = objectMapper.readValue(body,ObjectNode.class);
                String packageId = objectNode.get("id").asText();
                String clientId = objectNode.get("clientId").asText();
                String query = "?packageId="+packageId+"&clientId="+clientId+"&echo="+false;
                exchange.getOut().setHeader(Exchange.REST_HTTP_QUERY,query);
                System.out.println("入库参数:"+query);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else {
            System.out.println("上传档案失败处理,body: "+exchange.getIn().getBody(String.class));
        }
    //入库服务调用(非病人维度/数据集维度)
    public void storageDataset(String msg) {
        System.out.println(msg);
    }
}

+ 0 - 39
hos-camel2/src/main/java/camel/central/archives/route/ArchivesMqRouter.java

@ -1,39 +0,0 @@
package camel.central.archives.route;
import com.yihu.hos.web.framework.constant.ArchivesConstant;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.model.ModelCamelContext;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.jms.ConnectionFactory;
/**
 *  档案入库-消息接收服务
 * @author HZY
 * @vsrsion 1.0
 * Created at 2017/3/13.
 */
@Component
public class ArchivesMqRouter extends RouteBuilder {
    @Value("${spring.activemq.broker-url}")
    private String brokerURL;
    @Value("${spring.activemq.user}")
    private String user;
    @Value("${spring.activemq.password}")
    private String password;
    @Override
    public void configure() throws Exception {
        ModelCamelContext context = this.getContext();
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
                user, password, brokerURL);
        // Note we can explicit name the component
        context.addComponent(ArchivesConstant.CAMEL_COMPONENT, JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
        from(ArchivesConstant.CAMEL_ENDPOINT)
        .to("bean:archivesService?method=storageArchive");
    }
}

+ 37 - 16
hos-camel2/src/main/java/camel/central/archives/route/ArchivesRouterBuilder.java

@ -1,8 +1,17 @@
package camel.central.archives.route;
import com.yihu.hos.web.framework.constant.ArchivesConstant;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.model.ModelCamelContext;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.jms.ConnectionFactory;
/**
 * @author HZY
 * @vsrsion 1.0
@ -11,27 +20,39 @@ import org.springframework.stereotype.Component;
@Component
public class ArchivesRouterBuilder extends RouteBuilder {
    @Value("${spring.activemq.broker-url}")
    private String brokerURL;
    @Value("${spring.activemq.user}")
    private String user;
    @Value("${spring.activemq.password}")
    private String password;
    @Override
    public void configure() throws Exception {
        ModelCamelContext context = this.getContext();
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
                user, password, brokerURL);
        // Note we can explicit name the component
        context.addComponent(ArchivesConstant.CAMEL_COMPONENT, JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
        // 档案上传接口代理 (兼容非病人维度上传)
        from("jetty:http://0.0.0.0:9912/api/dataset_package?bridgeEndpoint=true&enableMultipartFilter=false").routeId("proxy_test")
        from("jetty:http://0.0.0.0:9912/api/dataset_package?bridgeEndpoint=true&enableMultipartFilter=false").routeId("datasetUpload1")
                .removeHeaders("CamelHttp*")
                .to("jetty:http://192.168.1.221:10140/api/v1.0/dataset_package");
        //上传流程总线
        from("jetty:http://0.0.0.0:9911/uploadArchive").routeId("uploadArchive")
                .log("=========================心跳测试=====================");
        //流程健康测试接口
        from("jetty:http://0.0.0.0:9911/healthy").routeId("healthy_test")
                .log("=========================心跳测试=====================");
//                .setHeader("User-Agent", header("UserAgent"))//使用postman测试时,无法设置User-Agent,使用UserAgent来获取
//                .to("jetty:http://192.168.1.221:10140/api/v1.0/dataset_package")
                .to("jetty:http://192.168.131.106:10140/api/v1.0/dataset_package")//上传档案
                .choice()
                .when(header(Exchange.HTTP_RESPONSE_CODE).isEqualTo("200")).to(ExchangePattern.InOnly, ArchivesConstant.CAMEL_ENDPOINT)//成功:发送入库消息
                .otherwise().log("上传失败").to("stream:out")
                .endChoice();
        ;
        //入库请求(消费MQ消息,发送入库接口请求)
        from(ArchivesConstant.CAMEL_ENDPOINT)
                .to("bean:archivesService?method=storageArchive")//参数设置
                .to("restlet:http://192.168.131.106:10170/api/v1.0/packages/resolve?restletMethod=PUT")
        ;
        ;
    }

+ 5 - 0
hos-parent/pom.xml

@ -282,6 +282,11 @@
                <artifactId>camel-jms</artifactId>
                <version>${camel-version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-stream</artifactId>
                <version>${camel-version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-http4</artifactId>

+ 3 - 1
src/main/java/com/yihu/hos/common/CommonPageController.java

@ -50,6 +50,8 @@ public class CommonPageController extends BaseController {
    public String adminUrl;
    @Value("${service-gateway.portalUrl}")
    public String portalUrl;
    @Value("${service-gateway.oauth2authorize}")
    private String oauth2authUrl;
    @Autowired
    private AuthenticateService authenticateService;
@ -297,7 +299,7 @@ public class CommonPageController extends BaseController {
            params.put("clientId", clientId);
            params.put("accessToken", token);
            HTTPResponse response = HttpClientKit.post("http://sdw2:10260" + "/oauth/validToken", params);
            HTTPResponse response = HttpClientKit.post(oauth2authUrl + "/oauth/validToken", params);
            if (response.getStatusCode() != 200) {
                System.out.println("验证 token 请求失败,token:"+token);
                return failed("验证 token 请求失败!");

+ 30 - 27
src/main/java/com/yihu/hos/monitor/service/ServerMonitorService.java

@ -14,6 +14,7 @@ import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpSession;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -35,23 +36,24 @@ public class ServerMonitorService {
    @Autowired
    private Mongo mongo;
    public Result getMonitorList(HttpSession session,String host, String type, String beginTime, String endTime) {
        TenantSession tenantSession = (TenantSession)session.getAttribute(ContextAttributes.TENANT_SESSION);
    public Result getMonitorList(HttpSession session, String host, String type, String beginTime, String endTime) {
        TenantSession tenantSession = (TenantSession) session.getAttribute(ContextAttributes.TENANT_SESSION);
        mongoOperations = new MongoTemplate(mongo, MONITOR);
        DBCollection envCollection = mongoOperations.getCollection(SERVER);
        Timestamp begin = DateUtil.toTimestamp(beginTime);
        Timestamp end = DateUtil.toTimestamp(endTime);
        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
                new BasicDBObject[]{
                        new BasicDBObject().append("tenant",tenantSession.getTenant()),
                        new BasicDBObject().append("host",host),
                        new BasicDBObject().append("type",type),
                        new BasicDBObject().append("create_time",
                                new BasicDBObject().append(QueryOperators.GTE, DateUtil.toTimestamp(beginTime))),
                        new BasicDBObject().append("create_time",
                                new BasicDBObject().append(QueryOperators.LT, DateUtil.toTimestamp(endTime)))});
                        new BasicDBObject().append("tenant", tenantSession.getTenant()),
                        new BasicDBObject().append("host", host),
                        new BasicDBObject().append("type", type),
                        new BasicDBObject("create_time", new BasicDBObject().append(QueryOperators.GTE, begin)
                                .append(QueryOperators.LT, end))
                });
        List<DBObject> result = new ArrayList<>();
        DBCursor cursor = envCollection.find(queryObject);
        while(cursor.hasNext()) {
        while (cursor.hasNext()) {
            DBObject dbObject = cursor.next();
            dbObject.removeField("_id");
            result.add(dbObject);
@ -62,20 +64,21 @@ public class ServerMonitorService {
        return actionResult;
    }
    public Result getMonitorDetail(HttpSession session,String host, String type, String date) {
        TenantSession tenantSession = (TenantSession)session.getAttribute(ContextAttributes.TENANT_SESSION);
    public Result getMonitorDetail(HttpSession session, String host, String type, String date) {
        TenantSession tenantSession = (TenantSession) session.getAttribute(ContextAttributes.TENANT_SESSION);
        mongoOperations = new MongoTemplate(mongo, MONITOR);
        DBCollection envCollection = mongoOperations.getCollection(SERVER);
        Timestamp timestamp = DateUtil.toTimestamp(date);
        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
                new BasicDBObject[]{
                        new BasicDBObject().append("tenant",tenantSession.getTenant()),
                        new BasicDBObject().append("tenant", tenantSession.getTenant()),
                        new BasicDBObject().append("host", host),
                        new BasicDBObject().append("type", type),
                        new BasicDBObject().append("create_time",new BasicDBObject().append(QueryOperators.LTE, DateUtil.toTimestamp(date)))});
                        new BasicDBObject("create_time", new BasicDBObject(QueryOperators.LTE, timestamp))});
        Map result = new HashMap<>();
        DBCursor cursor = envCollection.find(queryObject).sort(new BasicDBObject("create_time",-1)).limit(1);
        while(cursor.hasNext()) {
        DBCursor cursor = envCollection.find(queryObject).sort(new BasicDBObject("create_time", -1)).limit(1);
        while (cursor.hasNext()) {
            DBObject dbObject = cursor.next();
            dbObject.removeField("_id");
            result = dbObject.toMap();
@ -87,19 +90,18 @@ public class ServerMonitorService {
    }
    public Result getHosts() {
        List<Map<String,Object>> result = new ArrayList<>();
        List<Map<String, Object>> result = new ArrayList<>();
        mongoOperations = new MongoTemplate(mongo, MONITOR);
        DBCollection envCollection = mongoOperations.getCollection(HOST);
        DBCursor cursor = envCollection.find();
        while(cursor.hasNext()) {
        while (cursor.hasNext()) {
            DBObject dbObject = cursor.next();
            Map<String,Object> hostMap = new HashMap<>();
            hostMap.put("host",dbObject.get("host"));
            hostMap.put("name",dbObject.get("name"));
            Map<String, Object> hostMap = new HashMap<>();
            hostMap.put("host", dbObject.get("host"));
            hostMap.put("name", dbObject.get("name"));
            result.add(hostMap);
            hostMap=null;
            hostMap = null;
        }
        ActionResult actionResult = new ActionResult();
        actionResult.setData(result);
@ -108,27 +110,28 @@ public class ServerMonitorService {
    /**
     * 獲取服務器列表 树
     *
     * @return
     * @throws Exception
     */
    public Result getServerTreeList(HttpSession session) throws Exception {
        List<TreeView> treeList = new ArrayList<>();
        TenantSession tenantSession = (TenantSession)session.getAttribute(ContextAttributes.TENANT_SESSION);
        TenantSession tenantSession = (TenantSession) session.getAttribute(ContextAttributes.TENANT_SESSION);
        mongoOperations = new MongoTemplate(mongo, MONITOR);
        DBCollection envCollection = mongoOperations.getCollection(HOST);
        //查询条件
        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
                new BasicDBObject[]{
                        new BasicDBObject().append("tenant",tenantSession.getTenant())});
                        new BasicDBObject().append("tenant", tenantSession.getTenant())});
        DBCursor cursor = envCollection.find(queryObject);
        while(cursor.hasNext()) {
        while (cursor.hasNext()) {
            DBObject dbObject = cursor.next();
            TreeView rootTree = new TreeView();
            rootTree.setId(dbObject.get("host").toString());
            rootTree.setPid("-1");
            rootTree.setText(dbObject.get("name").toString()+"/"+dbObject.get("host").toString());
            rootTree.setText(dbObject.get("name").toString() + "/" + dbObject.get("host").toString());
            treeList.add(rootTree);
        }

+ 0 - 69
src/main/resources/logback.xml

@ -1,69 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!-- 文件目录 -->
    <property name="log_dir" value="/usr/local/esb/logs/" />
    <!-- 应用名称 -->
    <property name="APP_NAME" value="hos-admin" />
    <!--日志文件的保存路径,首先查找系统属性-Dlog.dir,如果存在就使用其;否则,在当前目录下创建名为logs目录做日志存放的目录 -->
    <property name="LOG_HOME" value="${log_dir:-logs}/${APP_NAME}" />
    <!-- 日志输出格式 -->
    <property name="ENCODER_PATTERN"
              value="%d{HH:mm:ss} [%thread] %-5level %logger{80} - %msg%n" />
    <contextName>${APP_NAME}</contextName>
    <!-- 控制台日志:输出全部日志到控制台 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>${ENCODER_PATTERN}</Pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
    </appender>
    <!-- 文件日志:输出全部日志到文件 根据日期滚动 -->
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/output.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/output.%d{yyyy-MM-dd_HH}.log</fileNamePattern>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${ENCODER_PATTERN}</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>
    <!-- 错误日志:用于将错误日志输出到独立文件 -->
    <appender name="ERROR_FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/error/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${ENCODER_PATTERN}</pattern>
            <charset>utf-8</charset>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
    </appender>
    <logger name="org.hibernate" level="WARN"/>
    <logger name="org.springframework" level="WARN"/>
    <logger name="springfox.documentation" level="WARN"/>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
        <appender-ref ref="ERROR_FILE" />
    </root>
</configuration>

+ 1 - 1
src/main/webapp/WEB-INF/ehr/jsp/common/indexJs.jsp

@ -116,7 +116,7 @@
                {id: 8, text: '质控管理', icon: '${staticRoot}/images/index/menu05.png'},
                {id: 81, pid: 8, text: '规则管理', url: '${contextRoot}/rule/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},
                <%--{id: 82, pid: 8, text: '质控报告', url: '${contextRoot}/oauth2/report', icon: '${staticRoot}/images/index/Ins_icon.png'},--%>
                {id: 82, pid: 8, text: '质控报告', url: 'http://192.168.131.106:8080/esb/report/signin?user='+ehrUser, icon: '${staticRoot}/images/index/Ins_icon.png'},
                {id: 82, pid: 8, text: '质控报告', url: '${contextRoot}/report/signin?user='+ehrUser, icon: '${staticRoot}/images/index/Ins_icon.png'},
                <%--{id: 83, pid: 8, text: '档案入库情况', url: '${contextRoot}/report/initialLs', icon: '${staticRoot}/images/index/Ins_icon.png'},--%>
                //系统配置