Browse Source

冲突解决

demon 8 years ago
parent
commit
9d64113289
32 changed files with 288 additions and 329 deletions
  1. 5 1
      hos-arbiter/pom.xml
  2. 9 0
      hos-arbiter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
  3. 1 0
      hos-arbiter/src/main/resources/application.yml
  4. 5 1
      hos-broker/pom.xml
  5. 6 4
      hos-broker/src/main/java/com/yihu/hos/common/listener/ApplicationStartListener.java
  6. 1 1
      hos-broker/src/main/java/com/yihu/hos/controllers/ESBCamelController.java
  7. 0 32
      hos-broker/src/main/java/com/yihu/hos/controllers/EndPointController.java
  8. 9 7
      hos-broker/src/main/java/com/yihu/hos/controllers/GatewayController.java
  9. 6 4
      hos-broker/src/main/java/com/yihu/hos/services/GatewayService.java
  10. 19 0
      hos-broker/src/main/resources/META-INF/additional-spring-configuration-metadata.json
  11. 7 14
      hos-broker/src/main/resources/application.yml
  12. 3 0
      hos-camel/pom.xml
  13. 54 0
      hos-camel/src/main/java/api/processor/ApiProcessor.java
  14. 16 0
      hos-camel/src/main/java/api/route/ApiRouteBulider.java
  15. 1 0
      hos-core/src/main/java/com/yihu/hos/core/datatype/ClassFileUtil.java
  16. 0 5
      hos-core/src/main/java/com/yihu/hos/core/datatype/StringUtil.java
  17. 0 5
      hos-core/src/main/java/com/yihu/hos/core/log/impl/Sl4jLoggerFactory.java
  18. 25 182
      hos-rest/src/main/java/com/yihu/hos/rest/common/http/EHRHttpHelper.java
  19. 34 34
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/GridFSUtil.java
  20. 0 4
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/PKUtil.java
  21. 9 5
      pom.xml
  22. 8 5
      sdk/java/hos-client/src/main/java/com/yihu/hos/client/BrokerServer.java
  23. 1 4
      sdk/java/hos-client/src/main/java/com/yihu/hos/client/BrokerServerClient.java
  24. 24 0
      src/main/java/com/yihu/hos/config/FilePathConfig.java
  25. 7 4
      src/main/java/com/yihu/hos/system/controller/AppController.java
  26. 6 3
      src/main/java/com/yihu/hos/system/controller/FlowController.java
  27. 22 3
      src/main/resources/application.yml
  28. 1 1
      src/main/webapp/WEB-INF/ehr/jsp/system/app/appJs.jsp
  29. 3 3
      src/main/webapp/WEB-INF/ehr/jsp/system/app/editorApp.jsp
  30. 3 3
      src/main/webapp/WEB-INF/ehr/jsp/system/app/editorAppJs.jsp
  31. 2 2
      src/main/webapp/WEB-INF/ehr/jsp/system/flow/editorFlowJs.jsp
  32. 1 2
      src/main/webapp/WEB-INF/ehr/jsp/system/flow/flowJs.jsp

+ 5 - 1
hos-arbiter/pom.xml

@ -3,7 +3,6 @@
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yihu.hos</groupId>
    <artifactId>hos-arbiter</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <packaging>jar</packaging>
@ -31,6 +30,11 @@
            <artifactId>activemq-core</artifactId>
            <version>5.7.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    <build>
        <plugins>

+ 9 - 0
hos-arbiter/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@ -0,0 +1,9 @@
{
  "properties": [
    {
      "name": "arbiter.timer.period",
      "type": "java.lang.String",
      "description": "Description for arbiter.timer.period."
    }
  ]
}

+ 1 - 0
hos-arbiter/src/main/resources/application.yml

@ -1,5 +1,6 @@
server:
  port: 10135
spring:
  application:
    name: ArbiterServer

+ 5 - 1
hos-broker/pom.xml

@ -3,7 +3,6 @@
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yihu.hos</groupId>
    <artifactId>hos-broker</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <packaging>war</packaging>
@ -91,6 +90,11 @@
            <artifactId>activemq-core</artifactId>
            <version>5.7.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

+ 6 - 4
hos-broker/src/main/java/com/yihu/hos/common/listener/ApplicationStartListener.java

@ -67,12 +67,12 @@ public class ApplicationStartListener implements ApplicationListener<ContextRefr
            Integer flowId = systemServiceFlow.getId();
            String code = systemServiceFlow.getCode();
            //默认所有class均为正确
            isCorrectClassMap.put(code, true);
            // 这是system业务系统在本地存储class的根目录
            File systemClassFlowPath = new File(this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath() + "/" + code);
            File systemClassFlowPath = new File(this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath());
            List<SystemServiceFlowClass> processesClassList = systemServiceFlowClassGroupMap.get("processor" + flowId);
            List<SystemServiceFlowClass> routesClassList = systemServiceFlowClassGroupMap.get("route" + flowId);
            // 创建processor文件
            isCorrectClassMap.put(code, true);
            if (!CollectionUtil.isEmpty(processesClassList)) {
                for (SystemServiceFlowClass processesClass : processesClassList) {
                    String className = processesClass.getClassName();
@ -82,7 +82,7 @@ public class ApplicationStartListener implements ApplicationListener<ContextRefr
                    Boolean flag = ClassFileUtil.createClassfile(systemClassFlowPath.toURI().toURL(), packageName, className, classPath);
                    // 记录到工具类中,以便其它线程需要时进行取用
                    if (flag) {
                        SystemClassMapping.getSystemClassNameMapping().put(code + BrokerConstant.PROCESSOR, code + CoreConstant.DOT + packageName + CoreConstant.DOT + className);
                        SystemClassMapping.getSystemClassNameMapping().put(code + BrokerConstant.PROCESSOR, packageName + CoreConstant.DOT + className);
                    } else {
                        isCorrectClassMap.put(code, flag);
                    }
@ -98,7 +98,7 @@ public class ApplicationStartListener implements ApplicationListener<ContextRefr
                    Boolean flag =ClassFileUtil.createClassfile(systemClassFlowPath.toURI().toURL(), packageName, className, classPath);
                    // 记录到工具类中,以便其它线程需要时进行取用
                    if (flag) {
                        SystemClassMapping.getSystemClassNameMapping().put(code + BrokerConstant.ROUTE, code + CoreConstant.DOT + packageName + CoreConstant.DOT + className);
                        SystemClassMapping.getSystemClassNameMapping().put(code + BrokerConstant.ROUTE, packageName + CoreConstant.DOT + className);
                    } else {
                        isCorrectClassMap.put(code, flag);
                    }
@ -116,6 +116,8 @@ public class ApplicationStartListener implements ApplicationListener<ContextRefr
                        }
                    }
                }
            } else {
                isCorrectClassMap.put(code, false);
            }
            if (isCorrectClassMap.get(code)) {
                if (!systemClassFlowPaths.contains(systemClassFlowPath)) {

+ 1 - 1
hos-broker/src/main/java/com/yihu/hos/controllers/ESBCamelController.java

@ -120,7 +120,7 @@ public class ESBCamelController {
    }
    @RequestMapping(value = "/genCamelFile", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    @RequestMapping(value = "/genCamelFile", produces = "application/json;charset=UTF-8", method = RequestMethod.PUT)
    @ResponseBody
    @ApiOperation(value = "生成新的camel文件", produces = "application/json", notes = "生成新的camel文件")
    public Result genCamelFile(

+ 0 - 32
hos-broker/src/main/java/com/yihu/hos/controllers/EndPointController.java

@ -1,32 +0,0 @@
package com.yihu.hos.controllers;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
/**
 * @created Airhead 2016/8/1.
 */
@RestController
@RequestMapping("/service")
@Deprecated //直接由Arbiter来提供相关接串口,这样可以避免循环依赖
public class EndPointController {
    @RequestMapping(value = "/", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    @ResponseBody
    @ApiOperation(value = "登记服务信息", produces = "application/json", notes = "登记服务信息,当服务启动时调用,及定期调用。")
    public void save(
            @ApiParam(name = "service", value = "服务信息", required = true)
            @RequestParam(value = "service") String service) {
    }
    @RequestMapping(value = "/", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "获取服务信息", produces = "application/json", notes = "获取服务信息")
    public String get(
            @ApiParam(name = "serviceName", value = "服务名称", required = true)
            @RequestParam(value = "serviceName") String serviceName) {
        return "";
    }
}

+ 9 - 7
hos-broker/src/main/java/com/yihu/hos/controllers/GatewayController.java

@ -7,23 +7,25 @@ import com.yihu.hos.models.GatewayResponseResult;
import com.yihu.hos.services.GatewayService;
import net.sf.json.JSONObject;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.Writer;
@Controller
@RestController
@RequestMapping("/esb")
public class GatewayController {
    @Resource(name = GatewayService.BEAN_ID)
    private GatewayService gatewayService;
    private final GatewayService gatewayService;
    @Autowired
    public GatewayController(GatewayService gatewayService) {
        this.gatewayService = gatewayService;
    }
    @ResponseBody
    @RequestMapping(value = "/gateway", method = RequestMethod.POST)
    public void transfer(HttpServletRequest request, HttpServletResponse response) throws Exception {
        request.setCharacterEncoding("UTF-8");

+ 6 - 4
hos-broker/src/main/java/com/yihu/hos/services/GatewayService.java

@ -16,14 +16,16 @@ import java.util.Iterator;
import java.util.Map;
/**
 * Created by chenweida on 2016/1/27.
 * @author chenweida on 2016/1/27.
 */
@Service("GatewayService")
@Service
public class GatewayService {
    public static final String BEAN_ID = "GatewayService";
    private final GatewayConfiguration gatewayConfiguration;
    @Autowired
    private GatewayConfiguration gatewayConfiguration;
    public GatewayService(GatewayConfiguration gatewayConfiguration) {
        this.gatewayConfiguration = gatewayConfiguration;
    }
    public String getResultData(GatewayRequestResult gatewayRequestResult) throws ESBException {

+ 19 - 0
hos-broker/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@ -0,0 +1,19 @@
{
  "properties": [
    {
      "name": "hos.arbiter.enable",
      "type": "java.lang.String",
      "description": "Description for hos.arbiter.enable."
    },
    {
      "name": "hos.arbiter.url",
      "type": "java.lang.String",
      "description": "Description for hos.arbiter.url."
    },
    {
      "name": "hos.timer.period",
      "type": "java.lang.String",
      "description": "Description for hos.timer.period."
    }
  ]
}

+ 7 - 14
hos-broker/src/main/resources/application.yml

@ -1,12 +1,10 @@
application:
  name: HosBrokerServer
spring:
  application:
    name: HosBrokerServer
server:
  contextPath:
  port: 8099
  contextPath:
  sessionTimeout:  300
local:
  server:
    port: 8099
security:
  basic:
    enabled: false
@ -16,10 +14,6 @@ camel:
  springboot:
    name: HosBrokerServer
# how often to trigger the timer, must less than 30s
timer:
  period: 10000
---
spring:
  profiles: dev
@ -128,12 +122,11 @@ spring:
  gateway:
    ip: localhost
    port: 8066
server:
  port: 0
hos:
  arbiter:
    enable: false
    enable: true
    url: http://172.19.103.89:10135
  timer:
      period: 10000
---
application:
  message: ESB Broker

+ 3 - 0
hos-camel/pom.xml

@ -8,6 +8,9 @@
    <artifactId>hos-camel</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>hos-camel</name>
    <description>IEP内置业务流程编排模块,本部分内容的维护主要是为了保证代码的完整性。后期如果使用编排工具后,这部分内容是不需要的。</description>
    <dependencies>
        <dependency>
            <groupId>net.sf.json-lib</groupId>

+ 54 - 0
hos-camel/src/main/java/api/processor/ApiProcessor.java

@ -0,0 +1,54 @@
package api.processor;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.http.common.HttpMessage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
 * @author Airhead
 * @since 2016-11-13
 */
public class ApiProcessor implements Processor {
    public void process(Exchange exchange) throws Exception {
        // 因为很明确消息格式是http的,所以才使用这个类
        // 否则还是建议使用org.apache.camel.Message这个抽象接口
        HttpMessage message = (HttpMessage) exchange.getIn();
        InputStream bodyStream = (InputStream) message.getBody();
        String inputContext = this.analysisMessage(bodyStream);
        bodyStream.close();
        // 存入到exchange的out区域
        if (exchange.getPattern() == ExchangePattern.InOut) {
            Message outMessage = exchange.getOut();
            outMessage.setBody("hello," + inputContext);
        }
    }
    /**
     * 从stream中分析字符串内容
     *
     * @param bodyStream
     * @return
     */
    private String analysisMessage(InputStream bodyStream) throws IOException {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] contextBytes = new byte[4096];
        int realLen;
        while ((realLen = bodyStream.read(contextBytes, 0, 4096)) != -1) {
            outStream.write(contextBytes, 0, realLen);
        }
        // 返回从Stream中读取的字串
        try {
            return new String(outStream.toByteArray(), "UTF-8");
        } finally {
            outStream.close();
        }
    }
}

+ 16 - 0
hos-camel/src/main/java/api/route/ApiRouteBulider.java

@ -0,0 +1,16 @@
package api.route;
import api.processor.ApiProcessor;
import org.apache.camel.builder.RouteBuilder;
/**
 * @author Airhead
 * @since 2016-11-13
 */
public class ApiRouteBulider extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("jetty:http://localhost:9090/api/v1").routeId("api")
                .process(new ApiProcessor());
    }
}

+ 1 - 0
hos-core/src/main/java/com/yihu/hos/core/datatype/ClassFileUtil.java

@ -31,6 +31,7 @@ public class ClassFileUtil {
            if (!systemFlowFile.exists()) {
                systemFlowFile.mkdirs();
            }
            packageName = StringUtil.replaceStrAll(packageName, ".", "/");
            File packageFile = new File(systemFlowURL.getPath() + "/" + packageName);
            if (!packageFile.exists()) {
                packageFile.mkdirs();

+ 0 - 5
hos-core/src/main/java/com/yihu/hos/core/datatype/StringUtil.java

@ -1389,11 +1389,6 @@ public class StringUtil {
        return value;
    }
    public static void main(String[] args) {
        String str = "?��???!";
    }
    /**
     * ***************************************************** ??
     * ??????��??????????null???????????????????? ????????param Content:???????????? ????????? ??

+ 0 - 5
hos-core/src/main/java/com/yihu/hos/core/log/impl/Sl4jLoggerFactory.java

@ -36,11 +36,6 @@ public class Sl4jLoggerFactory implements LoggerFactory.InternalLoggerFactory {
	public Logger getLogger(String name) {
		return new Sl4jLogger(name);
	} 
	
	public static void main(String[] args){
		Logger log = new Sl4jLogger(Sl4jLoggerFactory.class);
		log.info("test");
	}
}
class Sl4jLogger extends Logger { 

+ 25 - 182
hos-rest/src/main/java/com/yihu/hos/rest/common/http/EHRHttpHelper.java

@ -3,41 +3,27 @@ package com.yihu.hos.rest.common.http;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.http.HTTPResponse;
import com.yihu.hos.core.http.HttpClientKit;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.client.entity.GzipDecompressingEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.entity.ContentType;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import javax.net.ssl.SSLContext;
import java.io.*;
import java.io.File;
import java.util.Map;
import java.util.Properties;
import java.util.zip.GZIPInputStream;
//TODO:对于Basic认证内容,暂时未验证,可以使用http://user:password@host的方式尝试访问
public class EHRHttpHelper {
    public static String defaultHttpUrl;
    public static String clientId;
    public static String clientKey;
    private static String defaultPropertiesPath = "config/http.properties";
    private static SSLConnectionSocketFactory defaultSSL;
    private static String defaultHttpUser;
    private static String defaultHttpPassword;
    static {
        //默认配置
        try {
            final String defaultPropertiesPath = "config/http.properties";
            Resource resource = new ClassPathResource(defaultPropertiesPath);
            EncodedResource encRes = new EncodedResource(resource, "UTF-8");
            Properties props = PropertiesLoaderUtils.loadProperties(encRes);
@ -55,17 +41,11 @@ public class EHRHttpHelper {
                // sslKeystore = homeUrl + "tomcat.keystore";
                sslKeystore = "E://tomcat.keystore";
            }
            if (sslKeystore != null && sslKeystore.length() > 0 && sslPassword != null && sslPassword.length() > 0) {
                SSLContext sslContext = SSLContexts.custom()
                        .loadTrustMaterial(new File(sslKeystore), sslPassword.toCharArray(),
                                new TrustSelfSignedStrategy())
                        .build();
                defaultSSL = new SSLConnectionSocketFactory(
                        sslContext,
                        new String[]{"TLSv1"},
                        null,
                        SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            if (sslKeystore.length() > 0 && sslPassword != null && sslPassword.length() > 0) {
                HttpClientKit.addKeyStore(defaultHttpUrl, sslKeystore, sslPassword);
            }
        } catch (Exception e) {
            System.out.print(e.getMessage());
        }
@ -76,7 +56,7 @@ public class EHRHttpHelper {
     * Get方法
     ******************************************/
    public static HTTPResponse get(String url) {
        return get(url, null, null);
        return get(url, null);
    }
    public static HTTPResponse get(String url, Map<String, String> params) {
@ -84,28 +64,18 @@ public class EHRHttpHelper {
    }
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header) {
        if (url.startsWith("https")) {
            return get(url, params, header, defaultSSL);
        } else {
            //默认http不走ssl和用户密码
            return get(url, params, header, null, null, null);
        }
        return get(url, params, header, false);
    }
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
            return get(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
            return get(url, params, header, defaultHttpUser, defaultHttpPassword);
        } else {
            return get(url, params, header, null, null, null);
            return get(url, params, header, null, null);
        }
    }
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl) {
        return get(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
    }
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl, String user, String password) {
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header, String user, String password) {
        return HttpClientKit.request("GET", url, params, header);
    }
@ -113,7 +83,7 @@ public class EHRHttpHelper {
     * Post方法
     ******************************************/
    public static HTTPResponse post(String url) {
        return post(url, null, null);
        return post(url, null);
    }
    public static HTTPResponse post(String url, Map<String, String> params) {
@ -121,27 +91,18 @@ public class EHRHttpHelper {
    }
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header) {
        if (url.startsWith("https")) {
            return post(url, params, header, defaultSSL);
        } else {
            //默认http不走ssl和用户密码
            return post(url, params, header, null, null, null);
        }
        return post(url, params, header, false);
    }
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
            return post(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
            return post(url, params, header, defaultHttpUser, defaultHttpPassword);
        } else {
            return post(url, params, header, null, null, null);
            return post(url, params, header, null, null);
        }
    }
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl) {
        return post(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
    }
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl, String user, String password) {
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header, String user, String password) {
        return HttpClientKit.request("POST", url, params, header);
    }
@ -175,28 +136,18 @@ public class EHRHttpHelper {
    }
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header) {
        if (url.startsWith("https")) {
            return put(url, params, header, defaultSSL);
        } else {
            //默认http不走ssl和用户密码
            return put(url, params, header, null, null, null);
        }
        return put(url, params, header, false);
    }
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
            return put(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
            return put(url, params, header, defaultHttpUser, defaultHttpPassword);
        } else {
            return put(url, params, header, null, null, null);
            return put(url, params, header, null, null);
        }
    }
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl) {
        return put(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
    }
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl, String user, String password) {
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header, String user, String password) {
        return HttpClientKit.request("PUT", url, params, header);
    }
@ -212,127 +163,19 @@ public class EHRHttpHelper {
    }
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header) {
        if (url.startsWith("https")) {
            return delete(url, params, header, defaultSSL);
        } else {
            //默认http不走ssl和用户密码
            return delete(url, params, header, null, null, null);
        }
        return delete(url, params, header, false);
    }
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
            return delete(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
            return delete(url, params, header, defaultHttpUser, defaultHttpPassword);
        } else {
            return delete(url, params, header, null, null, null);
            return delete(url, params, header, null, null);
        }
    }
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl) {
        return delete(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
    }
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header, SSLConnectionSocketFactory ssl, String user, String password) {
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header, String user, String password) {
        return HttpClientKit.request("DELETE", url, params, header);
    }
    public static String getWebPage(String url) {
        String returnString = "";
        HTTPResponse re = new HTTPResponse(200, "");
        CloseableHttpResponse response = null;
        CloseableHttpClient httpclient = HttpClients.custom()
                .setSSLSocketFactory(defaultSSL)
                .build();
        //设置请求信息
        try {
            HttpGet httpGet = new HttpGet(url);
            response = httpclient.execute(httpGet);
            String line;
            // 读取输入流的数据,并显示
            HttpEntity httpEntity = response.getEntity();
            Header header = response.getEntity().getContentEncoding();
            if (httpEntity.getContentLength() < 2147483647L) {            //EntityUtils无法处理ContentLength超过2147483647L的Entity
                if (header != null && "gzip".equals(header.getValue())) {
                    returnString = EntityUtils.toString(new GzipDecompressingEntity(httpEntity));
                } else {
                    returnString = EntityUtils.toString(httpEntity);
                }
            } else {
                InputStream in = httpEntity.getContent();
                if (header != null && "gzip".equals(header.getValue())) {
                    returnString = unZip(in, ContentType.getOrDefault(httpEntity).getCharset().toString());
                } else {
                    returnString = readInStreamToString(in, ContentType.getOrDefault(httpEntity).getCharset().toString());
                }
                if (in != null) {
                    in.close();
                }
            }
        } catch (Exception e) {
            re = new HTTPResponse(201, e.getMessage());
            e.printStackTrace();
        } finally {
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println(returnString);
        return returnString;
    }
    /**
     * 解压服务器返回的gzip流
     *
     * @param in      抓取返回的InputStream流
     * @param charSet 页面内容编码
     * @return 页面内容的String格式
     * @throws IOException
     */
    private static String unZip(InputStream in, String charSet) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        GZIPInputStream gis = null;
        try {
            gis = new GZIPInputStream(in);
            byte[] _byte = new byte[1024];
            int len = 0;
            while ((len = gis.read(_byte)) != -1) {
                baos.write(_byte, 0, len);
            }
            String unzipString = new String(baos.toByteArray(), charSet);
            return unzipString;
        } finally {
            if (gis != null) {
                gis.close();
            }
            if (baos != null) {
                baos.close();
            }
        }
    }
    /**
     * 读取InputStream流
     *
     * @param in InputStream流
     * @return 从流中读取的String
     * @throws IOException
     */
    private static String readInStreamToString(InputStream in, String charSet) throws IOException {
        StringBuilder str = new StringBuilder();
        String line;
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, charSet));
        while ((line = bufferedReader.readLine()) != null) {
            str.append(line);
            str.append("\n");
        }
        if (bufferedReader != null) {
            bufferedReader.close();
        }
        return str.toString();
    }
}

+ 34 - 34
hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/GridFSUtil.java

@ -377,40 +377,40 @@ public class GridFSUtil {
    public static void main(String[] args) {
        try {
            //上传
            Map<String,Object> params= new HashMap<>();
//            params.put("cda_id","111");
//            params.put("report_id","1001");
            params.put("patient_id","1001");
            params.put("event_no","1001");
//            String fileName = "e:/test/肺2.jpg";
//            uploadFile("mydb", fileName,params);
            //下载
//            String filePath="e:/test/xiao_copy.jpg";
//            downFile("mydb",filePath,"579067939724e11514b2eead");
            //删除
//            deleteFile("mydb","57906e369724e11dd8e75798");
            //查询
//            List<GridFSFile> fsFiles  = findFiles("mydb",params);
            // 根据objectId集合 查询
//            List<ObjectId> list=new ArrayList<>();
//            list.add(new ObjectId("5791c9399724e12b9437b229"));
//            list.add(new ObjectId("5795aab07a2b9020ec19fdfa"));
//            List<GridFSFile> fs=findFsFiles("mydb",list);
            //测试查询类
            tTestFind("document","CDA_TEST",params);
            //批量下载
//            String filePath="e:/test/";
//            downFileList("mydb",filePath, fs);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
//    public static void main(String[] args) {
//        try {
//            //上传
//            Map<String,Object> params= new HashMap<>();
////            params.put("cda_id","111");
////            params.put("report_id","1001");
//            params.put("patient_id","1001");
//            params.put("event_no","1001");
////            String fileName = "e:/test/肺2.jpg";
////            uploadFile("mydb", fileName,params);
//            //下载
////            String filePath="e:/test/xiao_copy.jpg";
////            downFile("mydb",filePath,"579067939724e11514b2eead");
//            //删除
////            deleteFile("mydb","57906e369724e11dd8e75798");
//            //查询
////            List<GridFSFile> fsFiles  = findFiles("mydb",params);
//            // 根据objectId集合 查询
////            List<ObjectId> list=new ArrayList<>();
////            list.add(new ObjectId("5791c9399724e12b9437b229"));
////            list.add(new ObjectId("5795aab07a2b9020ec19fdfa"));
//
////            List<GridFSFile> fs=findFsFiles("mydb",list);
//            //测试查询类
//            tTestFind("document","CDA_TEST",params);
//            //批量下载
////            String filePath="e:/test/";
////            downFileList("mydb",filePath, fs);
//
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
    /*************************************** MineType 工具类 *********************************/

+ 0 - 4
hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/PKUtil.java

@ -22,8 +22,4 @@ public class PKUtil {
        System.out.println("==============生成PKUtil===============");
        return UUID.randomUUID().toString().replaceAll("-", "");
    }
    public static void main(String[] args) {
        System.out.println(PKUtil.getUuid().length());
    }
}

+ 9 - 5
pom.xml

@ -27,11 +27,11 @@
    </properties>
    <dependencies>
        <!--<dependency>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<artifactId>spring-boot-starter-tomcat</artifactId>-->
        <!--<scope>provided</scope>-->
        <!--</dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
@ -59,6 +59,10 @@
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-data-jpa</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>

+ 8 - 5
sdk/java/hos-client/src/main/java/com/yihu/hos/client/BrokerServer.java

@ -1,9 +1,6 @@
package com.yihu.hos.client;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.*;
import java.io.IOException;
import java.util.Arrays;
@ -76,7 +73,13 @@ class BrokerServer {
        ClientResponse result = new ClientResponse();
        try {
            OkHttpClient okHttpClient = new OkHttpClient();
            Request request = new Request.Builder().url(hostAddress + ":" + port + method).build();
            FormBody.Builder fromBodyBuilder = new FormBody.Builder();
            clientRequest.getArgs().forEach(fromBodyBuilder::add);
            RequestBody requestBody = fromBodyBuilder
                    .build();
            Request request = new Request.Builder().url(hostAddress + ":" + port + method)
                    .post(requestBody)
                    .build();
            Call call = okHttpClient.newCall(request);
            Response response = call.execute();
            if (!response.isSuccessful()) {

+ 1 - 4
sdk/java/hos-client/src/main/java/com/yihu/hos/client/BrokerServerClient.java

@ -2,10 +2,7 @@ package com.yihu.hos.client;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.*;
import java.io.IOException;
import java.util.HashMap;

+ 24 - 0
src/main/java/com/yihu/hos/config/FilePathConfig.java

@ -0,0 +1,24 @@
package com.yihu.hos.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
 * Created by zhenglingfeng on 2016/11/23.
 */
@Configuration
public class FilePathConfig {
    @Value("${upload.file.path}")
    private String filePath;
    @Value("${upload.server.path}")
    private String serverPath;
    public String getFilePath() {
        return filePath;
    }
    public String getServerPath() {
        return serverPath;
    }
}

+ 7 - 4
src/main/java/com/yihu/hos/system/controller/AppController.java

@ -1,11 +1,13 @@
package com.yihu.hos.system.controller;
import com.yihu.hos.config.FilePathConfig;
import com.yihu.hos.system.model.SystemApp;
import com.yihu.hos.system.model.SystemServiceEndpoint;
import com.yihu.hos.system.service.intf.IAppManager;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
@ -30,7 +32,8 @@ import java.util.Map;
public class AppController extends BaseController {
    @Resource(name = "appManager")
    private IAppManager appManager;
    @Autowired
    private FilePathConfig filePathConfig;
    /**
     *  应用管理管理界面
@ -331,12 +334,12 @@ public class AppController extends BaseController {
    @ResponseBody
    public Object upload(@RequestParam MultipartFile file,HttpSession session,HttpServletRequest request
    ) {
        String basePath = getServletContext().getRealPath("/") + "upload";
        String path = appManager.uploadFile(file,basePath);
        String basePath = filePathConfig.getFilePath();
        String path = appManager.uploadFile(file, basePath);
        if (StringUtils.isEmpty(path)){
            return Result.error("上传失败");
        }else {
            return Result.success(path);
            return Result.success(filePathConfig.getServerPath() + "/" + path);
        }
    }

+ 6 - 3
src/main/java/com/yihu/hos/system/controller/FlowController.java

@ -2,6 +2,7 @@ package com.yihu.hos.system.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.common.constants.Constants;
import com.yihu.hos.config.FilePathConfig;
import com.yihu.hos.system.model.SystemServiceFlow;
import com.yihu.hos.system.model.SystemServiceFlowClass;
import com.yihu.hos.system.model.SystemServiceFlowTemp;
@ -9,6 +10,7 @@ import com.yihu.hos.system.service.FlowManager;
import com.yihu.hos.system.service.intf.IFlowManage;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@ -42,7 +44,8 @@ public class FlowController extends BaseController {
    @Value("${esb.camelFile}")
    private String camelFile;
    @Autowired
    private FilePathConfig filePathConfig;
    /**
     *  流程管理管理界面
     *
@ -221,13 +224,13 @@ public class FlowController extends BaseController {
    public Object uploadImg(@RequestParam MultipartFile file,HttpServletRequest request
    ) {
        //TODO 文件地址设置
        String basePath = this.getServletContext().getRealPath(File.separator) + File.separator + "upload";
        String basePath = filePathConfig.getFilePath();
        String path = flowManage.uploadFile(file, basePath);
        if (StringUtils.isEmpty(path)){
            return Result.error("上传失败");
        }else {
            return Result.success(path);
            return Result.success(filePathConfig.getServerPath() + "/" + path);
        }
    }

+ 22 - 3
src/main/resources/application.yml

@ -35,8 +35,13 @@ spring:
    pooled: false
esb:
  genCamelUrl: http://192.168.131.11:8099/esb/genCamelFile
  copyProcessorUrl: http://192.168.131.11:8099/esb/copyProcessor
  camelFile: E:/
  camelFile: D:\
upload:
  file:
    path: D:\code\newHealth\new-esb\esb\src\main\webapp
  server:
    path: http://localhost:8080/esb
---
spring:
  profiles: test
@ -55,8 +60,12 @@ spring:
    pooled: false
esb:
  genCamelUrl: http://192.168.131.11:8099/esb/genCamelFile
  copyProcessorUrl: http://192.168.131.11:8099/esb/copyProcessor
  camelFile: usr/local/esb/
upload:
  file:
    path: /usr/local/esb/file/webapps/ROOT
  server:
    path: http://172.19.103.89:8081
#  data:
#    mongodb:
#      host: 172.19.103.86
@ -83,6 +92,11 @@ spring:
    user: admin
    password: admin
    pooled: false
upload:
  file:
    path: /usr/local/esb/file/webapps/ROOT
  server:
    path: http://172.19.103.89:8081
---
spring:
  profiles: hzy
@ -99,3 +113,8 @@ spring:
    user: admin
    password: admin
    pooled: false
upload:
  file:
    path: /usr/local/esb/file/webapps/ROOT
  server:
    path: http://172.19.103.89:8081

+ 1 - 1
src/main/webapp/WEB-INF/ehr/jsp/system/app/appJs.jsp

@ -33,7 +33,7 @@
                    {display: '应用名称', id: 'id', name: 'name', width: '15%'},
                    {display: '英文名', name: 'code', width: '10%'},
                    {display: '图标', name: 'icon', width: '10%',height:'50',align: 'center', render: function (rowdata, rowindex, value) {
                        return ' <div style="vertical-align:middle;"><img  style="width: 50px; height: 50px;"  src="${contextRoot}/'+ rowdata.icon+'" /></div>';
                        return ' <div style="vertical-align:middle;"><img  style="width: 50px; height: 50px;"  src="'+ rowdata.icon+'" /></div>';
                    }},
                    {display: '开发者', name: 'developer', width: '10%'},
                    {display: '状态', name: 'status', width: '10%',align: 'center', render: function (rowdata, rowindex, value) {

+ 3 - 3
src/main/webapp/WEB-INF/ehr/jsp/system/app/editorApp.jsp

@ -27,7 +27,7 @@
        <label><span class="red">*&nbsp;</span>图标:</label>
        <div class="m-form-control">
            <c:if test="${model.icon!=''}">
                <img style="width: 60px;" src="${contextRoot}/${model.icon}" id="img_icon">
                <img style="width: 60px;" src="${model.icon}" id="img_icon">
            </c:if>
        </div>
    </div>
@ -36,7 +36,7 @@
        <div class="m-form-control">
            <form id="form1" action="${contextRoot}/app/upload" method="post" enctype="multipart/form-data">
                    <input type="text" id="name_icon" name="icon" class="l-textbox btnGrayUp" style="width: 144px;"  placeholder="点击选择应用图标" readonly="readonly" data-id="">
                    <input type="text" id="name_icon" name="icon" class="l-textbox btnGrayUp" style="width: 144px;"  placeholder="点击选择应用图标" readonly="readonly" data-id=""/>
                    <div style="float: right;">
                        <div  class="l-button l-button-no btnGrayDo" data-id="1">
                            <span style="background-color: rgb(240, 240, 240);">上传</span>
@ -101,7 +101,7 @@
        <div id="btnCancel" class="l-button l-button-no">
            <span>关闭</span>
        </div>
        <div id="btnEditor" class="l-button" style="display: none">
        <div id="btnEditor" class="l-button" style="display: no">
            <span>编辑</span>
        </div>
        <div id="btnSave" class="l-button">

+ 3 - 3
src/main/webapp/WEB-INF/ehr/jsp/system/app/editorAppJs.jsp

@ -160,9 +160,9 @@
                        success:  function processJson(data){
                            if(data.successFlg){
                                formsay.html("上传成功");
                                formObj.find("input[type=text]").attr("data-id","${contextRoot}/upload/"+data.message)//设置已上传的文件的ID
                                formObj.find("input[type=text]").val("${contextRoot}/upload/"+data.message)//设置已上传的文件的ID
                                $("#img_icon").attr("src","${contextRoot}/upload/"+data.message)//设置已上传的文件的ID
                                formObj.find("input[type=text]").attr("data-id", data.message)//设置已上传的文件的ID
                                formObj.find("input[type=text]").val(data.message)//设置已上传的文件的ID
                                $("#img_icon").attr("src", data.message)//设置已上传的文件的ID
                                formObj.closest("div").find("span").html("重新上传<i></i>");
                            }else{
                                $.ligerDialog.error("上传格式有问题");

+ 2 - 2
src/main/webapp/WEB-INF/ehr/jsp/system/flow/editorFlowJs.jsp

@ -237,8 +237,8 @@
                        success:  function processJson(data){
                            if(data.successFlg){
                                formsay.attr("class","say true").html("上传成功");
                                formObj.find("input[type=text]").attr("data-id","/upload/"+data.message)//设置已上传的文件的ID
                                formObj.find("input[type=text]").val("/upload/"+data.message)//设置已上传的文件的ID
                                formObj.find("input[type=text]").attr("data-id", data.message)//设置已上传的文件的ID
                                formObj.find("input[type=text]").val(data.message)//设置已上传的文件的ID
                                formObj.closest("div").find("span").html("重新导入<i></i>");
                            }else{

+ 1 - 2
src/main/webapp/WEB-INF/ehr/jsp/system/flow/flowJs.jsp

@ -158,8 +158,7 @@
        showImage: function (chart) {
            var me = this;
            var title = "流程图";
            debugger
            var url = "${contextRoot}"+"/"+chart;
            var url = chart;
            $("#divedit").show();
            $("#divImg").attr("src",url);