浏览代码

Merge branch 'master' of http://192.168.1.220:10080/CoSharp/eip

airhead 7 年之前
父节点
当前提交
723a0f955b
共有 27 个文件被更改,包括 1024 次插入66 次删除
  1. 15 1
      hos-camel2/src/main/java/camel/central/archives/processor/ArchivesService.java
  2. 6 4
      hos-camel2/src/main/java/camel/central/archives/route/ArchivesRouterBuilder.java
  3. 6 1
      hos-camel2/src/main/java/camel/central/gateway/processor/GatewayProcessor.java
  4. 16 2
      hos-camel2/src/main/java/camel/central/gateway/route/GatewayRouterBuilder.java
  5. 40 0
      src/main/java/com/yihu/hos/common/HosAdminLogger.java
  6. 63 0
      src/main/java/com/yihu/hos/common/XmlUtil.java
  7. 100 0
      src/main/java/com/yihu/hos/interceptor/HosAdminLogAspect.java
  8. 2 3
      src/main/java/com/yihu/hos/standard/controller/AdapterDatasetController.java
  9. 1 2
      src/main/java/com/yihu/hos/standard/controller/AdapterDictController.java
  10. 2 3
      src/main/java/com/yihu/hos/standard/controller/AdapterDictEntryController.java
  11. 1 2
      src/main/java/com/yihu/hos/standard/controller/AdapterMetadataController.java
  12. 1 2
      src/main/java/com/yihu/hos/standard/controller/InitController.java
  13. 1 2
      src/main/java/com/yihu/hos/standard/controller/PublisherController.java
  14. 2 3
      src/main/java/com/yihu/hos/standard/controller/SchemeController.java
  15. 2 3
      src/main/java/com/yihu/hos/standard/controller/SchemeVersionController.java
  16. 3 4
      src/main/java/com/yihu/hos/standard/controller/StandardController.java
  17. 1 1
      src/main/java/com/yihu/hos/standard/controller/StandardVersionController.java
  18. 1 2
      src/main/java/com/yihu/hos/standard/controller/StdDatasetController.java
  19. 1 2
      src/main/java/com/yihu/hos/standard/controller/StdDictController.java
  20. 1 2
      src/main/java/com/yihu/hos/standard/controller/StdDictEntryController.java
  21. 1 2
      src/main/java/com/yihu/hos/standard/controller/StdMetadataController.java
  22. 26 4
      src/main/java/com/yihu/hos/standard/service/adapter/AdapterSchemeService.java
  23. 31 0
      src/main/resources/logback-spring.xml
  24. 658 0
      src/main/resources/template/h3c-di-job.xml
  25. 13 8
      src/main/webapp/WEB-INF/ehr/jsp/common/indexJs.jsp
  26. 3 13
      src/main/webapp/WEB-INF/ehr/jsp/qc/editorRuleJs.jsp
  27. 27 0
      src/test/java/com/yihu/hos/services/AdapterSchemeServiceTest.java

+ 15 - 1
hos-camel2/src/main/java/camel/central/archives/processor/ArchivesService.java

@ -2,6 +2,7 @@ package camel.central.archives.processor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.hos.core.encrypt.MD5;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import org.apache.camel.Exchange;
@ -9,6 +10,7 @@ import org.apache.camel.Message;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.io.File;
import java.io.IOException;
/**
@ -22,6 +24,14 @@ public class ArchivesService {
    private static final Logger logger = LoggerFactory.getLogger(ArchivesService.class);
    private ObjectMapper objectMapper = new ObjectMapper();
    public void bodyValue(Exchange exchange) {
        Message in = exchange.getIn();
        String body = in.getBody(String.class);
        System.out.println("入库解析结果:"+body);
        exchange.getOut().setBody(body);
    }
    //入库服务参数设置
    public void storageArchive(Exchange exchange) {
        Message in = exchange.getIn();
@ -31,7 +41,7 @@ public class ArchivesService {
                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;
                String query = "&packageId="+packageId+"&clientId="+clientId+"&echo="+false;
                exchange.getOut().setHeader(Exchange.REST_HTTP_QUERY,query);
                System.out.println("入库参数:"+query);
@ -44,5 +54,9 @@ public class ArchivesService {
    }
    public static void main(String[] args) throws Exception {
        String value= MD5.getMd5ByFile(new File("E:\\test\\可使用包\\dc3ec66729fef8f1311f247a34fa7e_4.zip"));
        System.out.println(value);
    }
}

+ 6 - 4
hos-camel2/src/main/java/camel/central/archives/route/ArchivesRouterBuilder.java

@ -36,11 +36,12 @@ public class ArchivesRouterBuilder extends RouteBuilder {
        context.addComponent(ArchivesConstant.CAMEL_COMPONENT, JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
        // 档案上传接口代理 (兼容非病人维度上传)
        from("jetty:http://0.0.0.0:9912/api/dataset_package?bridgeEndpoint=true&enableMultipartFilter=false").routeId("datasetUpload1")
        from("jetty:http://0.0.0.0:9912/api/datasetPackages?bridgeEndpoint=true&enableMultipartFilter=false").routeId("datasetUpload1")
                .removeHeaders("CamelHttp*")
                .setHeader("User-Agent", header("UserAgent"))//使用postman测试时,无法设置User-Agent,使用UserAgent来获取
//                .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")//上传档案
                .to("jetty:http://192.168.1.221:10140/api/v1.0/datasetPackages")//上传档案
//                .to("jetty:http://192.168.131.106:10140/api/v1.0/datasetPackages")//上传档案
                .choice()
                .when(header(Exchange.HTTP_RESPONSE_CODE).isEqualTo("200")).to(ExchangePattern.InOnly, ArchivesConstant.CAMEL_ENDPOINT)//成功:发送入库消息
                .otherwise().log("上传失败").to("stream:out")
@ -50,7 +51,8 @@ public class ArchivesRouterBuilder extends RouteBuilder {
        //入库请求(消费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")
                .to("restlet:http://192.168.1.221:10170/api/v1.0/datasetPackages/resolve?restletMethod=PUT")
//                .to("bean:archivesService?method=bodyValue")//返回值
        ;
        ;

+ 6 - 1
hos-camel2/src/main/java/camel/central/gateway/processor/GatewayProcessor.java

@ -193,7 +193,12 @@ public class GatewayProcessor implements Processor {
                url = appApi.getMicroServiceUri();
            }
            final String[] endPoint = {"restlet:" + url + appApi.getMsMethodName() + "?socketTimeout=60000&connectionTimeout=60000&restletMethod=" + methodMap.get(appApi.getMethod())};
            final String[] endPoint = {""};
            if (exchange.getIn().getHeader(Exchange.CONTENT_TYPE,String.class).contains("multipart/form-data")){
                endPoint[0] = "jetty:" + url + appApi.getMsMethodName() + "?a=a";
            }else {
                endPoint[0] = "restlet:" + url + appApi.getMsMethodName() + "?socketTimeout=60000&connectionTimeout=60000&restletMethod=" + methodMap.get(appApi.getMethod());
            }
            final String[] body = {""};
            appApi.getParameters().forEach(p -> {
                JsonNode paramNode = jsonNode.get(p.getName());

+ 16 - 2
hos-camel2/src/main/java/camel/central/gateway/route/GatewayRouterBuilder.java

@ -3,7 +3,9 @@ package camel.central.gateway.route;
import camel.central.gateway.processor.ErrorHandle;
import camel.central.gateway.processor.GatewayProcessor;
import camel.central.gateway.processor.WsProcessor;
import com.yihu.hos.web.framework.constant.ArchivesConstant;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jetty.JettyHttpComponent;
import org.apache.camel.util.jsse.KeyManagersParameters;
@ -53,12 +55,24 @@ public class GatewayRouterBuilder extends RouteBuilder {
                .to("jetty:http://192.168.1.221:10000?bridgeEndpoint=true&throwExceptionOnFailure=false");
        // 档案上传接口代理
        from("jetty:http://0.0.0.0:9990/api/packages?bridgeEndpoint=true&enableMultipartFilter=false").routeId("proxyUploadPack")
        from("jetty:http://0.0.0.0:9999/api/packages?bridgeEndpoint=true&enableMultipartFilter=false").routeId("proxyUploadPack")
                .removeHeaders("CamelHttp*")
                .to("jetty:http://192.168.1.221:10140/api/v1.0/packages");
        // 档案上传-非病人档案维度代理接口(锐软上传)
        from("jetty:http://0.0.0.0:9999/api/datasetPackages?bridgeEndpoint=true&enableMultipartFilter=false").routeId("datasetUpload2")
                .removeHeaders("CamelHttp*")
//                .to("jetty:http://192.168.1.221:10140/api/v1.0/dataset_package")
                .to("jetty:http://192.168.1.221:10140/api/v1.0/datasetPackages")//上传档案
                .choice()
                .when(header(Exchange.HTTP_RESPONSE_CODE).isEqualTo("200")).to(ExchangePattern.InOnly, ArchivesConstant.CAMEL_ENDPOINT)//成功:发送入库消息
                .otherwise().log("上传失败").to("stream:out")
                .endChoice();
        //统一网关入口(restful)
        from("jetty:http://0.0.0.0:9999/api").routeId("api")
        from("jetty:http://0.0.0.0:9999/api?bridgeEndpoint=true&enableMultipartFilter=false").routeId("api")
                .setHeader("User-Agent", header("UserAgent"))//使用postman测试时,无法设置User-Agent,使用UserAgent来获取
                .removeHeaders("CamelHttp*")
                .process(new GatewayProcessor())
                .routingSlip(method(GatewayProcessor.class, "route"));

+ 40 - 0
src/main/java/com/yihu/hos/common/HosAdminLogger.java

@ -0,0 +1,40 @@
package com.yihu.hos.common;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.ehr.util.datetime.DateTimeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
/**
 * 数据交换平台日志记录器
 */
public class HosAdminLogger {
    private static Logger logger = LoggerFactory.getLogger(HosAdminLogger.class);
    /**
     * 业务日志输出
     *
     * @param caller 调用者
     * @param info 日志信息
     */
    public static void info(String caller, JsonNode info) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            ObjectNode log = objectMapper.createObjectNode();
            log.put("caller", caller);
            log.put("time", DateTimeUtil.simpleDateTimeFormat(new Date()));
            log.put("logType", "3");
            log.set("data", info);
            logger.info(log.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

+ 63 - 0
src/main/java/com/yihu/hos/common/XmlUtil.java

@ -0,0 +1,63 @@
package com.yihu.hos.common;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
 * 封装 dom4j,简化操作 XML
 *
 * @author 张进军
 * @date 2017/6/19 14:02
 */
public class XmlUtil {
    private static Logger logger = Logger.getLogger(XmlUtil.class);
    /**
     * 将指定 XML 文件转换为 Document 对象
     *
     * @param xmlPath XML 路径
     * @return Document 对象
     */
    public static Document xml2doc(String xmlPath) {
        Document doc = null;
        try {
            SAXReader saxReader = new SAXReader();
            doc = saxReader.read(new File(xmlPath));
        } catch (DocumentException e) {
            logger.error("XML 转换成 Document 失败:" + e);
        }
        return doc;
    }
    /**
     * 将指定的 Document 对象转换成 XML 文件,并生成在指定路径下
     *
     * @param doc     被转换的 Document 对象
     * @param xmlPath 存放转换成的 XML 文件的路径
     * @return int 0: 生成失败,1:生成成功
     */
    public static int doc2xmlFormat(Document doc, String xmlPath) {
        int result = 0;
        try {
            OutputFormat outputFormat = OutputFormat.createCompactFormat();
            outputFormat.setEncoding("UTF-8");
            XMLWriter xmlWriter = new XMLWriter(new FileWriter(new File(xmlPath)), outputFormat);
            xmlWriter.write(doc);
            xmlWriter.close();
            result = 1;
        } catch (IOException e) {
            logger.error("Document 转换成 XML 失败:" + e);
        }
        return result;
    }
}

+ 100 - 0
src/main/java/com/yihu/hos/interceptor/HosAdminLogAspect.java

@ -0,0 +1,100 @@
package com.yihu.hos.interceptor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.hos.common.HosAdminLogger;
import com.yihu.hos.common.constants.ContextAttributes;
import com.yihu.hos.system.model.SystemUser;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;
/**
 * 记录数据交换平台业务请求的日志
 *
 * @author 张进军
 * @date 2017.7.6 16::06
 */
@Aspect
@Component
public class HosAdminLogAspect {
    private static Logger logger = LoggerFactory.getLogger(HosAdminLogAspect.class);
    private String requestPath; // 请求地址
    private String operationPath; //操作地址(去掉项目部署名称的地址)
    private String userName; // 用户名
    private String function; // 操作页面名称
    private String operation; // 操作内容(增、删、改、查、导入)
    private Map<?, ?> inputParamMap = null; // 传入参数
    private Map<String, Object> outputParamMap = null; // 输出结果
    private long startTimeMillis = 0; // 开始时间
    private long endTimeMillis = 0; // 结束时间
    @Autowired
    private ObjectMapper objectMapper;
    @Before("execution(* com.yihu.hos.*.controller..*.*(..))")
    public void doBeforeInServiceLayer(JoinPoint joinPoint) {
        startTimeMillis = System.currentTimeMillis();
    }
    @After("execution(* com.yihu.hos.*.controller..*.*(..))")
    public void doAfterInServiceLayer(JoinPoint joinPoint) throws JsonProcessingException {
        endTimeMillis = System.currentTimeMillis();
        // 记录请求日志
        this.recordLog();
    }
    @Around("execution(* com.yihu.hos.*.controller..*.*(..))")
    public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        operationPath = request.getServletPath();
        inputParamMap = request.getParameterMap();
        requestPath = request.getRequestURL().toString();
        Object result = pjp.proceed();
        outputParamMap = new HashMap<String, Object>();
        outputParamMap.put("result", result);
        return result;
    }
    /**
     * 记录请求日志
     */
    private void recordLog() throws JsonProcessingException {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
        HttpSession session = request.getSession();
        SystemUser systemUser = (SystemUser) session.getAttribute(ContextAttributes.USER_INFO);
        String loginCode = systemUser == null ? "" : systemUser.getLoginCode();
        String userName = systemUser == null ? "" : systemUser.getUserName();
        ObjectNode data = objectMapper.createObjectNode();
        data.put("patient", userName); // 调用者
        data.put("url", requestPath); // 调用的控制器路径
        data.put("responseTime", endTimeMillis - startTimeMillis); // 响应时长
        data.put("responseCode", response.getStatus()); // 响应状态
        data.put("response", objectMapper.writeValueAsString(outputParamMap)); // 请求返回的结果
        data.put("appKey", "ESB"); // 应用名称:共享交换平台
        data.put("param", objectMapper.writeValueAsString(inputParamMap)); // 请求传递的参数
        HosAdminLogger.info(loginCode, data);
    }
}

+ 2 - 3
src/main/java/com/yihu/hos/standard/controller/AdapterDatasetController.java

@ -1,10 +1,9 @@
package com.yihu.hos.standard.controller;
import com.yihu.hos.standard.service.adapter.AdapterDatasetService;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import com.yihu.hos.standard.service.adapter.AdapterDatasetService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -20,7 +19,7 @@ import java.io.UnsupportedEncodingException;
 */
@RestController("AdapterDatasetController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "AdapterDatasetController", description = "适配数据集管理", tags = {"适配数据集"})
//@Api(protocols = "https", value = "AdapterDatasetController", description = "适配数据集管理", tags = {"适配数据集"})
public class AdapterDatasetController extends BaseController {
    @Resource(name = AdapterDatasetService.BEAN_ID)

+ 1 - 2
src/main/java/com/yihu/hos/standard/controller/AdapterDictController.java

@ -6,7 +6,6 @@ import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
@ -18,7 +17,7 @@ import javax.annotation.Resource;
 */
@RestController("AdapterDictController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "AdapterDictController", description = "适配字典管理", tags = {"适配字典"})
//@Api(protocols = "https", value = "AdapterDictController", description = "适配字典管理", tags = {"适配字典"})
public class AdapterDictController extends BaseController {
    @Resource(name = AdapterDictService.BEAN_ID)

+ 2 - 3
src/main/java/com/yihu/hos/standard/controller/AdapterDictEntryController.java

@ -1,10 +1,9 @@
package com.yihu.hos.standard.controller;
import com.yihu.hos.standard.service.adapter.AdapterDictEntryService;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import com.yihu.hos.standard.service.adapter.AdapterDictEntryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -18,7 +17,7 @@ import javax.annotation.Resource;
 */
@RestController("AdapterDictEntryController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "AdapterDictEntryController", description = "适配字典项管理", tags = {"适配字典项"})
//@Api(protocols = "https", value = "AdapterDictEntryController", description = "适配字典项管理", tags = {"适配字典项"})
public class AdapterDictEntryController extends BaseController {
    @Resource(name = AdapterDictEntryService.BEAN_ID)

+ 1 - 2
src/main/java/com/yihu/hos/standard/controller/AdapterMetadataController.java

@ -8,7 +8,6 @@ import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
@ -20,7 +19,7 @@ import javax.annotation.Resource;
 */
@RestController("AdapterMetadataController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "AdapterMetadataController", description = "适配字典管理", tags = {"适配字典"})
//@Api(protocols = "https", value = "AdapterMetadataController", description = "适配字典管理", tags = {"适配字典"})
public class AdapterMetadataController extends BaseController {
    @Resource(name = AdapterMetadataService.BEAN_ID)
    private AdapterMetadataService metadataService;

+ 1 - 2
src/main/java/com/yihu/hos/standard/controller/InitController.java

@ -3,7 +3,6 @@ package com.yihu.hos.standard.controller;
import com.yihu.hos.standard.service.adapter.AdapterDictService;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.util.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -17,7 +16,7 @@ import javax.annotation.Resource;
 */
@RestController("InitController")
@RequestMapping("/init")
@Api(protocols = "https", value = "AdapterDictController", description = "适配字典管理", tags = {"适配字典"})
//@Api(protocols = "https", value = "AdapterDictController", description = "适配字典管理", tags = {"适配字典"})
public class InitController extends BaseController {
    @Resource(name = AdapterDictService.BEAN_ID)

+ 1 - 2
src/main/java/com/yihu/hos/standard/controller/PublisherController.java

@ -4,7 +4,6 @@ import com.yihu.hos.standard.service.standard.StdPublisherService;
import com.yihu.hos.web.framework.model.DictionaryResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -18,7 +17,7 @@ import javax.annotation.Resource;
 */
@RestController("PublisherController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "PublisherController", description = "发布者管理", tags = {"发布者"})
//@Api(protocols = "https", value = "PublisherController", description = "发布者管理", tags = {"发布者"})
public class PublisherController extends BaseController {
    @Resource(name = StdPublisherService.BEAN_ID)

+ 2 - 3
src/main/java/com/yihu/hos/standard/controller/SchemeController.java

@ -1,10 +1,9 @@
package com.yihu.hos.standard.controller;
import com.yihu.hos.standard.service.adapter.AdapterSchemeService;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import com.yihu.hos.standard.service.adapter.AdapterSchemeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -15,7 +14,7 @@ import javax.annotation.Resource;
@RestController("SchemeController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "SchemeController", description = "适配方案管理", tags = {"适配方案"})
//@Api(protocols = "https", value = "SchemeController", description = "适配方案管理", tags = {"适配方案"})
public class SchemeController extends BaseController {
    @Resource(name = AdapterSchemeService.BEAN_ID)
    private AdapterSchemeService adapterSchemeService;

+ 2 - 3
src/main/java/com/yihu/hos/standard/controller/SchemeVersionController.java

@ -1,12 +1,11 @@
package com.yihu.hos.standard.controller;
import com.yihu.hos.standard.service.adapter.AdapterSchemeVersionService;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.web.framework.model.DictionaryResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.model.TreeResult;
import com.yihu.hos.web.framework.util.controller.BaseController;
import com.yihu.hos.standard.service.adapter.AdapterSchemeVersionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -19,7 +18,7 @@ import java.util.List;
@RestController("SchemeVersionController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "SchemeVersionController", description = "适配版本管理", tags = {"适配版本"})
//@Api(protocols = "https", value = "SchemeVersionController", description = "适配版本管理", tags = {"适配版本"})
public class SchemeVersionController extends BaseController {
    @Resource(name = AdapterSchemeVersionService.BEAN_ID)
    private AdapterSchemeVersionService adapterSchemeVersion;

+ 3 - 4
src/main/java/com/yihu/hos/standard/controller/StandardController.java

@ -1,13 +1,12 @@
package com.yihu.hos.standard.controller;
import com.yihu.hos.standard.model.standard.resultModel.StandardParamResultModel;
import com.yihu.hos.standard.service.standard.StandardService;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.DictionaryResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import com.yihu.hos.standard.model.standard.resultModel.StandardParamResultModel;
import com.yihu.hos.standard.service.standard.StandardService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -18,7 +17,7 @@ import javax.annotation.Resource;
@RestController("StandardController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StandardController", description = "标准管理", tags = {"标准"})
//@Api(protocols = "https", value = "StandardController", description = "标准管理", tags = {"标准"})
public class StandardController extends BaseController {
    @Resource(name = StandardService.BEAN_ID)
    private StandardService standardService;

+ 1 - 1
src/main/java/com/yihu/hos/standard/controller/StandardVersionController.java

@ -18,7 +18,7 @@ import javax.annotation.Resource;
 */
@RestController("StandardVersionController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StandardVersionController", description = "标准版本管理", tags = {"标准版本"})
//@Api(protocols = "https", value = "StandardVersionController", description = "标准版本管理", tags = {"标准版本"})
public class StandardVersionController extends BaseController {
    @Resource(name = StandardVersionService.BEAN_ID)
    private StandardVersionService standardVersionService;

+ 1 - 2
src/main/java/com/yihu/hos/standard/controller/StdDatasetController.java

@ -7,7 +7,6 @@ import com.yihu.hos.standard.service.standard.StdDatasetService;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -23,7 +22,7 @@ import java.util.Map;
 */
@RestController("StdDatasetController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StdDatasetController", description = "标准数据集管理", tags = {"标准数据集"})
//@Api(protocols = "https", value = "StdDatasetController", description = "标准数据集管理", tags = {"标准数据集"})
public class StdDatasetController extends BaseController {
    @Resource(name = StdDatasetService.BEAN_ID)
    private StdDatasetService stdDatasetService;

+ 1 - 2
src/main/java/com/yihu/hos/standard/controller/StdDictController.java

@ -9,7 +9,6 @@ import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.DictionaryResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -26,7 +25,7 @@ import java.util.Map;
 */
@RestController("StdDictController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StdDictController", description = "标准字典管理", tags = {"标准字典"})
//@Api(protocols = "https", value = "StdDictController", description = "标准字典管理", tags = {"标准字典"})
public class StdDictController extends BaseController {
    @Resource(name = StdDictService.BEAN_ID)
    StdDictService stdDictService;

+ 1 - 2
src/main/java/com/yihu/hos/standard/controller/StdDictEntryController.java

@ -7,7 +7,6 @@ import com.yihu.hos.standard.service.standard.StdDictEntryService;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -23,7 +22,7 @@ import java.util.Map;
 */
@RestController("StdDictEntryController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StdDictEntryController", description = "标准字典项管理", tags = {"标准字典项"})
//@Api(protocols = "https", value = "StdDictEntryController", description = "标准字典项管理", tags = {"标准字典项"})
public class StdDictEntryController extends BaseController {
    @Resource(name = StdDictEntryService.BEAN_ID)
    StdDictEntryService stdDictEntryService;

+ 1 - 2
src/main/java/com/yihu/hos/standard/controller/StdMetadataController.java

@ -8,7 +8,6 @@ import com.yihu.hos.standard.service.standard.StdMetadataService;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
@ -24,7 +23,7 @@ import java.util.Map;
 */
@RestController("StdMetadataController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StdMetadataController", description = "标准数据元管理", tags = {"标准数据元"})
//@Api(protocols = "https", value = "StdMetadataController", description = "标准数据元管理", tags = {"标准数据元"})
public class StdMetadataController extends BaseController {
    @Resource(name = StdMetadataService.BEAN_ID)
    StdMetadataService stdMetadataService;

+ 26 - 4
src/main/java/com/yihu/hos/standard/service/adapter/AdapterSchemeService.java

@ -1,6 +1,7 @@
package com.yihu.hos.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.yihu.hos.common.XmlUtil;
import com.yihu.hos.core.datatype.CollectionUtil;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.standard.model.adapter.AdapterSchemeModel;
@ -13,14 +14,18 @@ import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import org.apache.poi.ss.formula.functions.T;
import org.dom4j.Document;
import org.dom4j.Element;
import org.hibernate.Query;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
import static antlr.build.ANTLR.root;
/**
 * @created lingfeng 2015/12/25.
 */
@ -287,7 +292,7 @@ public class AdapterSchemeService extends SQLGeneralDAO {
            query = getCurrentSession().createQuery(adapterVersionHql);
            query.setParameter("schemeId", schemeModel.getId());
            List<AdapterSchemeVersionModel> versionModelList = query.list();
            if(versionModelList.size()>0){
            if (versionModelList.size() > 0) {
                AdapterSchemeResultModel resultDetailModel = new AdapterSchemeResultModel();
                resultDetailModel.setSchemeId(schemeModel.getId());
                resultDetailModel.setName(schemeModel.getName());
@ -299,7 +304,7 @@ public class AdapterSchemeService extends SQLGeneralDAO {
        return result;
    }
    public List delDuplicateArr(List<?> list){
    public List delDuplicateArr(List<?> list) {
        // 利用 Set 的特性,将所有项目放入 Set
        //中即可移除重复的项目
        Set<Object> set = new HashSet<>();
@ -311,8 +316,25 @@ public class AdapterSchemeService extends SQLGeneralDAO {
        // 将 Set 中的项目取出放到 nonDuplicateArray 中
        Object[] tempArray = set.toArray();
        for (int i = 0; i < tempArray.length; i++) {
           nonDuplicateArra.add ( tempArray[i]);
            nonDuplicateArra.add(tempArray[i]);
        }
        return nonDuplicateArra;
    }
    /**
     * 转换适配方案为华三的 XML 数据格式,一个表对应一个华三 XML。
     * @return
     */
    public List<Document> fillH3CDiJobXml() {
        List<Document> docList = new ArrayList<>();
        try {
            Document tmplDoc = XmlUtil.xml2doc(new ClassPathResource("/template/h3c-di-job.xml").getFile().getPath());
            Element rootElement = tmplDoc.getRootElement();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return docList;
    }
}

+ 31 - 0
src/main/resources/logback-spring.xml

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<property name="LOG_HOME" value="D:/hos-admin-logs/" />
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
			<charset class="java.nio.charset.Charset">UTF-8</charset>
		</encoder>
	</appender>
	<appender name="hosAdmin" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_HOME}/hos-admin.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_HOME}/rolling/hos-admin_%d{yyyy-MM-dd}.log</fileNamePattern>
		</rollingPolicy>
		<encoder>
			<pattern>%msg%n</pattern>
			<charset class="java.nio.charset.Charset">UTF-8</charset>
		</encoder>
	</appender>
	<logger name="com.yihu.hos.common.HosAdminLogger" level="INFO" additivity="false">
		<appender-ref ref="hosAdmin" />
	</logger>
	<root level="INFO">
		<appender-ref ref="console" />
	</root>
</configuration>

+ 658 - 0
src/main/resources/template/h3c-di-job.xml

@ -0,0 +1,658 @@
<transformation>
    <info>                <!-- 转换基本信息 -->
        <name>示例1</name> <!-- 转换名称 -->
        <description/>
        <extended_description/>
        <trans_version/>
        <trans_type>Normal</trans_type>
        <directory>&#x2f;</directory>
        <parameters>
        </parameters>
        <log>
            <trans-log-table>
                <connection/>
                <schema/>
                <table/>
                <size_limit_lines/>
                <interval/>
                <timeout_days/>
                <field>
                    <id>ID_BATCH</id>
                    <enabled>Y</enabled>
                    <name>ID_BATCH</name>
                </field>
                <field>
                    <id>CHANNEL_ID</id>
                    <enabled>Y</enabled>
                    <name>CHANNEL_ID</name>
                </field>
                <field>
                    <id>TRANSNAME</id>
                    <enabled>Y</enabled>
                    <name>TRANSNAME</name>
                </field>
                <field>
                    <id>STATUS</id>
                    <enabled>Y</enabled>
                    <name>STATUS</name>
                </field>
                <field>
                    <id>LINES_READ</id>
                    <enabled>Y</enabled>
                    <name>LINES_READ</name>
                    <subject/>
                </field>
                <field>
                    <id>LINES_WRITTEN</id>
                    <enabled>Y</enabled>
                    <name>LINES_WRITTEN</name>
                    <subject/>
                </field>
                <field>
                    <id>LINES_UPDATED</id>
                    <enabled>Y</enabled>
                    <name>LINES_UPDATED</name>
                    <subject/>
                </field>
                <field>
                    <id>LINES_INPUT</id>
                    <enabled>Y</enabled>
                    <name>LINES_INPUT</name>
                    <subject/>
                </field>
                <field>
                    <id>LINES_OUTPUT</id>
                    <enabled>Y</enabled>
                    <name>LINES_OUTPUT</name>
                    <subject/>
                </field>
                <field>
                    <id>LINES_REJECTED</id>
                    <enabled>Y</enabled>
                    <name>LINES_REJECTED</name>
                    <subject/>
                </field>
                <field>
                    <id>ERRORS</id>
                    <enabled>Y</enabled>
                    <name>ERRORS</name>
                </field>
                <field>
                    <id>STARTDATE</id>
                    <enabled>Y</enabled>
                    <name>STARTDATE</name>
                </field>
                <field>
                    <id>ENDDATE</id>
                    <enabled>Y</enabled>
                    <name>ENDDATE</name>
                </field>
                <field>
                    <id>LOGDATE</id>
                    <enabled>Y</enabled>
                    <name>LOGDATE</name>
                </field>
                <field>
                    <id>DEPDATE</id>
                    <enabled>Y</enabled>
                    <name>DEPDATE</name>
                </field>
                <field>
                    <id>REPLAYDATE</id>
                    <enabled>Y</enabled>
                    <name>REPLAYDATE</name>
                </field>
                <field>
                    <id>LOG_FIELD</id>
                    <enabled>Y</enabled>
                    <name>LOG_FIELD</name>
                </field>
                <field>
                    <id>EXECUTING_SERVER</id>
                    <enabled>N</enabled>
                    <name>EXECUTING_SERVER</name>
                </field>
                <field>
                    <id>EXECUTING_USER</id>
                    <enabled>N</enabled>
                    <name>EXECUTING_USER</name>
                </field>
                <field>
                    <id>CLIENT</id>
                    <enabled>N</enabled>
                    <name>CLIENT</name>
                </field>
            </trans-log-table>
            <perf-log-table>
                <connection/>
                <schema/>
                <table/>
                <interval/>
                <timeout_days/>
                <field>
                    <id>ID_BATCH</id>
                    <enabled>Y</enabled>
                    <name>ID_BATCH</name>
                </field>
                <field>
                    <id>SEQ_NR</id>
                    <enabled>Y</enabled>
                    <name>SEQ_NR</name>
                </field>
                <field>
                    <id>LOGDATE</id>
                    <enabled>Y</enabled>
                    <name>LOGDATE</name>
                </field>
                <field>
                    <id>TRANSNAME</id>
                    <enabled>Y</enabled>
                    <name>TRANSNAME</name>
                </field>
                <field>
                    <id>STEPNAME</id>
                    <enabled>Y</enabled>
                    <name>STEPNAME</name>
                </field>
                <field>
                    <id>STEP_COPY</id>
                    <enabled>Y</enabled>
                    <name>STEP_COPY</name>
                </field>
                <field>
                    <id>LINES_READ</id>
                    <enabled>Y</enabled>
                    <name>LINES_READ</name>
                </field>
                <field>
                    <id>LINES_WRITTEN</id>
                    <enabled>Y</enabled>
                    <name>LINES_WRITTEN</name>
                </field>
                <field>
                    <id>LINES_UPDATED</id>
                    <enabled>Y</enabled>
                    <name>LINES_UPDATED</name>
                </field>
                <field>
                    <id>LINES_INPUT</id>
                    <enabled>Y</enabled>
                    <name>LINES_INPUT</name>
                </field>
                <field>
                    <id>LINES_OUTPUT</id>
                    <enabled>Y</enabled>
                    <name>LINES_OUTPUT</name>
                </field>
                <field>
                    <id>LINES_REJECTED</id>
                    <enabled>Y</enabled>
                    <name>LINES_REJECTED</name>
                </field>
                <field>
                    <id>ERRORS</id>
                    <enabled>Y</enabled>
                    <name>ERRORS</name>
                </field>
                <field>
                    <id>INPUT_BUFFER_ROWS</id>
                    <enabled>Y</enabled>
                    <name>INPUT_BUFFER_ROWS</name>
                </field>
                <field>
                    <id>OUTPUT_BUFFER_ROWS</id>
                    <enabled>Y</enabled>
                    <name>OUTPUT_BUFFER_ROWS</name>
                </field>
            </perf-log-table>
            <channel-log-table>
                <connection/>
                <schema/>
                <table/>
                <timeout_days/>
                <field>
                    <id>ID_BATCH</id>
                    <enabled>Y</enabled>
                    <name>ID_BATCH</name>
                </field>
                <field>
                    <id>CHANNEL_ID</id>
                    <enabled>Y</enabled>
                    <name>CHANNEL_ID</name>
                </field>
                <field>
                    <id>LOG_DATE</id>
                    <enabled>Y</enabled>
                    <name>LOG_DATE</name>
                </field>
                <field>
                    <id>LOGGING_OBJECT_TYPE</id>
                    <enabled>Y</enabled>
                    <name>LOGGING_OBJECT_TYPE</name>
                </field>
                <field>
                    <id>OBJECT_NAME</id>
                    <enabled>Y</enabled>
                    <name>OBJECT_NAME</name>
                </field>
                <field>
                    <id>OBJECT_COPY</id>
                    <enabled>Y</enabled>
                    <name>OBJECT_COPY</name>
                </field>
                <field>
                    <id>REPOSITORY_DIRECTORY</id>
                    <enabled>Y</enabled>
                    <name>REPOSITORY_DIRECTORY</name>
                </field>
                <field>
                    <id>FILENAME</id>
                    <enabled>Y</enabled>
                    <name>FILENAME</name>
                </field>
                <field>
                    <id>OBJECT_ID</id>
                    <enabled>Y</enabled>
                    <name>OBJECT_ID</name>
                </field>
                <field>
                    <id>OBJECT_REVISION</id>
                    <enabled>Y</enabled>
                    <name>OBJECT_REVISION</name>
                </field>
                <field>
                    <id>PARENT_CHANNEL_ID</id>
                    <enabled>Y</enabled>
                    <name>PARENT_CHANNEL_ID</name>
                </field>
                <field>
                    <id>ROOT_CHANNEL_ID</id>
                    <enabled>Y</enabled>
                    <name>ROOT_CHANNEL_ID</name>
                </field>
            </channel-log-table>
            <step-log-table>
                <connection/>
                <schema/>
                <table/>
                <timeout_days/>
                <field>
                    <id>ID_BATCH</id>
                    <enabled>Y</enabled>
                    <name>ID_BATCH</name>
                </field>
                <field>
                    <id>CHANNEL_ID</id>
                    <enabled>Y</enabled>
                    <name>CHANNEL_ID</name>
                </field>
                <field>
                    <id>LOG_DATE</id>
                    <enabled>Y</enabled>
                    <name>LOG_DATE</name>
                </field>
                <field>
                    <id>TRANSNAME</id>
                    <enabled>Y</enabled>
                    <name>TRANSNAME</name>
                </field>
                <field>
                    <id>STEPNAME</id>
                    <enabled>Y</enabled>
                    <name>STEPNAME</name>
                </field>
                <field>
                    <id>STEP_COPY</id>
                    <enabled>Y</enabled>
                    <name>STEP_COPY</name>
                </field>
                <field>
                    <id>LINES_READ</id>
                    <enabled>Y</enabled>
                    <name>LINES_READ</name>
                </field>
                <field>
                    <id>LINES_WRITTEN</id>
                    <enabled>Y</enabled>
                    <name>LINES_WRITTEN</name>
                </field>
                <field>
                    <id>LINES_UPDATED</id>
                    <enabled>Y</enabled>
                    <name>LINES_UPDATED</name>
                </field>
                <field>
                    <id>LINES_INPUT</id>
                    <enabled>Y</enabled>
                    <name>LINES_INPUT</name>
                </field>
                <field>
                    <id>LINES_OUTPUT</id>
                    <enabled>Y</enabled>
                    <name>LINES_OUTPUT</name>
                </field>
                <field>
                    <id>LINES_REJECTED</id>
                    <enabled>Y</enabled>
                    <name>LINES_REJECTED</name>
                </field>
                <field>
                    <id>ERRORS</id>
                    <enabled>Y</enabled>
                    <name>ERRORS</name>
                </field>
                <field>
                    <id>LOG_FIELD</id>
                    <enabled>N</enabled>
                    <name>LOG_FIELD</name>
                </field>
            </step-log-table>
            <metrics-log-table>
                <connection/>
                <schema/>
                <table/>
                <timeout_days/>
                <field>
                    <id>ID_BATCH</id>
                    <enabled>Y</enabled>
                    <name>ID_BATCH</name>
                </field>
                <field>
                    <id>CHANNEL_ID</id>
                    <enabled>Y</enabled>
                    <name>CHANNEL_ID</name>
                </field>
                <field>
                    <id>LOG_DATE</id>
                    <enabled>Y</enabled>
                    <name>LOG_DATE</name>
                </field>
                <field>
                    <id>METRICS_DATE</id>
                    <enabled>Y</enabled>
                    <name>METRICS_DATE</name>
                </field>
                <field>
                    <id>METRICS_CODE</id>
                    <enabled>Y</enabled>
                    <name>METRICS_CODE</name>
                </field>
                <field>
                    <id>METRICS_DESCRIPTION</id>
                    <enabled>Y</enabled>
                    <name>METRICS_DESCRIPTION</name>
                </field>
                <field>
                    <id>METRICS_SUBJECT</id>
                    <enabled>Y</enabled>
                    <name>METRICS_SUBJECT</name>
                </field>
                <field>
                    <id>METRICS_TYPE</id>
                    <enabled>Y</enabled>
                    <name>METRICS_TYPE</name>
                </field>
                <field>
                    <id>METRICS_VALUE</id>
                    <enabled>Y</enabled>
                    <name>METRICS_VALUE</name>
                </field>
            </metrics-log-table>
        </log>
        <maxdate>
            <connection/>
            <table/>
            <field/>
            <offset>0.0</offset>
            <maxdiff>0.0</maxdiff>
        </maxdate>
        <size_rowset>10000</size_rowset>
        <sleep_time_empty>50</sleep_time_empty>
        <sleep_time_full>50</sleep_time_full>
        <unique_connections>N</unique_connections>
        <feedback_shown>Y</feedback_shown>
        <feedback_size>50000</feedback_size>
        <using_thread_priorities>Y</using_thread_priorities>
        <shared_objects_file/>
        <capture_step_performance>N</capture_step_performance>
        <step_performance_capturing_delay>1000</step_performance_capturing_delay>
        <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
        <dependencies>
        </dependencies>
        <partitionschemas>
        </partitionschemas>
        <slaveservers>
        </slaveservers>
        <clusterschemas>
        </clusterschemas>
        <created_user>-</created_user>
        <created_date>2017&#x2f;06&#x2f;13 16&#x3a;54&#x3a;18.691</created_date>
        <modified_user>-</modified_user>
        <modified_date>2017&#x2f;06&#x2f;13 16&#x3a;54&#x3a;18.691</modified_date>
        <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
        <is_key_private>N</is_key_private>
    </info>
    <notepads>     <!-- 转换中的注释信息 -->
    </notepads>
    <connection>   <!-- 转换中的数据库连接 -->
        <name>15.50</name>         <!-- 数据库连接名称 -->
        <server>100.4.15.50</server>   <!--  数据库连接地址 -->
        <type>POSTGRESQL</type>         <!-- 数据库类型 -->
        <access>Native</access>
        <database>test</database>     <!-- 数据库名称 -->
        <port>5432</port>
        <username>test</username>     <!-- 用户名 -->
        <password>Encrypted 2be98afc86aa7f2e4cb79a575ca86a3df</password>    <!-- 密码 -->
        <servername/>
        <data_tablespace/>
        <index_tablespace/>
        <attributes>
            <attribute>
                <code>FORCE_IDENTIFIERS_TO_LOWERCASE</code>
                <attribute>N</attribute>
            </attribute>
            <attribute>
                <code>FORCE_IDENTIFIERS_TO_UPPERCASE</code>
                <attribute>N</attribute>
            </attribute>
            <attribute>
                <code>IS_CLUSTERED</code>
                <attribute>N</attribute>
            </attribute>
            <attribute>
                <code>PORT_NUMBER</code>
                <attribute>5432</attribute>
            </attribute>
            <attribute>
                <code>PRESERVE_RESERVED_WORD_CASE</code>
                <attribute>N</attribute>
            </attribute>
            <attribute>
                <code>QUOTE_ALL_FIELDS</code>
                <attribute>N</attribute>
            </attribute>
            <attribute>
                <code>SUPPORTS_BOOLEAN_DATA_TYPE</code>
                <attribute>Y</attribute>
            </attribute>
            <attribute>
                <code>SUPPORTS_TIMESTAMP_DATA_TYPE</code>
                <attribute>Y</attribute>
            </attribute>
            <attribute>
                <code>USE_POOLING</code>
                <attribute>N</attribute>
            </attribute>
        </attributes>
    </connection>
    <connection>
        <name>mysqldb</name>
        <server>100.4.15.200</server>
        <type>MYSQL</type>
        <access>Native</access>
        <database>test</database>
        <port>3306</port>
        <username>root</username>
        <password>Encrypted 2be98afc86aa7f2e4cb79be71cd81b8de</password>
        <servername/>
        <data_tablespace/>
        <index_tablespace/>
        <attributes>
            <attribute>
                <code>EXTRA_OPTION_MYSQL.defaultFetchSize</code>
                <attribute>500</attribute>
            </attribute>
            <attribute>
                <code>EXTRA_OPTION_MYSQL.useCursorFetch</code>
                <attribute>true</attribute>
            </attribute>
            <attribute>
                <code>FORCE_IDENTIFIERS_TO_LOWERCASE</code>
                <attribute>N</attribute>
            </attribute>
            <attribute>
                <code>FORCE_IDENTIFIERS_TO_UPPERCASE</code>
                <attribute>N</attribute>
            </attribute>
            <attribute>
                <code>IS_CLUSTERED</code>
                <attribute>N</attribute>
            </attribute>
            <attribute>
                <code>PORT_NUMBER</code>
                <attribute>3306</attribute>
            </attribute>
            <attribute>
                <code>PRESERVE_RESERVED_WORD_CASE</code>
                <attribute>N</attribute>
            </attribute>
            <attribute>
                <code>QUOTE_ALL_FIELDS</code>
                <attribute>N</attribute>
            </attribute>
            <attribute>
                <code>STREAM_RESULTS</code>
                <attribute>Y</attribute>
            </attribute>
            <attribute>
                <code>SUPPORTS_BOOLEAN_DATA_TYPE</code>
                <attribute>Y</attribute>
            </attribute>
            <attribute>
                <code>SUPPORTS_TIMESTAMP_DATA_TYPE</code>
                <attribute>Y</attribute>
            </attribute>
            <attribute>
                <code>USE_POOLING</code>
                <attribute>N</attribute>
            </attribute>
        </attributes>
    </connection>
    <order>        <!-- 转换中步骤间的连线信息 -->
        <hop>      <!-- 单个连线信息 -->
            <from>&#x4ece;mysql&#x62bd;&#x53d6;</from>  <!-- 起始步骤 -->
            <to>&#x8f93;&#x51fa;&#x5230;pg</to>         <!-- 目的步骤 -->
            <enabled>Y</enabled>
        </hop>
    </order>
    <step>         <!-- 步骤1的信息 -->
        <name>&#x4ece;mysql&#x62bd;&#x53d6;</name>     <!-- 步骤名称 -->
        <type>TableInput</type>                        <!-- 步骤类型 -->
        <description/>
        <distribute>Y</distribute>
        <custom_distribution/>
        <copies>1</copies>
        <partitioning>
            <method>none</method>
            <schema_name/>
        </partitioning>
        <connection>mysqldb</connection>              <!-- 使用的数据库连接 -->
        <sql>SELECT&#xa; id&#xa;, name&#xa;, type&#xa;, url&#xa;, time&#xa;FROM
            transaction&#xa;</sql>     <!-- 生成的查询语句 -->
        <limit>0</limit>      <!-- 记录数量限制 -->
        <lookup/>            <!-- 接收数据的前序步骤 -->
        <execute_each_row>N</execute_each_row>
        <variables_active>N</variables_active>        <!-- 替换sql语句中的变量 -->
        <lazy_conversion_active>N</lazy_conversion_active>   <!--  允许建议转换 -->
        <cluster_schema/>
        <remotesteps>
            <input>
            </input>
            <output>
            </output>
        </remotesteps>
        <GUI>                  <!-- 步骤图标的显示位置 -->
            <xloc>112</xloc>
            <yloc>160</yloc>
            <draw>Y</draw>
        </GUI>
    </step>
    <step>                     <!-- 步骤2信息 -->
        <name>&#x8f93;&#x51fa;&#x5230;pg</name>
        <type>TableOutput</type>
        <description/>
        <distribute>Y</distribute>
        <custom_distribution/>
        <copies>1</copies>
        <partitioning>
            <method>none</method>
            <schema_name/>
        </partitioning>
        <connection>15.50</connection>
        <schema>public</schema>          <!-- 目标模式 -->
        <table>outPutTable1</table>      <!-- 目标表 -->
        <commit>1000</commit>
        <truncate>N</truncate>
        <ignore_errors>N</ignore_errors>
        <use_batch>Y</use_batch>
        <specify_fields>Y</specify_fields>  <!-- 指定数据库字段 -->
        <partitioning_enabled>N</partitioning_enabled>    <!-- 表分区数据 -->
        <partitioning_field/>
        <partitioning_daily>N</partitioning_daily>         <!-- 按日分区 -->
        <partitioning_monthly>Y</partitioning_monthly>     <!-- 按月分区 -->
        <tablename_in_field>N</tablename_in_field>
        <tablename_field/>
        <tablename_in_table>Y</tablename_in_table>
        <return_keys>N</return_keys>
        <return_field/>
        <fields>              <!-- 字段映射 -->
            <field>
                <column_name>id2</column_name>    <!-- 目标表字段名 -->
                <stream_name>id</stream_name>     <!-- 源字段名 -->
            </field>
            <field>
                <column_name>name2</column_name>
                <stream_name>name</stream_name>
            </field>
            <field>
                <column_name>type2</column_name>
                <stream_name>type</stream_name>
            </field>
            <field>
                <column_name>time2</column_name>
                <stream_name>time</stream_name>
            </field>
        </fields>
        <cluster_schema/>
        <remotesteps>
            <input>
            </input>
            <output>
            </output>
        </remotesteps>
        <GUI>
            <xloc>304</xloc>
            <yloc>160</yloc>
            <draw>Y</draw>
        </GUI>
    </step>
    <step_error_handling>
    </step_error_handling>
    <slave-step-copy-partition-distribution>
    </slave-step-copy-partition-distribution>
    <slave_transformation>N</slave_transformation>
</transformation>

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

@ -110,8 +110,8 @@
                {id: 7, text: '用户安全', icon: '${staticRoot}/images/index/menu06.png'},
                {id: 71, pid: 7, text: '机构管理', url: '${contextRoot}/org/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},
                {id: 72, pid: 7, text: '用户管理', url: '${contextRoot}/user/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},
                {id: 73, pid: 7, text: '角色管理', url: '${contextRoot}/role/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},
                {id: 74, pid: 7, text: '权限管理', url: '${contextRoot}/authority/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},
                <%--{id: 73, pid: 7, text: '角色管理', url: '${contextRoot}/role/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},--%>
                <%--{id: 74, pid: 7, text: '权限管理', url: '${contextRoot}/authority/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},--%>
                //质控规则管理
                {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'},
@ -123,8 +123,8 @@
                {id: 9, text: '系统配置', icon: '${staticRoot}/images/index/menu07.png'},
                {id: 91, pid: 9, text: '系统参数', url: '${contextRoot}/param/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},
                {id: 92, pid: 9, text: '字典管理', url: '${contextRoot}/dict/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},
                {id: 93, pid: 9, text: '菜单配置', url: '${contextRoot}/menu/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},
                {id: 94, pid: 9, text: '菜单按钮配置', url: '${contextRoot}/menu/menuAction/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},
                <%--{id: 93, pid: 9, text: '菜单配置', url: '${contextRoot}/menu/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},--%>
                <%--{id: 94, pid: 9, text: '菜单按钮配置', url: '${contextRoot}/menu/menuAction/initial', icon: '${staticRoot}/images/index/Ins_icon.png'},--%>
                {id: 95, pid: 9, text: '数据源配置', url: '${contextRoot}/datasource/configSources', icon: '${staticRoot}/images/index/Ins_icon.png'},
            ];
@ -161,7 +161,6 @@
                nodeWidth: 176,
                onSelect: function (obj) {
                	if (obj.data.url != undefined) {
                        debugger
                        if(obj.data.url.indexOf("report/signin") >= 0){
                            me.loadIframePage(obj.data.url);//质控页面
                        }else{
@ -191,14 +190,20 @@
						var self = $(this);
						if(!self.hasClass("l-selected")){
							var imgSrcs = self.find("img").attr("src");
							if(imgSrcs.indexOf("hover") > 0){	
							if(imgSrcs.indexOf("hover") > 0){
								self.find("img").attr("src",imgSrcs.substring(0,imgSrcs.length-10)+".png");
							}
						}
					});
                },
                onClick:function(obj){
                },
                onBeforeSelect(obj){//解决bug 3487【ESB】标准规范:点击标准规范的图标,图标会显示成白色。
                    if(obj.data == null){
                         if(obj.target.parentElement.parentElement.className.indexOf("l-selected") > 0){
                            return false;
                         }
                    }
                },
                //一级节点不可选中
                onAfterAppend: function () {
@ -207,7 +212,7 @@
//                  });
                }
            });
			
            //首页按钮
            $('#btnIndexHome').bind('click', function () {
                me.openHome();

+ 3 - 13
src/main/webapp/WEB-INF/ehr/jsp/qc/editorRuleJs.jsp

@ -36,7 +36,7 @@
                    name: "${model.name}",
                    describe: "${model.describe}",
                    rule: "${model.rule}",
                    error_code: "${model.error_code}",
                    error_code: "${model.error_code}"
                };
                me.actionUrl = "${contextRoot}/rule/updateRule";
@ -48,23 +48,13 @@
                    describe:"required",
                    rule:"required",
                    error_code:"required",
                    type:"required",
                },
                    type:"required"
                }
            });
        },
        bindEvents: function () {
            var me = this;
            $(".m-form-bottom").on("click", "#btnSave", function () {
                $("#btnSave").css("pointer-events", "none");
                $("#name_icon").removeClass("required");
                if ($("#name_icon").val() == "") {
                    $("#name_icon").addClass("required");
                    if (!$("#div_info_form").ligerAutoForm("validate")) {
                        return;
                    }
                    return;
                }
                if (!$("#div_info_form").ligerAutoForm("validate")) {
                    return;
                }

+ 27 - 0
src/test/java/com/yihu/hos/services/AdapterSchemeServiceTest.java

@ -0,0 +1,27 @@
package com.yihu.hos.services;
import com.yihu.hos.ESBApplication;
import com.yihu.hos.standard.service.adapter.AdapterSchemeService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
 * @author 张进军
 * @created 2017/6/16 16:35
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = ESBApplication.class)
public class AdapterSchemeServiceTest {
    @Autowired
    private AdapterSchemeService adapterSchemeService;
    @Test
    public void testFillH3CDiJobXml() {
        adapterSchemeService.fillH3CDiJobXml();
    }
}