zhouweihong il y a 8 ans
Parent
commit
3c80e94d0d
32 fichiers modifiés avec 1219 ajouts et 83 suppressions
  1. 29 0
      hos-agent/src/main/resources/application.yml
  2. 3 5
      hos-arbiter/src/main/resources/application.yml
  3. 7 1
      hos-broker/pom.xml
  4. 8 9
      hos-broker/src/main/resources/application.yml
  5. 1 1
      hos-camel2/src/main/java/camel/api7/route/CxfConsumerTest.java
  6. 1 1
      hos-dfs/src/main/resources/application.yml
  7. 19 0
      hos-rest/pom.xml
  8. 10 0
      hos-rest/src/main/resources/application.yml
  9. 7 5
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/springutil/SpringBeanUtil.java
  10. 5 1
      src/main/java/com/yihu/hos/ESBApplication.java
  11. 205 0
      src/main/java/com/yihu/hos/qc/controller/RuleController.java
  12. 48 0
      src/main/java/com/yihu/hos/qc/dao/RuleDao.java
  13. 82 0
      src/main/java/com/yihu/hos/qc/model/RuleModel.java
  14. 88 0
      src/main/java/com/yihu/hos/qc/service/RuleService.java
  15. 1 1
      src/main/java/com/yihu/hos/standard/controller/AdapterMetadataController.java
  16. 11 11
      src/main/java/com/yihu/hos/standard/dao/StdDataSetModelDao.java
  17. 14 5
      src/main/java/com/yihu/hos/standard/dao/StdMetaDataModelDao.java
  18. 8 0
      src/main/java/com/yihu/hos/standard/match/dictionary/DictItemStrategyExecute.java
  19. 62 0
      src/main/java/com/yihu/hos/standard/match/dictionary/DictitemStandardNameStrategy.java
  20. 12 1
      src/main/java/com/yihu/hos/standard/match/metadata/MetadataStrategyExecute.java
  21. 51 26
      src/main/java/com/yihu/hos/standard/match/metadata/MetatdataStandardExistStrategy.java
  22. 82 0
      src/main/java/com/yihu/hos/standard/match/metadata/MetatdataStandardNameStrategy.java
  23. 3 1
      src/main/java/com/yihu/hos/standard/model/adapter/AdapterSchemeModel.java
  24. 14 2
      src/main/java/com/yihu/hos/standard/service/adapter/AdapterDatasetService.java
  25. 15 0
      src/main/java/com/yihu/hos/standard/service/adapter/AdapterDictService.java
  26. 9 5
      src/main/java/com/yihu/hos/standard/service/standard/StdDictService.java
  27. 3 1
      src/main/java/com/yihu/hos/standard/service/standard/StdMetadataService.java
  28. 2 7
      src/main/resources/application.yml
  29. 74 0
      src/main/webapp/WEB-INF/ehr/jsp/qc/editorRule.jsp
  30. 122 0
      src/main/webapp/WEB-INF/ehr/jsp/qc/editorRuleJs.jsp
  31. 34 0
      src/main/webapp/WEB-INF/ehr/jsp/qc/rule.jsp
  32. 189 0
      src/main/webapp/WEB-INF/ehr/jsp/qc/ruleJs.jsp

+ 29 - 0
hos-agent/src/main/resources/application.yml

@ -36,6 +36,35 @@ agent:
    name: jzkl
  proxy:
    port: 9090
  jcraft:
    host:
    port: 22
    user:
    password:
---
spring:
  profiles: test
  activemq:
      broker-url: tcp://172.19.103.58:61616
      user: admin
      password: admin
  data:
    mongodb:
      host: 172.19.103.58
      port: 27017
      username: esb
      password: esb
      authenticationDatabase: admin
      database: log
      gridFsDatabase: dfs
agent:
  zbus:
    url: 172.19.103.58:9020
  tenant:
    name: jzkl
  proxy:
    port: 9090
  jcraft:
    host:
    port: 22

+ 3 - 5
hos-arbiter/src/main/resources/application.yml

@ -31,25 +31,23 @@ spring:
  profiles: test
  data:
    mongodb:
      host: 172.19.103.67
      host: 172.19.103.58
      port: 27017
      username: esb
      password: esb
      authenticationDatabase: admin
      database: runtime
  activemq:
    broker-url: tcp://172.19.103.67:61616
    broker-url: tcp://172.19.103.58:61616
    user: admin
    password: admin
arbiter:
  timer:
    period: 10000
  central:
    url: 172.19.103.57:9020
    url: 172.19.103.58:9020
  tenant:
    name: jkzl
  mycat:
    name: mycat172.19.103.67    ##mycat 服务器标识,规则:“mycat"+ 本机IP
---
spring:
  profiles: prod

+ 7 - 1
hos-broker/pom.xml

@ -21,6 +21,12 @@
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
@ -37,7 +43,7 @@
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <!--<scope>provided</scope>-->
            <scope>provided</scope>
        </dependency>
        <dependency>

+ 8 - 9
hos-broker/src/main/resources/application.yml

@ -65,12 +65,12 @@ hos:
spring:
  profiles: test
  activemq:
      broker-url: tcp://172.19.103.67:61616
      broker-url: tcp://172.19.103.58:61616
      user: admin
      password: admin
  data:
    mongodb:
      host: 172.19.103.67
      host: 172.19.103.58
      port: 27017
      username: esb
      password: esb
@ -85,27 +85,26 @@ eureka:
    serviceUrl:
      defaultZone: http://192.168.1.221:8761/eureka/
log:
  path: /usr/local/esb/logs/broker
  path: D://logs/logback/dev
  level: info
hos:
  filesystem:
    url: http://172.19.103.57:9010/dfs/file
    url: http://172.19.103.58:9010/dfs/file
  arbiter:
    enable: true
    url: http://172.19.103.67:10135
    url: http://localhost:10135
  rest:
    url: http://172.19.103.67:8088
    url: http://localhost:8088
  timer:
      period: 10000
  tenant:
    name: jkzl
  mycat:
    path: /opt/mycat/   ##mycat的安装目录
    path: /usr/local/mycat/   ##mycat的安装目录
  #jcraft shell操作
  jcraft:
    host: 172.19.103.70
    host: 172.19.103.58
    port: 22
    user: root
    password: ceshi

+ 1 - 1
hos-camel2/src/main/java/camel/api7/route/CxfConsumerTest.java

@ -11,7 +11,7 @@ import org.springframework.stereotype.Component;
@Component
public class CxfConsumerTest extends RouteBuilder {
    protected static final String SIMPLE_ENDPOINT_ADDRESS = "http://192.168.131.101:4444/soap/ws";
    protected static final String SIMPLE_ENDPOINT_ADDRESS = "http://127.0.0.1:4445/soap/ws";
    protected static final String SIMPLE_ENDPOINT_URI = "cxf:" + SIMPLE_ENDPOINT_ADDRESS
            + "?serviceClass=camel.api7.processor.TestWService"
//            + "&dataFormat=CXF_MESSAGE"

+ 1 - 1
hos-dfs/src/main/resources/application.yml

@ -25,7 +25,7 @@ spring:
  profiles: test
  data:
    mongodb:
      host: 172.19.103.67
      host: 172.19.103.58
      port: 27017
      username: esb
      password: esb

+ 19 - 0
hos-rest/pom.xml

@ -102,4 +102,23 @@
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.yihu.hos.rest.HosRestApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

+ 10 - 0
hos-rest/src/main/resources/application.yml

@ -40,6 +40,14 @@ service-gateway:
---
spring:
  profiles: test
  data:
    mongodb:
      host: 172.19.103.58
      port: 27017
      username: esb
      password: esb
      authenticationDatabase: admin
      database: runtime
qlc:
  rpc:
    ip: 172.18.20.21
@ -55,6 +63,8 @@ crawler:
    ip: localhost
    port: 8088
    api: crawler/datapush
service-gateway:
  url:
---
spring:

+ 7 - 5
hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/springutil/SpringBeanUtil.java

@ -3,9 +3,7 @@ package com.yihu.hos.web.framework.util.springutil;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
/**
 * 服务管理器。服务管理器是所有顶级服务的生成器。若是单元测试使用此服务工厂,Spring Context会被ServiceFactory创建。
@ -16,7 +14,7 @@ import org.springframework.stereotype.Component;
 * @created 12-05-2015 17:47:55
 */
public class SpringBeanUtil implements ApplicationContextAware {
public class SpringBeanUtil  {
    private static ApplicationContext springContext = null;
    /**
@ -28,11 +26,15 @@ public class SpringBeanUtil implements ApplicationContextAware {
        return springContext;
    }
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    public static void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        springContext = applicationContext;
    }
    public static <T> T getBean(String beanName){
        return (T) springContext.getBean(beanName);
    }
    /**
     * 获取服务。
     *

+ 5 - 1
src/main/java/com/yihu/hos/ESBApplication.java

@ -1,8 +1,10 @@
package com.yihu.hos;
import com.yihu.hos.interceptor.WebMvcInterceptor;
import com.yihu.hos.web.framework.util.springutil.SpringBeanUtil;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@ -10,7 +12,9 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
public class ESBApplication extends WebMvcConfigurerAdapter {
    public static void main(String[] args) throws Exception {
        SpringApplication application = new SpringApplication(ESBApplication.class);
        application.run(args);
        ApplicationContext run = application.run(args);
        SpringBeanUtil.setApplicationContext(run);
    }
    // 增加拦截器

+ 205 - 0
src/main/java/com/yihu/hos/qc/controller/RuleController.java

@ -0,0 +1,205 @@
package com.yihu.hos.qc.controller;
import com.google.common.base.Splitter;
import com.yihu.hos.qc.model.RuleModel;
import com.yihu.hos.qc.service.RuleService;
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.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 质控规则管理
 *
 * @author CD
 * @vsrsion 1.0
 * Created at 2017/05/05.
 */
@RequestMapping("/rule")
@Controller
public class RuleController extends BaseController {
    @Resource(name = RuleService.BEAN_ID)
    private RuleService ruleService;
    /**
     * 质控规则管理界面
     *
     * @param model
     * @return
     */
    @RequestMapping("/initial")
    public String ruleInitial(Model model) {
        model.addAttribute("contentPage", "qc/rule");
        return "partView";
    }
    /**
     * 质控规则列表
     *
     * @param request
     * @return
     */
    @RequestMapping("/getRuleList")
    @ResponseBody
    public Result getAppList(HttpServletRequest request, String name, String valid) {
        try {
            Map<String, Object> params = new HashMap<>();
            params.put("name", name);
            String page = StringUtils.isEmpty(request.getParameter("page")) ? "1" : request.getParameter("page");
            String rows = StringUtils.isEmpty(request.getParameter("rows")) ? "10" : request.getParameter("rows");
            params.put("page", page);
            params.put("rows", rows);
            Result result = ruleService.getRuleList(params);
            return result;
        } catch (Exception ex) {
            ex.printStackTrace();
            return Result.error(ex.getMessage());
        }
    }
    /**
     * 质控规则修改页面
     *
     * @param model
     * @param id
     * @return
     */
    @RequestMapping("/editorRule")
    public String editoruleRule(Model model, String id) {
        try {
            RuleModel ruleModel = null;
            if (id != null) {
                ruleModel = ruleService.getRuleById(id);
            } else {
                ruleModel = new RuleModel();
            }
            model.addAttribute("model", ruleModel);
            model.addAttribute("contentPage", "/qc/editorRule");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "pageView";
    }
    /**
     * 质控规则详情页
     *
     * @param model
     * @param id
     * @return
     */
    @RequestMapping("/ruleDetail")
    public String ruleDetail(Model model, String id) {
        try {
            RuleModel ruleModel = null;
            if (id != null) {
                ruleModel = ruleService.getRuleById(id);
            } else {
                ruleModel = new RuleModel();
            }
            model.addAttribute("model", ruleModel);
            model.addAttribute("contentPage", "/rule/ruleDetail");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "pageView";
    }
    /**
     * 新增质控规则s信息
     *
     * @param request
     * @return
     */
    @RequestMapping("addRule")
    @ResponseBody
    public Result addRule(HttpServletRequest request) {
        try {
            RuleModel obj = new RuleModel();
            BeanUtils.populate(obj, request.getParameterMap());
            return ruleService.addRule(obj);
        } catch (Exception ex) {
            ex.printStackTrace();
            return Result.error(ex.getMessage());
        }
    }
    /**
     * 删除质控规则信息
     *
     * @param request
     * @return
     */
    @RequestMapping("/deleteRule")
    @ResponseBody
    public Result deleteRule(HttpServletRequest request) {
        try {
            String id = request.getParameter("id");
            ruleService.deleteRule(id);
            return Result.success("删除成功!");
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("删除失败!");
        }
    }
    /**
     * 批量删除质控规则信息
     *
     * @param request
     * @return
     */
    @RequestMapping("/deleteRuleBatch")
    @ResponseBody
    public Result deleteRuleBatch(HttpServletRequest request) {
        try {
            String idList = request.getParameter("idList");
            List<String> ids = Splitter.on(",").trimResults().splitToList(idList);
            if (!CollectionUtils.isEmpty(ids)) {
                for (String id :
                        ids) {
                    ruleService.deleteRule(id);
                }
            }
            return Result.success("删除成功!");
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("删除失败!");
        }
    }
    /**
     * 修改质控规则信息
     */
    @RequestMapping("updateRule")
    @ResponseBody
    public Result updateRule(HttpServletRequest request) {
        try {
            RuleModel obj = new RuleModel();
            BeanUtils.populate(obj, request.getParameterMap());
            return ruleService.updateRule(obj);
        } catch (Exception ex) {
            ex.printStackTrace();
            return Result.error(ex.getMessage());
        }
    }
}

+ 48 - 0
src/main/java/com/yihu/hos/qc/dao/RuleDao.java

@ -0,0 +1,48 @@
package com.yihu.hos.qc.dao;
import com.yihu.hos.qc.model.RuleModel;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.Result;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
/**
 * @author CD
 * @vsrsion 1.0
 * Created at 2017/05/05.
 */
@Repository("ruleDao")
public class RuleDao extends SQLGeneralDAO {
    public static final String BEAN_ID = "ruleDao";
    public Result getRuleList(Map<String, Object> params) throws Exception {
        StringBuilder sb = new StringBuilder("from RuleModel r where 1=1 ");
        Object name = params.get("name");
        if (!StringUtils.isEmpty(name)) {
            sb.append(" and r.name like '%" + name + "%'");
        }
        return super.getDataGridResult(sb.toString(), Integer.valueOf(params.get("page").toString()), Integer.valueOf(params.get("rows").toString()));
    }
    public List<RuleModel> getRuleList(String name) throws Exception {
        StringBuilder sb = new StringBuilder("from RuleModel r where 1=1 ");
        if (!StringUtils.isEmpty(name)) {
            sb.append(" and r.name like '%" + name + "%'");
        }
        return (List<RuleModel>) super.hibernateTemplate.getSessionFactory().getCurrentSession().createQuery(sb.toString());
    }
    public List<RuleModel> getAllByIdList(List<String> idList) {
        Session session = getCurrentSession();
        Criteria criteria = session.createCriteria(RuleModel.class);
        criteria.add(Restrictions.in("id", idList));
        return criteria.list();
    }
}

+ 82 - 0
src/main/java/com/yihu/hos/qc/model/RuleModel.java

@ -0,0 +1,82 @@
package com.yihu.hos.qc.model;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
/**
 * ss
 * 质控表
 *
 * @author CD
 * @vsrsion 1.0
 * Created at 2017/05/05.
 */
@Entity
@Table(name = "qc_rule")
public class RuleModel implements java.io.Serializable {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "uuid")
    @Column(name = "id")
    private String id;
    @Column(name = "name")
    private String name;
    @Column(name = "type")
    private String type;//分类
    @Column(name = "description")
    private String describe;//描述
    @Column(name = "rule")
    private String rule;//规则
    @Column(name = "error_code")
    private String error_code;//统一错误代码
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getDescribe() {
        return describe;
    }
    public void setDescribe(String describe) {
        this.describe = describe;
    }
    public String getRule() {
        return rule;
    }
    public void setRule(String rule) {
        this.rule = rule;
    }
    public String getError_code() {
        return error_code;
    }
    public void setError_code(String error_code) {
        this.error_code = error_code;
    }
}

+ 88 - 0
src/main/java/com/yihu/hos/qc/service/RuleService.java

@ -0,0 +1,88 @@
package com.yihu.hos.qc.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.config.MongoConfig;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.qc.dao.RuleDao;
import com.yihu.hos.qc.model.RuleModel;
import com.yihu.hos.web.framework.model.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.zbus.broker.ZbusBroker;
import javax.annotation.Resource;
import java.util.Map;
/**
 * @author CD
 * @vsrsion 1.0
 * Created at 2017/05/05.
 */
@Service("ruleService")
public class RuleService {
    public static final String BEAN_ID = "ruleService";
    static final Logger logger = LoggerFactory.getLogger(RuleService.class);
    @Resource(name = RuleDao.BEAN_ID)
    private RuleDao ruleDao;
    @Value("${spring.data.mongodb.gridFsDatabase}")
    private String dbName;
    @Autowired
    private MongoConfig mongoConfig;
    @Autowired
    private ObjectMapper objectMapper;
    private ZbusBroker zbusBroker;
    @Autowired
    public void setZbusBroker(ZbusBroker zbusBroker) {
        this.zbusBroker = zbusBroker;
    }
    public Result getRuleList(Map<String, Object> params) throws Exception {
        return ruleDao.getRuleList(params);
    }
    public RuleModel getRuleById(String id) throws Exception {
        return ruleDao.getEntity(RuleModel.class, id);
    }
    @Transactional
    public Result addRule(RuleModel obj) throws Exception {
        ruleDao.saveEntity(obj);
        return Result.success("保存成功");
    }
    @Transactional
    public Result updateRule(RuleModel obj) throws Exception {
        RuleModel ruleModel = ruleDao.getEntity(RuleModel.class, obj.getId());
        ruleModel.setName(obj.getName());
        ruleModel.setType(obj.getType());
        ruleModel.setDescribe(obj.getDescribe());
        ruleModel.setRule(obj.getRule());
        ruleModel.setError_code(obj.getError_code());
        return Result.success("更新成功");
    }
    @Transactional
    public Result deleteRule(String id) throws Exception {
        RuleModel ruleModel = ruleDao.getEntity(RuleModel.class, id);
        ruleDao.deleteEntity(ruleModel);
        return Result.success("删除成功");
    }
    /* ==============================服务模块=================================  */
    public Result getRuleServiceList(Map<String, Object> params) throws Exception {
        return ruleDao.getRuleList(params);
    }
}

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

@ -149,7 +149,7 @@ public class AdapterMetadataController extends BaseController {
                    return actionResult;
                }
            }
            adapterDatasetService.strategy(version,adapter_std_version);
            adapterDatasetService.strategy(version,std_version,adapter_std_version);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error(e.getMessage());

+ 11 - 11
src/main/java/com/yihu/hos/standard/dao/StdDataSetModelDao.java

@ -1,17 +1,10 @@
package com.yihu.hos.standard.dao;
import com.yihu.hos.standard.model.adapter.AdapterMetadataModel;
import com.yihu.hos.standard.model.standard.StdDataSetModel;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.web.framework.util.sql.BeanTransformer;
import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2016/5/4.
@ -22,9 +15,16 @@ public class StdDataSetModelDao extends SQLGeneralDAO implements IStdDataSetMode
    public StdDataSetModel getDatasetName(String version ,Integer id){
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT d.*").append(" FROM std_dataset_").append(version).append(" d where d.id ="+id);
        Query query = getCurrentSession().createSQLQuery(sql.toString());
        query.setResultTransformer(new BeanTransformer(StdDataSetModel.class));
        StdDataSetModel stdDataSetModel =(StdDataSetModel) query.uniqueResult();
        return stdDataSetModel;
        try {
            Query query = getCurrentSession().createSQLQuery(sql.toString());
            query.setResultTransformer(new BeanTransformer(StdDataSetModel.class));
            StdDataSetModel stdDataSetModel =(StdDataSetModel) query.uniqueResult();
            return stdDataSetModel;
        }catch (Exception e){
            System.out.println("错误SQL:"+sql.toString());
            e.printStackTrace();
            return null;
        }
    }
}

+ 14 - 5
src/main/java/com/yihu/hos/standard/dao/StdMetaDataModelDao.java

@ -16,10 +16,19 @@ public class StdMetaDataModelDao extends SQLGeneralDAO implements IStdMetaDataMo
    public List<StdMetaDataModel> getMetadata(String adapter_std_version, String orgMetadataName,String orgDatasetName){
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT m.*").append(" FROM std_metadata_"+adapter_std_version).append(" m inner join std_dataset_"+adapter_std_version )
                .append(" d on d.id= m.dataset_id where m.name like '%" + orgMetadataName + "%' and d.name like '%" + orgDatasetName+"%'");
        Query query = getCurrentSession().createSQLQuery(sql.toString());
        query.setResultTransformer(new BeanTransformer(StdMetaDataModel.class));
        List<StdMetaDataModel> list = query.list();
        return list;
                .append(" d on d.id= m.dataset_id where m.name like ? and d.name like ?");
        try {
            Query query = getCurrentSession().createSQLQuery(sql.toString());
            query.setParameter(0,"%" + orgMetadataName + "%");
            query.setParameter(1,"%" + orgDatasetName + "%");
            query.setResultTransformer(new BeanTransformer(StdMetaDataModel.class));
            List<StdMetaDataModel> list = query.list();
            return list;
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("错误Like SQL:"+sql.toString());
            return null;
        }
    }
}

+ 8 - 0
src/main/java/com/yihu/hos/standard/match/dictionary/DictItemStrategyExecute.java

@ -26,6 +26,8 @@ public class DictItemStrategyExecute implements Runnable {
    private StdDictionaryEntryModelDao stdDictionaryEntryDao;
    private AdapterDictEntryService adapterDictEntryService;
    private DictitemStandardNameStrategy dictitemStandardNameStrategy;
    public DictItemStrategyExecute(
            AdapterDictEntryModel adapterDictEntryModel,
            DictItemMatchVO matchVO,
@ -43,6 +45,8 @@ public class DictItemStrategyExecute implements Runnable {
        standardExistStrategy.setStdDictionaryDao(stdDictionaryDao);
        standardExistStrategy.setStdDictionaryEntryDao(stdDictionaryEntryDao);
        standardExistStrategy.setAdapterDictEntryService(adapterDictEntryService);
        dictitemStandardNameStrategy = new DictitemStandardNameStrategy();
        dictitemStandardNameStrategy.setAdapterDictEntryService(adapterDictEntryService);
    }
    public static void setVersionYes(String version) {
@ -59,6 +63,10 @@ public class DictItemStrategyExecute implements Runnable {
                    return;
                }
            }
            if (dictitemStandardNameStrategy.match(adapterDictEntryModel, version)) {
                updateAdapt(version);
                return;
            }
            updateAdapt(version);
        } catch (Exception e) {
            e.printStackTrace();

+ 62 - 0
src/main/java/com/yihu/hos/standard/match/dictionary/DictitemStandardNameStrategy.java

@ -0,0 +1,62 @@
package com.yihu.hos.standard.match.dictionary;
import com.yihu.hos.standard.model.adapter.AdapterDictEntryModel;
import com.yihu.hos.standard.model.standard.StdDictionaryEntryModel;
import com.yihu.hos.standard.service.adapter.AdapterDictEntryService;
import com.yihu.hos.standard.util.LikeHashMap;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
/**
 * Created by Administrator on 2016/7/4.
 */
@Scope("prototype")
@Component("dictitemStandardNameStrategy")
public class DictitemStandardNameStrategy {
    private AdapterDictEntryService adapterDictEntryService;
    public AdapterDictEntryService getAdapterDictEntryService() {
        return adapterDictEntryService;
    }
    public void setAdapterDictEntryService(AdapterDictEntryService adapterDictEntryService) {
        this.adapterDictEntryService = adapterDictEntryService;
    }
    public DictitemStandardNameStrategy(AdapterDictEntryService adapterDictEntryService) {
        this.adapterDictEntryService = adapterDictEntryService;
    }
    private static LikeHashMap<String,StdDictionaryEntryModel> nameMap=new LikeHashMap<String,StdDictionaryEntryModel>();//机构字典项值的map
    public DictitemStandardNameStrategy() {
    }
    @Transactional
    public boolean match(AdapterDictEntryModel adapterDictEntryModel, String version) throws Exception {
        StdDictionaryEntryModel orgDictItem = nameMap.get(adapterDictEntryModel.getStdEntryValue(), true);
        if (orgDictItem != null ) {
            adapterDictEntryService.saveAdapt(adapterDictEntryModel, orgDictItem, version,"2");
            return true;
        }
        return false;
    }
    public static Map<String, StdDictionaryEntryModel> getNameMap() {
        return nameMap;
    }
    public static void setNameMap(LikeHashMap<String, StdDictionaryEntryModel> nameMap) {
        DictitemStandardNameStrategy.nameMap = nameMap;
    }
}

+ 12 - 1
src/main/java/com/yihu/hos/standard/match/metadata/MetadataStrategyExecute.java

@ -20,14 +20,17 @@ public class MetadataStrategyExecute implements Runnable {
    private AdapterMetadataModel metadata;
    private MetadataMatchVO matchVO;
    public static Map<String, List<Integer>> size = new HashMap<String, List<Integer>>();
    private String std_version;
    private String adapter_std_version;
    private String version;
    private MetatdataStandardExistStrategy standardExistStrategy;
    private AdapterMetadataService adapterMetadataService;
    private MetatdataStandardNameStrategy standardNameStrategy;
    public MetadataStrategyExecute(
            AdapterMetadataModel metadata,
            MetadataMatchVO matchVO,
            String std_version,
            String adapter_std_version,
            String version,
            IStdMetaDataModelDao stdMetaDataModelDao,
@ -35,6 +38,7 @@ public class MetadataStrategyExecute implements Runnable {
            AdapterMetadataService adapterMetadataService) {
        this.metadata = metadata;
        this.matchVO = matchVO;
        this.std_version = std_version;
        this.adapter_std_version = adapter_std_version;
        this.version = version;
        this.adapterMetadataService = adapterMetadataService;
@ -45,6 +49,8 @@ public class MetadataStrategyExecute implements Runnable {
        standardExistStrategy.setStdMetaDataModelDao(stdMetaDataModelDao);
        standardExistStrategy.setAdapterMetadataService(adapterMetadataService);
        standardExistStrategy.setStdDataSetModelDao(stdDataSetModelDao);
        standardNameStrategy = new MetatdataStandardNameStrategy();
        standardNameStrategy.setAdapterMetadataService(adapterMetadataService);
    }
    @Override
@ -52,11 +58,16 @@ public class MetadataStrategyExecute implements Runnable {
        try {
            if (matchVO != null) {
                //项目间学习
                if (standardExistStrategy.match(metadata, matchVO,adapter_std_version, version)) {
                if (standardExistStrategy.match(metadata, matchVO,std_version,adapter_std_version, version)) {
                    updateAdapt(version);
                    return;
                }
            }
            //按名字相似度来适配
            if (standardNameStrategy.match(metadata, version)) {
                updateAdapt(version);
                return;
            }
            updateAdapt(version);
        } catch (Exception e) {
            e.printStackTrace();

+ 51 - 26
src/main/java/com/yihu/hos/standard/match/metadata/MetatdataStandardExistStrategy.java

@ -3,12 +3,15 @@ package com.yihu.hos.standard.match.metadata;
import com.yihu.hos.standard.dao.IStdDataSetModelDao;
import com.yihu.hos.standard.dao.IStdMetaDataModelDao;
import com.yihu.hos.standard.match.matchModel.MetadataMatchVO;
import com.yihu.hos.standard.model.adapter.AdapterDatasetModel;
import com.yihu.hos.standard.model.adapter.AdapterMetadataModel;
import com.yihu.hos.standard.model.standard.StdDataSetModel;
import com.yihu.hos.standard.model.standard.StdMetaDataModel;
import com.yihu.hos.standard.service.adapter.AdapterDatasetService;
import com.yihu.hos.standard.service.adapter.AdapterMetadataService;
import com.yihu.hos.standard.util.GetChineseFirst;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.util.springutil.SpringBeanUtil;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@ -25,10 +28,19 @@ public class MetatdataStandardExistStrategy extends SQLGeneralDAO {
    private IStdMetaDataModelDao stdMetaDataModelDao;
    private AdapterMetadataService adapterMetadataService;
    private IStdDataSetModelDao stdDataSetModelDao;
    private AdapterDatasetService adapterDatasetService;
    public MetatdataStandardExistStrategy(IStdMetaDataModelDao stdMetaDataModelDao){
       this.stdMetaDataModelDao = stdMetaDataModelDao;
   }
    public AdapterDatasetService getAdapterDatasetService() {
        return adapterDatasetService;
    }
    public void setAdapterDatasetService(AdapterDatasetService adapterDatasetService) {
        this.adapterDatasetService = adapterDatasetService;
    }
    public MetatdataStandardExistStrategy(IStdMetaDataModelDao stdMetaDataModelDao) {
        this.stdMetaDataModelDao = stdMetaDataModelDao;
    }
    public IStdMetaDataModelDao getStdMetaDataModelDao() {
        return stdMetaDataModelDao;
@ -56,6 +68,7 @@ public class MetatdataStandardExistStrategy extends SQLGeneralDAO {
    public MetatdataStandardExistStrategy() {
    }
    /**
     * 对传进来的StdeMetadata进行匹配
     *
@ -65,35 +78,47 @@ public class MetatdataStandardExistStrategy extends SQLGeneralDAO {
     * @throws Exception
     */
    @Transactional
    public boolean match(AdapterMetadataModel strategyMetadata,MetadataMatchVO matchVO, String adapter_std_version,String version ) throws Exception {
    public boolean match(AdapterMetadataModel strategyMetadata, MetadataMatchVO matchVO, String std_version, String adapter_std_version, String version) {
        boolean flag = false;
        String metadataNameFirstCode= GetChineseFirst.cn2py(strategyMetadata.getStdMetadataName());//待匹配
        List<AdapterMetadataModel> adapterMetadatas=matchVO.getCodeAdapter().get(metadataNameFirstCode);//已存在
        if(adapterMetadatas!=null&&adapterMetadatas.size()>0){
            //获取待适配的数据集名
            Integer unAdaptDatasetId = strategyMetadata.getStdDatasetId();
            StdDataSetModel stdDataset = stdDataSetModelDao.getDatasetName(adapter_std_version, unAdaptDatasetId);
            String stdDatasetName = stdDataset.getName();
            for (AdapterMetadataModel stdeMetadataTemp : adapterMetadatas) {
                //利用名字來匹配
                if(stdeMetadataTemp.getStdMetadataName().contains(strategyMetadata.getStdMetadataName())){
                    String orgMetadataName= stdeMetadataTemp.getAdapterMetadataName();
                    //根据名字查找出 该项目下面的数据元名称
                    List<StdMetaDataModel> metadataTemps = stdMetaDataModelDao.getMetadata(adapter_std_version,orgMetadataName,stdDatasetName);
                    if(metadataTemps!=null&&metadataTemps.size()>0){
                        String adapterInfo = "1";//找到默认为疑似适配
                        if(metadataTemps.size()==1){//找到条数为1,默认为完全适配
                            adapterInfo="2";
        try {
            String metadataNameFirstCode = GetChineseFirst.cn2py(strategyMetadata.getStdMetadataName());//待匹配
            List<AdapterMetadataModel> adapterMetadatas = matchVO.getCodeAdapter().get(metadataNameFirstCode);//已存在
            if (adapterMetadatas != null && adapterMetadatas.size() > 0) {
                //获取待适配的数据集名
                Integer unAdaptStdId = strategyMetadata.getStdDatasetId();
                StdDataSetModel stdDataset = stdDataSetModelDao.getDatasetName(std_version, unAdaptStdId);
                StdDataSetModel adapterDataset = stdDataSetModelDao.getDatasetName(adapter_std_version, unAdaptStdId);
                String stdDatasetName = stdDataset.getName();
                for (AdapterMetadataModel stdeMetadataTemp : adapterMetadatas) {
                    //利用名字來匹配
                    if (stdeMetadataTemp.getStdMetadataName().contains(strategyMetadata.getStdMetadataName())) {
                        String orgMetadataName = stdeMetadataTemp.getAdapterMetadataName();
                        //根据名字查找出 该项目下面的数据元名称
                        List<StdMetaDataModel> metadataTemps = stdMetaDataModelDao.getMetadata(adapter_std_version, orgMetadataName, stdDatasetName);
                        if (metadataTemps != null && metadataTemps.size() > 0) {
                            String adapterInfo = "1";//找到默认为疑似适配
                            if (metadataTemps.size() == 1) {//找到条数为1,默认为完全适配
                                adapterInfo = "2";
                            }
                            StdMetaDataModel orgMetadata = metadataTemps.get(0);
                            //保存适配
                            adapterMetadataService.saveAdapt(strategyMetadata, orgMetadata, version, adapterInfo);
                            flag = true;
                            break;
                        }
                        StdMetaDataModel orgMetadata=metadataTemps.get(0);
                        //保存适配
                        adapterMetadataService.saveAdapt(strategyMetadata, orgMetadata, version,adapterInfo);
                        flag=true;
                        break;
                    }
                }
                if (adapterDataset != null) {
                    adapterDatasetService = SpringBeanUtil.getService(AdapterDatasetService.BEAN_ID);
                    AdapterDatasetModel entity = adapterDatasetService.getAdapterDatasetByCode(version, adapterDataset.getCode());
                    adapterDatasetService.saveAdaptDataset(entity,adapterDataset,version);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }
}

+ 82 - 0
src/main/java/com/yihu/hos/standard/match/metadata/MetatdataStandardNameStrategy.java

@ -0,0 +1,82 @@
package com.yihu.hos.standard.match.metadata;
import com.yihu.hos.standard.model.adapter.AdapterMetadataModel;
import com.yihu.hos.standard.model.standard.StdMetaDataModel;
import com.yihu.hos.standard.service.adapter.AdapterMetadataService;
import com.yihu.hos.standard.util.LikeHashMap;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
/**
 * Created by Administrator on 2016/7/4.
 */
@Scope("prototype")
@Component("metatdataStandardNameStrategy")
public class MetatdataStandardNameStrategy {
    private static LikeHashMap<String,StdMetaDataModel> nameMap=new LikeHashMap<String,StdMetaDataModel>();//机构名称的map
    private static LikeHashMap<String,StdMetaDataModel> remarkMap=new LikeHashMap<String,StdMetaDataModel>();//机构remark的map
    private AdapterMetadataService adapterMetadataService;
    public AdapterMetadataService getAdapterMetadataService() {
        return adapterMetadataService;
    }
    public void setAdapterMetadataService(AdapterMetadataService adapterMetadataService) {
        this.adapterMetadataService = adapterMetadataService;
    }
    public MetatdataStandardNameStrategy(AdapterMetadataService adapterMetadataService) {
        this.adapterMetadataService = adapterMetadataService;
    }
    public MetatdataStandardNameStrategy() {
    }
    /**
     * 对传进来的metadata进行匹配
     *
     * @param metadata
     * @param version
     * @return
     * @throws Exception
     */
    @Transactional
    public boolean match(AdapterMetadataModel metadata, String version) throws Exception {
        String name = metadata.getStdMetadataName();
        StdMetaDataModel orgStdeMetadata = nameMap.get(name, true);
        if (orgStdeMetadata != null) {
            adapterMetadataService.saveAdapt(metadata, orgStdeMetadata, version,"2");
            return true;
        }
        orgStdeMetadata=remarkMap.get(name,true);
        if (orgStdeMetadata != null ) {
            adapterMetadataService.saveAdapt(metadata, orgStdeMetadata, version,"2");
            return true;
        }
        return false;
    }
    public static Map<String, StdMetaDataModel> getRemarkMap() {
        return remarkMap;
    }
    public static void setRemarkMap(LikeHashMap<String, StdMetaDataModel> remarkMap) {
        MetatdataStandardNameStrategy.remarkMap = remarkMap;
    }
    public static Map<String, StdMetaDataModel> getNameMap() {
        return nameMap;
    }
    public static void setNameMap(LikeHashMap<String, StdMetaDataModel> nameMap) {
        MetatdataStandardNameStrategy.nameMap = nameMap;
    }
}

+ 3 - 1
src/main/java/com/yihu/hos/standard/model/adapter/AdapterSchemeModel.java

@ -1,6 +1,7 @@
package com.yihu.hos.standard.model.adapter;
import com.yihu.hos.web.framework.model.Result;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@ -15,7 +16,8 @@ import java.io.Serializable;
public class AdapterSchemeModel extends Result implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    private Integer id;
    @Column(name="parent_id")

+ 14 - 2
src/main/java/com/yihu/hos/standard/service/adapter/AdapterDatasetService.java

@ -622,7 +622,7 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        }
    }
    public void strategy(String version,String adapter_std_version) throws Exception {
    public void strategy(String version,String std_version,String adapter_std_version) throws Exception {
        List<AdapterMetadataModel> unAdapterMetadataModels =  adapterMetadataService.getAllUnAdaptMetadata(version);//等待适配的标准数据元
        List<AdapterMetadataModel> adapterMetadataModel = new ArrayList<AdapterMetadataModel>();//之前已经适配好的适配方案
        //获取所有未匹配的
@ -644,8 +644,20 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        MetadataStrategyExecute.setFirst(version, unAdapterMetadataModels.size());//设置第一次匹配
        for (AdapterMetadataModel unAdapterMetadataModel : unAdapterMetadataModels) {
            threadPoolTaskExecutor.execute(new MetadataStrategyExecute(unAdapterMetadataModel, matchVO, adapter_std_version,version, stdMetaDataModelDao,stdDataSetModelDao,adapterMetadataService));
            threadPoolTaskExecutor.execute(new MetadataStrategyExecute(unAdapterMetadataModel, matchVO, std_version,adapter_std_version,version, stdMetaDataModelDao,stdDataSetModelDao,adapterMetadataService));
        }
    }
    public void saveAdaptDataset(AdapterDatasetModel strategyDataset,StdDataSetModel orgDataset,String version) throws Exception {
        strategyDataset.setAdapterDatasetId(orgDataset.getId());
        strategyDataset.setAdapterDatasetCode(orgDataset.getCode());
        strategyDataset.setAdapterDatasetName(orgDataset.getName());
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(strategyDataset));
        SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
        String sql = sqlCreator.updateDataByTableKey(new AdapterVersion(version).getDataSetTableName(), jsonNode);
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
}

+ 15 - 0
src/main/java/com/yihu/hos/standard/service/adapter/AdapterDictService.java

@ -6,11 +6,15 @@ import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.standard.dao.IStdDictionaryModelDao;
import com.yihu.hos.standard.dao.StdDictionaryEntryModelDao;
import com.yihu.hos.standard.match.dictionary.DictItemStrategyExecute;
import com.yihu.hos.standard.match.dictionary.DictitemStandardNameStrategy;
import com.yihu.hos.standard.match.matchModel.DictItemMatchVO;
import com.yihu.hos.standard.model.adapter.AdapterDictEntryModel;
import com.yihu.hos.standard.model.adapter.AdapterDictModel;
import com.yihu.hos.standard.model.adapter.AdapterSchemeVersionModel;
import com.yihu.hos.standard.model.standard.StdDictionaryEntryModel;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.standard.service.standard.StdDictService;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
@ -46,6 +50,9 @@ public class AdapterDictService extends SQLGeneralDAO {
    @Autowired
    private StdDictionaryEntryModelDao stdDictionaryEntryDao;
    @Autowired
    private StdDictService stdDictService;
    public AdapterDictService() {
    }
@ -210,6 +217,14 @@ public class AdapterDictService extends SQLGeneralDAO {
        DictItemMatchVO matchVO= new DictItemMatchVO();
        matchVO.setCodeAdapter(matchVO.geNameGroup(adapterDictEntryModels));
        //設置匹配的机构数据緩存
        StandardVersion standardVersion = new StandardVersion(adapter_std_version);
        List<StdDictionaryEntryModel> dictItems = stdDictService.getDicEntryList(standardVersion, null, null, null, null);
        for (StdDictionaryEntryModel stdDictItem:dictItems){
            DictitemStandardNameStrategy.getNameMap().put(stdDictItem.getValue(),stdDictItem);
        }
        //执行匹配
        DictItemStrategyExecute.setFirst(version, unAdapterDictEntryModels.size());//设置第一次匹配

+ 9 - 5
src/main/java/com/yihu/hos/standard/service/standard/StdDictService.java

@ -258,13 +258,17 @@ public class StdDictService extends SQLGeneralDAO {
        return (List<StdDictionaryModel>) sessionQuery.list();
    }
    private List<StdDictionaryEntryModel> getDicEntryList(StandardVersion standardVersion, Map<String, Object> query, Map<String, String> order, Integer limit, Integer offset) {
    public List<StdDictionaryEntryModel> getDicEntryList(StandardVersion standardVersion, Map<String, Object> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryEntryModel.class);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        if(null!=query){
            for (String key : query.keySet()) {
                sqlCreator.equalCondition(key, query.get(key));
            }
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        if(order!=null){
            for (String key : order.keySet()) {
                sqlCreator.order(key, order.get(key));
            }
        }
        String sql = sqlCreator.selectData(standardVersion.getDictEntryTableName());

+ 3 - 1
src/main/java/com/yihu/hos/standard/service/standard/StdMetadataService.java

@ -201,7 +201,9 @@ public class StdMetadataService extends SQLGeneralDAO {
    private List<StdMetaDataModel> getList(StandardVersion standardVersion, Integer datasetId, Map<String, Object> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
        sqlCreator.equalCondition("datasetId", datasetId);
        if(null!=datasetId){
            sqlCreator.equalCondition("datasetId", datasetId);
        }
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }

+ 2 - 7
src/main/resources/application.yml

@ -72,7 +72,7 @@ spring:
  #SAAS管理员账号,暂时配置在此处
  datasource:
      driverClassName: com.mysql.jdbc.Driver
      url: jdbc:mysql://172.17.110.202:8066/global_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
      url: jdbc:mysql://172.19.103.57:8066/global_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
      username: hos
      password: 123456
      test-on-borrow: true
@ -91,18 +91,13 @@ spring:
    show-sql: false
  data:
    mongodb:
      host: 172.17.110.202
      host: 172.19.103.57
      port: 27017
      username: esb
      password: esb
      authenticationDatabase: admin
      gridFsDatabase: dfs
      database: runtime
  activemq:
    broker-url: tcp://172.17.110.202:61616?wireFormat.maxInactivityDuration=0
    user: admin
    password: admin
    pooled: false
  aop:
    proxy-target-class: true
hos:

+ 74 - 0
src/main/webapp/WEB-INF/ehr/jsp/qc/editorRule.jsp

@ -0,0 +1,74 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<!--######应用管理页面 > 应用详情模板页######-->
<div id="div_info_form" class="m-form-inline" style="padding-top:10px;" data-role-form>
    <input id="flag" value="${flag}" style="display: none">
    <div class="m-form-group">
        <label><span class="red">*&nbsp;</span>名称:</label>
        <div class="m-form-control ">
            <div class="l-text">
                <input type="text" class="l-text-field required" placeholder="请输入名称" name="name"/>
            </div>
        </div>
    </div>
    <div class="m-form-group">
        <label><span class="red">*&nbsp;</span>分类:</label>
        <div class="m-form-control ">
            <div class="l-text">
                <input type="text" id="type" data-type="select" class="l-text-field required" placeholder="请选择分类" name="type">
            </div>
        </div>
    </div>
    <div class="m-form-group">
        <label><span class="red">*&nbsp;</span>规则描述:</label>
        <div class="m-form-control">
            <div class="l-text">
                <input type="text" class="l-text-field required" placeholder="请输入规则描述" name="describe"/>
            </div>
        </div>
    </div>
    <div class="m-form-group">
        <label><span class="red">*&nbsp;</span>脚本(或接口):</label>
        <div class="m-form-control">
            <div class="l-text">
                <input type="text" class="l-text-field required" placeholder="请输入脚本(或接口)" name="rule"/>
            </div>
        </div>
    </div>
    <div class="m-form-group">
        <label><span class="red">*&nbsp;</span>统一错误代码:</label>
        <div class="m-form-control">
            <div class="l-text">
                <input type="text" id="error_code" data-type="select" class="l-text-field required" placeholder="请选择统一错误代码" name="error_code"/>
            </div>
        </div>
    </div>
    <!-- 隐藏字段 -->
    <div class="m-form-group" style="display: none;">
        <input name="id" hidden="hidden"/>
    </div>
    <div class="m-form-bottom">
        <div id="btnCancel" class="l-button l-button-no">
            <span>关闭</span>
        </div>
        <div id="btnEditor" class="l-button" style="display:none">
            <span>编辑</span>
        </div>
        <div id="btnSave" class="l-button">
            <span>保存</span>
        </div>
    </div>
</div>
<style>
    .m-form-group label{width: 135px;}
    .btnGrayUp.required{border: #FF7777 1px solid; float: left;}
</style>

+ 122 - 0
src/main/webapp/WEB-INF/ehr/jsp/qc/editorRuleJs.jsp

@ -0,0 +1,122 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<script type="text/javascript">
    /* *************************** 模块初始化 ***************************** */
    var editorParam = {
        //form
        actionUrl:"${contextRoot}/rule/addRule",
        init: function () {
            this.toDisable();
            this.bindEvents();
            this.initForm();
        },
        toDisable: function () {
            if ($("#flag").val() == 'disabled') {
                $("#btnEditor").show();
                $("#btnSave").hide();
                $("input[name='type']").attr("disabled", "disabled");
                $("input[name='name']").attr("disabled", "disabled");
                $("input[name='describe']").attr("disabled", "disabled");
                $("input[name='rule']").attr("disabled", "disabled");
                $("input[name='error_code']").attr("disabled", "disabled");
            }
        },
        initForm: function () {
            var me = this;
            $("#type").ligerComboBox({dict: true, dictName: "RULE_TYPE"});
            $("#error_code").ligerComboBox({dict: true, dictName: "GLOBAL_ERROR_CODE"});
            var data;
            var modelString = "${model.id}";
            if (modelString != undefined && modelString != null && modelString.length > 0) {
                data = {
                    id: "${model.id}",
                    type: "${model.type}",
                    name: "${model.name}",
                    describe: "${model.describe}",
                    rule: "${model.rule}",
                    error_code: "${model.error_code}",
                };
                me.actionUrl = "${contextRoot}/rule/updateRule";
            }
            $("#div_info_form").ligerAutoForm({
                data: data,
                validate: {
                    name:"required",
                    describe:"required",
                    rule:"required",
                    error_code:"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;
                }
                var data = $("#div_info_form").ligerAutoForm("getData");
                $.ajax({ //ajax处理
                    type: "POST",
                    url: me.actionUrl,
                    dataType: "json",
                    data: data,
                    cache: false,
                    success: function (data) {
                        if (data.successFlg) {
                            parent.rule.dialogSuccess(data.message);
                        }
                        else {
                            $.ligerDialog.error(data.message);
                        }
                        $("#btnSave").css("pointer-events", "");
                    },
                    error: function (data) {
                        $.ligerDialog.error("Status:" + data.status + "(" + data.statusText + ")");
                        $("#btnSave").css("pointer-events", "");
                    }
                });
            });
            $(".m-form-bottom").on("click", "#btnEditor", function () {
                $("#btnEditor").hide();
                $("#btnSave").show();
                $("input[name='type']").removeAttr("disabled");
                $("input[name='name']").removeAttr("disabled");
                $("input[name='describe']").removeAttr("disabled");
                $("input[name='rule']").removeAttr("disabled");
                $("input[name='error_code']").removeAttr("disabled");
                $("#flag").val("");
            });
            $(".m-form-bottom").on("click", "#btnCancel", function () {
                parent.rule.dialog.close();
            });
//            $("#type").ligerComboBox({
//                data: [{"value": "完整性", "code": "1"}, {"value": "及时性", "code": "2"}, {"value": "准确性", "code": "3"}],
//                cancelable: false,
//                onSuccess: function (data) {
//                }
//            });
        }
    };
    $(function () {
        editorParam.init();
    });
</script>
<script type="text/javascript" src="${staticRoot}/lib/jquery/jqueryform.js"></script>

+ 34 - 0
src/main/webapp/WEB-INF/ehr/jsp/qc/rule.jsp

@ -0,0 +1,34 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!--######用户管理页面Title设置######-->
<!-- ####### 页面部分 ####### -->
<div class="m-content">
    <!-- ####### 查询条件部分 ####### -->
    <div class="m-form-inline">
        <div class="m-form-group">
            <div class="m-form-control">
                <input type="text" id="txtName" class="l-text-field" placeholder="请输入名称"/>
            </div>
            <div class="m-form-control right" >
                <div id="div_delete_record" class="l-button" style="background-color: #ec6941;">
                    <span><spring:message code="btn.multi.delete"/></span>
                </div>
                <div id="div_new_record" class="l-button">
                    <span><spring:message code="btn.create"/></span>
                </div>
            </div>
        </div>
    </div>
    <!--######菜单信息表######-->
    <div id="div_grid">
    </div>
</div>
<style>
    #div_delete_record:hover{background: red !important;}
</style>

+ 189 - 0
src/main/webapp/WEB-INF/ehr/jsp/qc/ruleJs.jsp

@ -0,0 +1,189 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<script>
    /* *************************** 模块初始化 ***************************** */
    var rule = {
        grid: null,
        dialog: null,
        init: function () {
            this.bindEvents();
            this.initForm();
        },
        initForm: function () {
            var me = this;
            $('.m-retrieve-area').show();
            $("#txtName").ligerSearch({
                onClick:function(value){
                    me.reloadGrid();
            }});
            me.grid = $("#div_grid").ligerGrid({
                url: '${contextRoot}/rule/getRuleList',
                parms: {
                    name: $('#txtName').val(),
                },
                checkbox:true,
                columns: [
                    {display: '名称', name: 'name', width: '10%'},
                    {display: '分类', id: 'type', name: 'type', width: '10%'},
                    {display: '规则描述', name: 'describe', width: '20%'},
                    {display: '脚本(或接口)', name: 'rule', width: '20%'},
                    {display: '统一错误代码', id: 'error_code', name: 'error_code', width: '20%'
                    },
                    {
                        display: '操作', name: 'operator', width: '20%', render: function (row) {
                        var html = '<div class="m-inline-buttons" style="width:350px;">';
                        html += "<a class=\"m-btn\" style=\"padding-right:10px\" onclick=\"rule.editorDialog('"+row.id+"','disabled')\">查看详情</a>";
                        html += "<a class=\"m-btn-edit\" onclick=\"rule.editorDialog('"+row.id+"','')\"></a>";
                        html += "<a class=\"m-btn-delete\" onclick=\"rule.delete('"+row.id+"')\"></a>";
                        html += '</div>';
                        return html;
                    }
                    }
                ],
                onDblClickRow: function (row) {
                    me.editorDialog(row.id);
                }
            });
        },
        bindEvents: function () {
            var me = this;
            var flag = false;
            $('#div_new_record').click(function () {
                me.editorDialog();
            });
            $('#div_delete_record').click(function(){
                var rows = rule.grid.getSelecteds();
                if(rows.length > 0){
                    var idArr = [];
                    for(var i in rows){
                        idArr.push(rows[i].id);
                    }
                    rule.deleteBatch(idArr.join(","));
                }else{
                    $.ligerDialog.error("请选择要删除的规则信息!");
                    return false;
                }
            })
            $(".l-text").css("display","inline-block");
            $(".l-text-wrapper").css("display","inline-block");
        },
        delete:function(id){
            var message = "确定要删除该规则信息吗?";
            jQuery.ligerDialog.confirm(message, function (confirm) {
                if (confirm)
                {
                    $.ajax({ //ajax处理
                        type: "POST",
                        url : "${contextRoot}/rule/deleteRule",
                        dataType : "json",
                        data:{id:id},
                        cache:false,
                        success :function(data){
                            if(data.successFlg) {
                                $.ligerDialog.success(data.message);
                                rule.grid.reload();
                            }
                            else{
                                $.ligerDialog.error(data.message);
                            }
                        },
                        error :function(data){
                            $.ligerDialog.error("Status:"+data.status +"(" +data.statusText+")");
                        }
                    });
                }
            });
        },
        // 批量删除
        deleteBatch: function (idList) {
            var message = "确定要删除选中的规则信息吗?";
            jQuery.ligerDialog.confirm(message, function (confirm) {
                if (confirm)
                {
                    $.ajax({ //ajax处理
                        type: "POST",
                        url : "${contextRoot}/rule/deleteRuleBatch",
                        dataType : "json",
                        data:{idList: idList},
                        cache:false,
                        success :function(data){
                            if(data.successFlg) {idList
                                $.ligerDialog.success(data.message);
                                rule.grid.reload();
                            }
                            else{
                                $.ligerDialog.error(data.message);
                            }
                        },
                        error :function(data){
                            $.ligerDialog.error("Status:"+data.status +"(" +data.statusText+")");
                        }
                    });
                }
            });
        },
        //刷新列表数据
        reloadGrid: function () {
            this.grid.set({
                parms: {name: $('#txtName').val(),valid:$('#valid_val').val()}
            });
            this.grid.reload();
        },
        //编辑弹窗
        editorDialog: function (id, flag) {
            var me = this;
            var title = "规则录入";
            var params = null;
            if (id != undefined && id != null) {
                title = "规则录入";
                params = {"id": id, "flag": flag};
            }
            me.dialog = $.ligerDialog.open({
                height: 400,
                width: 500,
                title: title,
                url: '${contextRoot}/rule/editorRule',
                //load: true,
                urlParms: params
            });
        },
        dialogDetail: function (id) {
            var me = this;
            var title = "规则详情";
            var params = null;
            if (id != undefined && id != null) {
                params = {"id": id};
            }
            me.dialog = $.ligerDialog.open({
                height: 500,
                width: 500,
                title: title,
                url: '${contextRoot}/rule/ruleDetail',
                //load: true,
                urlParms: params
            });
        },
    anthorize: function (id) {
        },
        //弹窗返回
        dialogSuccess: function (message) {
            $.ligerDialog.success(message);
            rule.reloadGrid();
            rule.dialog.close();
        }
    };
    $(function () {
        rule.init();
    });
</script>