Kaynağa Gözat

统一使用Logger,去除LogService

Airhead 8 yıl önce
ebeveyn
işleme
825f306a11
34 değiştirilmiş dosya ile 763 ekleme ve 948 silme
  1. 0 12
      Hos-Framework/src/main/java/com/yihu/ehr/framework/constrant/RedisNamespace.java
  2. 1 1
      Hos-Framework/src/main/java/com/yihu/ehr/framework/constrant/Constants.java
  3. 105 107
      Hos-Framework/src/main/java/com/yihu/ehr/framework/model/DataGridResult.java
  4. 5 2
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/compress/Zipper.java
  5. 0 29
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/encode/HashUtil.java
  6. 4 4
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/encrypt/RSA.java
  7. 99 99
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/file/FtpFileUtil.java
  8. 8 5
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/http/HOPClient.java
  9. 13 10
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/http/HttpsClient.java
  10. 4 2
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/http/HttpsInitialise.java
  11. 0 59
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/log/LogService.java
  12. 43 43
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/sql/SqlCreator.java
  13. 10 9
      Hos-resource/src/main/java/com/yihu/ehr/common/ApplicationStart.java
  14. 2 2
      Hos-resource/src/main/java/com/yihu/ehr/crawler/format/DataSetTransformer.java
  15. 2 2
      Hos-resource/src/main/java/com/yihu/ehr/crawler/service/CrawlerService.java
  16. 11 11
      Hos-resource/src/main/java/com/yihu/ehr/crawler/service/DataCollectDispatcher.java
  17. 6 6
      Hos-resource/src/main/java/com/yihu/ehr/crawler/service/EsbHttp.java
  18. 324 435
      Hos-resource/src/main/java/com/yihu/ehr/datacollect/service/DatacollectService.java
  19. 2 2
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StandardController.java
  20. 19 19
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDatasetService.java
  21. 2 2
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterMetadataService.java
  22. 3 3
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeService.java
  23. 19 20
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeVersionService.java
  24. 6 6
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/bo/AdapterVersion.java
  25. 8 8
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StandardService.java
  26. 8 8
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StandardVersionService.java
  27. 3 3
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdCDACatalogService.java
  28. 9 9
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDatasetService.java
  29. 2 2
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDictEntryService.java
  30. 2 2
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDictService.java
  31. 8 8
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdMetadataService.java
  32. 4 4
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdPublisherService.java
  33. 0 14
      Hos-resource/src/main/resources/spring/applicationContext.xml
  34. 31 0
      sdk/java/hos-client/src/main/java/com/yihu/hos/client/BrokerServerClient.java

+ 0 - 12
Hos-Framework/src/main/java/com/yihu/ehr/framework/constrant/RedisNamespace.java

@ -1,12 +0,0 @@
package com.yihu.ehr.framework.constrant;
/**
 * @author Sand
 * @version 1.0
 * @created 2015.09.19 12:24
 */
public class RedisNamespace {
    public final static String TextResource = "Txt.Res.";
    public final static String FoundationDataOrg = "Foundation.Data.Org.";
}

+ 1 - 1
Hos-Framework/src/main/java/com/yihu/ehr/framework/constrant/Constants.java

@ -3,7 +3,7 @@ package com.yihu.ehr.framework.constrant;
/**
 * Created by lingfeng on 2015/6/23.
 */
public class Constants {
public class SqlConstants {
    public static final String CREATE_TABLE = " CREATE TABLE ";
    public static final String INSERT_INTO = " INSERT INTO ";
    public static final String ALTER_TABLE = " ALTER TABLE ";

+ 105 - 107
Hos-Framework/src/main/java/com/yihu/ehr/framework/model/DataGridResult.java

@ -2,8 +2,8 @@ package com.yihu.ehr.framework.model;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.util.log.LogService;
import com.yihu.ehr.framework.util.springutil.SpringBeanUtil;
import com.yihu.ehr.framework.util.log.Logger;
import com.yihu.ehr.framework.util.log.LoggerFactory;
import net.sf.json.JSONObject;
import java.io.Serializable;
@ -12,109 +12,107 @@ import java.util.List;
/**
 * 列表对象
 */
public class DataGridResult extends Result implements Serializable{
	private int pageSize = 10;
	private int currPage = 1;
	private int totalPage;
	private int totalCount;
	private List detailModelList;
	public DataGridResult()
	{
	}
	public DataGridResult(int pageSize, int currPage) {
		this.pageSize = pageSize;
		this.currPage = currPage;
	}
	public String toJson(){
		ObjectMapper objectMapper = SpringBeanUtil.getService("objectMapper");
		try {
			return objectMapper.writeValueAsString(this);
		} catch (JsonProcessingException e) {
			LogService.getLogger().error(e.getMessage());
			return "";
		}
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public int getCurrPage() {
		return currPage;
	}
	public void setCurrPage(int currPage) {
		this.currPage = currPage;
	}
	public int getTotalPage() {
		if (totalCount % pageSize == 0) {
			totalPage = totalCount / pageSize;
		} else {
			totalPage = totalCount / pageSize + 1;
		}
		return totalPage;
	}
	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}
	public int getStart() {
		if (currPage != 0) {
			return (currPage - 1) * pageSize;
		}
		return 0;
	}
	public int getEnd() {
		if (currPage != 0) {
			return currPage * pageSize;
		}
		return 0;
	}
	public int getTotalCount() {
		if(totalCount==0&&detailModelList!=null)
		{
			totalCount = detailModelList.size();
		}
		return totalCount;
	}
	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}
	public List getDetailModelList() {
		return detailModelList;
	}
	public void setDetailModelList(List detailModelList) {
		this.detailModelList = detailModelList;
	}
	/**
	 * Json�ַ���תʵ��
	 * @return
	 */
	public static DataGridResult fromJson(String json)
	{
		return (DataGridResult) JSONObject.toBean(JSONObject.fromObject(json), DataGridResult.class);
	}
public class DataGridResult extends Result implements Serializable {
    private static final Logger logger = LoggerFactory.getLogger(DataGridResult.class);
    private int pageSize = 10;
    private int currPage = 1;
    private int totalPage;
    private int totalCount;
    private List detailModelList;
    public DataGridResult() {
    }
    public DataGridResult(int pageSize, int currPage) {
        this.pageSize = pageSize;
        this.currPage = currPage;
    }
    /**
     * Json�ַ���תʵ��
     *
     * @return
     */
    public static DataGridResult fromJson(String json) {
        return (DataGridResult) JSONObject.toBean(JSONObject.fromObject(json), DataGridResult.class);
    }
    public String toJson() {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            return objectMapper.writeValueAsString(this);
        } catch (JsonProcessingException e) {
            logger.error(e.getMessage());
            return "";
        }
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getCurrPage() {
        return currPage;
    }
    public void setCurrPage(int currPage) {
        this.currPage = currPage;
    }
    public int getTotalPage() {
        if (totalCount % pageSize == 0) {
            totalPage = totalCount / pageSize;
        } else {
            totalPage = totalCount / pageSize + 1;
        }
        return totalPage;
    }
    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
    public int getStart() {
        if (currPage != 0) {
            return (currPage - 1) * pageSize;
        }
        return 0;
    }
    public int getEnd() {
        if (currPage != 0) {
            return currPage * pageSize;
        }
        return 0;
    }
    public int getTotalCount() {
        if (totalCount == 0 && detailModelList != null) {
            totalCount = detailModelList.size();
        }
        return totalCount;
    }
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    public List getDetailModelList() {
        return detailModelList;
    }
    public void setDetailModelList(List detailModelList) {
        this.detailModelList = detailModelList;
    }
}

+ 5 - 2
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/compress/Zipper.java

@ -1,6 +1,7 @@
package com.yihu.ehr.framework.util.compress;
import com.yihu.ehr.framework.util.log.LogService;
import com.yihu.ehr.framework.util.log.Logger;
import com.yihu.ehr.framework.util.log.LoggerFactory;
import com.yihu.ehr.framework.util.operator.StringUtil;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
@ -18,6 +19,8 @@ import java.util.List;
 * @created Air 2015/5/26.
 */
public class Zipper {
    private static final Logger logger = LoggerFactory.getLogger(Zipper.class);
    /**
     * 使用给定密码解压指定的ZIP压缩文件到指定目录
     * <p>
@ -127,7 +130,7 @@ public class Zipper {
            return new File(zipFileName);
        } catch (ZipException ex) {
            LogService.getLogger(Zipper.class).error(ex.getMessage());
            logger.error(ex.getMessage());
        }
        return null;

+ 0 - 29
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/encode/HashUtil.java

@ -1,29 +0,0 @@
package com.yihu.ehr.framework.util.encode;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
 * Created by Administrator on 2015/7/31.
 */
public class HashUtil {
    /**
     * 为传入的参数生成hash值.
     *
     * @param str
     */
    public static String hashStr(String str) {
        try{
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(str.getBytes());
            return new BigInteger(1, md.digest()).toString(16);
        } catch (NoSuchAlgorithmException ex) {
            //LogService.getLogger(HashUtil.class).error(ex.getMessage());
        }
        return "";
    }
}

+ 4 - 4
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/encrypt/RSA.java

@ -105,10 +105,10 @@ public class RSA {
    }
    /**
     *  ͨ���ַ���˽Կ����
     * @param data   ����
     * @param privateKey �ַ���˽Կ
     * @return  ����
     *  私钥加密
     * @param data   明文
     * @param privateKey 私钥
     * @return  密文
     * @throws Exception
     */
    public static String encryptByPriKey(String data, String privateKey) throws Exception {

+ 99 - 99
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/file/FtpFileUtil.java

@ -1,6 +1,7 @@
package com.yihu.ehr.framework.util.file;
import com.yihu.ehr.framework.util.log.LogService;
import com.yihu.ehr.framework.util.log.Logger;
import com.yihu.ehr.framework.util.log.LoggerFactory;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
@ -18,6 +19,7 @@ import java.util.Map;
 * Created by HZY on 2015/8/12.
 */
public class FtpFileUtil {
    static final private Logger logger = LoggerFactory.getLogger(FtpFileUtil.class);
    private int port = 21;      // 端口号
    private String username;    //ftp  登录名
@ -54,9 +56,9 @@ public class FtpFileUtil {
            ftpClient.setDataTimeout(60 * 1000);
            ftpClient.setRemoteVerificationEnabled(false);
        } catch (SocketException e) {
            LogService.getLogger().error("连接Ftp服务器异常:", e);
            logger.error("连接Ftp服务器异常:", e);
        } catch (IOException e) {
            LogService.getLogger().error("连接Ftp服务器异常:", e);
            logger.error("连接Ftp服务器异常:", e);
        }
    }
@ -71,7 +73,7 @@ public class FtpFileUtil {
            ftpClient.logout();
            ftpClient.disconnect();
        } catch (IOException e) {
            LogService.getLogger().error("关闭Ftp连接失败:", e);
            logger.error("关闭Ftp连接失败:", e);
        }
    }
@ -93,7 +95,7 @@ public class FtpFileUtil {
     *
     * @param localDir    本地文件
     * @param ftpFileName ftp上传路径
     * @return  是否上传成功
     * @return 是否上传成功
     * @throws Exception
     */
    public boolean upload(String localDir, String ftpFileName) throws Exception {
@ -107,8 +109,8 @@ public class FtpFileUtil {
    /**
     * 下载单个ftp上文件
     *
     * @param ftpFileName   ftp文件路径
     * @param localDir  本地保存路径
     * @param ftpFileName ftp文件路径
     * @param localDir    本地保存路径
     * @return 是否下载成功
     */
    public boolean downFile(String ftpFileName, String localDir) {
@ -126,9 +128,9 @@ public class FtpFileUtil {
            }
            ftpClient.changeToParentDirectory();
        } catch (SocketException e) {
            LogService.getLogger().error("Ftp服务器连接失败!", e);
            logger.error("Ftp服务器连接失败!", e);
        } catch (IOException e) {
            LogService.getLogger().error("Ftp文件下载失败!", e);
            logger.error("Ftp文件下载失败!", e);
        }
        return success;
    }
@ -163,7 +165,7 @@ public class FtpFileUtil {
            success = ftpClient.storeFile(localFile.getName(), in);
            in.close();
        } catch (IOException e) {
            LogService.getLogger().error("Ftp文件上传失败!", e);
            logger.error("Ftp文件上传失败!", e);
        }
        return success;
    }
@ -173,14 +175,14 @@ public class FtpFileUtil {
     * 判断是否是目录
     *
     * @param fileName ftp文件路径
     * @return  true 是目录 false 不是
     * @return true 是目录 false 不是
     */
    public boolean isDir(String fileName) {
        try {
            //切换目录,若当前是目录则返回true,否则返回false。
            return ftpClient.changeWorkingDirectory(fileName);
        } catch (Exception e) {
            LogService.getLogger().error("Ftp判断是否是目录失败!", e);
            logger.error("Ftp判断是否是目录失败!", e);
        }
        return false;
    }
@ -213,7 +215,7 @@ public class FtpFileUtil {
                    if (ftpClient.makeDirectory(subDirectory)) {
                        ftpClient.changeWorkingDirectory(subDirectory);
                    } else {
                        LogService.getLogger().debug("创建Ftp目录失败");
                        logger.debug("创建Ftp目录失败");
                        return false;
                    }
                }
@ -244,62 +246,7 @@ public class FtpFileUtil {
            ftpClient.logout();
            success = true;
        } catch (Exception e) {
            LogService.getLogger().error("Ftp文件删除失败!", e);
        }
        return success;
    }
    /**
     * 下载ftp文件夹
     *
     * @param ftpFileName ftp文件或文件夹名
     * @param localDir    本地保存路径
     */
    private boolean downDir(String ftpFileName, String localDir) {
        boolean success = false;
        try {
            File file = new File(ftpFileName);
            File temp = new File(localDir);
            if (!temp.exists()) {
                temp.mkdirs();
            }
            // 判断是否是目录
            if (isDir(ftpFileName)) {
                String dirPath = localDir + "/" + ftpFileName;
                File dirFile = new File(dirPath);
                if (!dirFile.exists()) {
                    dirFile.mkdirs();
                }
                String[] names = ftpClient.listNames();
                for (int i = 0; i < names.length; i++) {
                    if (isDir(names[i])) {
                        downDir(ftpFileName + '/' + names[i], dirPath
                                + File.separator + names[i]);
                        ftpClient.changeToParentDirectory();
                    } else {
                        File localfile = new File(dirPath + File.separator
                                + names[i]);
                        if (!localfile.exists()) {
                            fos = new FileOutputStream(localfile);
                            ftpClient.retrieveFile(names[i], fos);
                        }
                    }
                }
            } else {
                File localfile = new File(localDir + File.separator + file.getName());
                if (!localfile.exists()) {
                    fos = new FileOutputStream(localfile);
                    success = ftpClient.retrieveFile(ftpFileName, fos);
                }
                ftpClient.changeToParentDirectory();
            }
        } catch (SocketException e) {
            LogService.getLogger().error("Ftp服务器连接异常!", e);
        } catch (IOException e) {
            LogService.getLogger().error("Ftp文件下载失败!", e);
            logger.error("Ftp文件删除失败!", e);
        }
        return success;
    }
@ -327,34 +274,33 @@ public class FtpFileUtil {
                return uploadFile(filename, uploadpath);
            }
            File[] flles = file.listFiles();
            if (flles!=null){
            for (File files : flles) {
                if (files.exists()) {
                    if (files.isDirectory()) {
                        uploadDir(files.getAbsoluteFile().toString(),
                                uploadpath);
                    } else {
                        String local = files.getCanonicalPath().replaceAll("\\\\", "/");
                        String remote = uploadpath + local.substring(local.indexOf("/") + 1, local.lastIndexOf("/") + 1);
                        ftpClient.changeWorkingDirectory("/");
                        uploadFile(local, remote);
                        ftpClient.changeWorkingDirectory("/");
            if (flles != null) {
                for (File files : flles) {
                    if (files.exists()) {
                        if (files.isDirectory()) {
                            uploadDir(files.getAbsoluteFile().toString(),
                                    uploadpath);
                        } else {
                            String local = files.getCanonicalPath().replaceAll("\\\\", "/");
                            String remote = uploadpath + local.substring(local.indexOf("/") + 1, local.lastIndexOf("/") + 1);
                            ftpClient.changeWorkingDirectory("/");
                            uploadFile(local, remote);
                            ftpClient.changeWorkingDirectory("/");
                        }
                    }
                }
            }
            }
        } catch (IOException e) {
            LogService.getLogger().error("Ftp文件上传失败!", e);
            logger.error("Ftp文件上传失败!", e);
        }
        return true;
    }
    /**
     * 读取病人信息并封装成List<String>
     *
     * @param path 远程ftp文件路径
     * @return     List<String>病人信息集合
     * @return List<String>病人信息集合
     */
    public List<String> readFileData(String path) {
        connect();
@ -367,8 +313,8 @@ public class FtpFileUtil {
            if (filenames != null && filenames.length > 0) {
                for (String filenanme : filenames) {
                    inputStream = ftpClient.retrieveFileStream(path + "/" + filenanme);
                    if (inputStream==null){
                        LogService.getLogger().info("读取Ftp文件路径错误:" + (path + "/" + filenanme));
                    if (inputStream == null) {
                        logger.info("读取Ftp文件路径错误:" + (path + "/" + filenanme));
                        return list;
                    }//流为null,文件读取失败
                    String json = FileUtil.streamToBase64String(inputStream);
@ -378,22 +324,21 @@ public class FtpFileUtil {
                }
            }
        } catch (SocketException e) {
            LogService.getLogger().error("Ftp服务器异常!", e);
            logger.error("Ftp服务器异常!", e);
        } catch (IOException e) {
            LogService.getLogger().error("Ftp文件读取失败!", e);
        }finally {
            logger.error("Ftp文件读取失败!", e);
        } finally {
            closeConnect();
        }
        return list;
    }
    /**
     * 获取病人列表信息
     *
     * @param basePath  根目录下病人数据文件夹 eg:/home/test/patient/
     * @param basePath 根目录下病人数据文件夹 eg:/home/test/patient/
     * @param agencyNo 机构编码
     * @return  病人信息map集合
     * @return 病人信息map集合
     */
    public List<Map<String, String>> getPatientList(String basePath, String agencyNo) {
        connect();
@ -420,14 +365,14 @@ public class FtpFileUtil {
//                    ftpClient.changeWorkingDirectory("..");
                    }
                }
            }else {
                LogService.getLogger().debug("agency编码:" + agencyNo + " 对应的数据不存在,获取病人列表信息失败");
            } else {
                logger.debug("agency编码:" + agencyNo + " 对应的数据不存在,获取病人列表信息失败");
            }
        } catch (SocketException e) {
            LogService.getLogger().error("Ftp-服务器连接失败!", e);
            logger.error("Ftp-服务器连接失败!", e);
        } catch (IOException e) {
            LogService.getLogger().error("Ftp-获取病人数据失败!", e);
        }finally {
            logger.error("Ftp-获取病人数据失败!", e);
        } finally {
            closeConnect();
        }
        return list;
@ -435,6 +380,7 @@ public class FtpFileUtil {
    /**
     * 清空文件夹中文件
     *
     * @param pathname ftp文件夹路径
     * @return
     */
@ -451,10 +397,64 @@ public class FtpFileUtil {
                }
            }
        } catch (IOException e) {
            LogService.getLogger().error("Ftp-清空文件夹失败!", e);
            logger.error("Ftp-清空文件夹失败!", e);
            return false;
        }
        return true;
    }
    /**
     * 下载ftp文件夹
     *
     * @param ftpFileName ftp文件或文件夹名
     * @param localDir    本地保存路径
     */
    private boolean downDir(String ftpFileName, String localDir) {
        boolean success = false;
        try {
            File file = new File(ftpFileName);
            File temp = new File(localDir);
            if (!temp.exists()) {
                temp.mkdirs();
            }
            // 判断是否是目录
            if (isDir(ftpFileName)) {
                String dirPath = localDir + "/" + ftpFileName;
                File dirFile = new File(dirPath);
                if (!dirFile.exists()) {
                    dirFile.mkdirs();
                }
                String[] names = ftpClient.listNames();
                for (int i = 0; i < names.length; i++) {
                    if (isDir(names[i])) {
                        downDir(ftpFileName + '/' + names[i], dirPath
                                + File.separator + names[i]);
                        ftpClient.changeToParentDirectory();
                    } else {
                        File localfile = new File(dirPath + File.separator
                                + names[i]);
                        if (!localfile.exists()) {
                            fos = new FileOutputStream(localfile);
                            ftpClient.retrieveFile(names[i], fos);
                        }
                    }
                }
            } else {
                File localfile = new File(localDir + File.separator + file.getName());
                if (!localfile.exists()) {
                    fos = new FileOutputStream(localfile);
                    success = ftpClient.retrieveFile(ftpFileName, fos);
                }
                ftpClient.changeToParentDirectory();
            }
        } catch (SocketException e) {
            logger.error("Ftp服务器连接异常!", e);
        } catch (IOException e) {
            logger.error("Ftp文件下载失败!", e);
        }
        return success;
    }
}

+ 8 - 5
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/http/HOPClient.java

@ -2,7 +2,8 @@ package com.yihu.ehr.framework.util.http;
import com.yihu.ehr.framework.util.encrypt.MD5;
import com.yihu.ehr.framework.util.file.FileUtil;
import com.yihu.ehr.framework.util.log.LogService;
import com.yihu.ehr.framework.util.log.Logger;
import com.yihu.ehr.framework.util.log.LoggerFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
@ -17,6 +18,8 @@ import java.util.*;
 * @created 2015.07.08 14:12
 */
public class HOPClient {
    static private final Logger logger = LoggerFactory.getLogger(HOPClient.class);
    private final String version = "1.0";
    private final String signMethod = "md5";
    private String method;
@ -81,12 +84,12 @@ public class HOPClient {
        try {
            boolean result = FileUtil.writeFile(path, response.body, "UTF-8");
            if (!result) {
                LogService.getLogger(HOPClient.class).error("下载文件失败.");
                logger.error("下载文件失败.");
            }
            return result;
        } catch (IOException e) {
            LogService.getLogger(HOPClient.class).error("下载文件失败.");
            logger.error("下载文件失败.");
        }
        return false;
    }
@ -115,7 +118,7 @@ public class HOPClient {
            return url + genParam();
        } catch (Exception e) {
            LogService.getLogger(HOPClient.class).error(e.getMessage());
            logger.error(e.getMessage());
        }
        return null;
@ -149,7 +152,7 @@ public class HOPClient {
        try {
            return MD5.hash(builder.toString());
        } catch (Exception e) {
            LogService.getLogger(HOPClient.class).error(e.getMessage());
            logger.error(e.getMessage());
        }
        return null;

+ 13 - 10
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/http/HttpsClient.java

@ -1,6 +1,7 @@
package com.yihu.ehr.framework.util.http;
import com.yihu.ehr.framework.util.log.LogService;
import com.yihu.ehr.framework.util.log.Logger;
import com.yihu.ehr.framework.util.log.LoggerFactory;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
@ -24,6 +25,8 @@ import java.util.List;
 * @created 2015.07.02 15:37
 */
public class HttpsClient {
    static private final Logger logger = LoggerFactory.getLogger(HttpsClient.class);
    public HttpsClient() {
    }
@ -43,18 +46,18 @@ public class HttpsClient {
            Response res = new Response(response.getStatusLine().getStatusCode(), EntityUtils.toString(entity));
            return res;
        } catch (IOException ex) {
            LogService.getLogger(HttpsClient.class).error(ex.getMessage());
            logger.error(ex.getMessage());
        } finally {
            try {
                EntityUtils.consume(entity);
            } catch (IOException ex) {
                LogService.getLogger(HttpsClient.class).error(ex.getMessage());
                logger.error(ex.getMessage());
            }
            try {
                httpclient.close();
            } catch (IOException ex) {
                LogService.getLogger(HttpsClient.class).error(ex.getMessage());
                logger.error(ex.getMessage());
            }
        }
@ -81,18 +84,18 @@ public class HttpsClient {
            return res;
        } catch (IOException ex) {
            LogService.getLogger(HttpsClient.class).error(ex.getMessage());
            logger.error(ex.getMessage());
        } finally {
            try {
                EntityUtils.consume(entity);
            } catch (IOException ex) {
                LogService.getLogger(HttpsClient.class).error(ex.getMessage());
                logger.error(ex.getMessage());
            }
            try {
                httpclient.close();
            } catch (IOException ex) {
                LogService.getLogger(HttpsClient.class).error(ex.getMessage());
                logger.error(ex.getMessage());
            }
        }
@ -121,18 +124,18 @@ public class HttpsClient {
            return res;
        } catch (IOException ex) {
            LogService.getLogger(HttpsClient.class).error(ex.getMessage());
            logger.error(ex.getMessage());
        } finally {
            try {
                EntityUtils.consume(entity);
            } catch (IOException ex) {
                LogService.getLogger(HttpsClient.class).error(ex.getMessage());
                logger.error(ex.getMessage());
            }
            try {
                httpclient.close();
            } catch (IOException ex) {
                LogService.getLogger(HttpsClient.class).error(ex.getMessage());
                logger.error(ex.getMessage());
            }
        }

+ 4 - 2
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/http/HttpsInitialise.java

@ -1,6 +1,7 @@
package com.yihu.ehr.framework.util.http;
import com.yihu.ehr.framework.util.log.LogService;
import com.yihu.ehr.framework.util.log.Logger;
import com.yihu.ehr.framework.util.log.LoggerFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
@ -16,6 +17,7 @@ import java.io.File;
 * @created 2015.07.07 9:21
 */
public class HttpsInitialise {
    static private final Logger logger = LoggerFactory.getLogger(HttpsInitialise.class);
    private static volatile HttpsInitialise instance = null;
    private SSLContext sslcontext;
@ -34,7 +36,7 @@ public class HttpsInitialise {
                    try {
                        instance = new HttpsInitialise();
                    } catch (Exception ex) {
                        LogService.getLogger(HttpsClient.class).error(ex.getMessage());
                        logger.error(ex.getMessage());
                    }
                }
            }

+ 0 - 59
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/log/LogService.java

@ -1,59 +0,0 @@
package com.yihu.ehr.framework.util.log;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Configurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.io.FileInputStream;
/**
 * 日志服务类。目前使用的是 log4j2,即2.X版本的log4j,不能与其他版本混淆,因为它们的配置文件加载方式不一致.
 *
 * @apiNote 由于涉及到Spring框架的初始化, 它会先于log4j的初始化. 如果在log4j配置未初始化之前在Spring Bean内先生成
 * log4j对象, 可能会造成错误. 例如: Spring MVC 的Controller部分可能会缓存一个Logger对象,但此时log4j是未配置的, 所以会出现异常.
 * 正确的作法是Spring的Bean内不要缓存这个Logger对象,并在lo4j初始化后在运行时去获取Logger对象.
 *
 * @author Air
 * @author Sand
 * @version 1.0
 * @created 2015.06.18 16:59
 */
@Service("logService")
public class LogService {
    static{
        try {
            String configPath = LogService.class.getResource("/").getPath() + "log4j2.xml";
            ConfigurationSource source;
            source = new ConfigurationSource(new FileInputStream(configPath));
            Configurator.initialize(null, source);
        } catch (Exception ex) {
            // 此处不能再调用自身作为日志记录服务, 因为此时初始化失败了
            LogManager.getLogger(LogService.class).error(ex.getMessage());
        }
    }
    public static Logger getLogger(final Class<?> clazz){
        return LoggerFactory.getLogger(clazz);
    }
    public static Logger getLogger(final String name){
        return LoggerFactory.getLogger(name);
    }
    public static Logger getLogger(){
        StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
        if(stackTraceElements == null && stackTraceElements.length > 3){
            return LoggerFactory.getLogger(LogService.class);
        } else{
            return LoggerFactory.getLogger(stackTraceElements[2].getClassName());
        }
    }
}

+ 43 - 43
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/sql/SqlCreator.java

@ -2,7 +2,7 @@ package com.yihu.ehr.framework.util.sql;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.JsonNodeType;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
@ -35,17 +35,17 @@ public class SqlCreator {
    public String insertData() {
        StringBuilder sqlBuffer = new StringBuilder();
        sqlBuffer.append(Constants.INSERT_INTO + tableName + Constants.LEFT_BRACKET);
        sqlBuffer.append(SqlConstants.INSERT_INTO + tableName + SqlConstants.LEFT_BRACKET);
        for (String item : itemList) {
            sqlBuffer.append(item + Constants.COMMA);
            sqlBuffer.append(item + SqlConstants.COMMA);
        }
        sqlBuffer.deleteCharAt(sqlBuffer.length() - 1);
        sqlBuffer.append(Constants.RIGHT_BRACKET + Constants.VALUES + Constants.LEFT_BRACKET);
        sqlBuffer.append(SqlConstants.RIGHT_BRACKET + SqlConstants.VALUES + SqlConstants.LEFT_BRACKET);
        for (String item : itemValueList) {
            sqlBuffer.append(item + Constants.COMMA);
            sqlBuffer.append(item + SqlConstants.COMMA);
        }
        sqlBuffer.deleteCharAt(sqlBuffer.length() - 1);
        sqlBuffer.append(Constants.RIGHT_BRACKET + Constants.SEMICOLON);
        sqlBuffer.append(SqlConstants.RIGHT_BRACKET + SqlConstants.SEMICOLON);
        return sqlBuffer.toString();
    }
@ -58,7 +58,7 @@ public class SqlCreator {
            JsonNode propertyJsonNode = jsonNode.get(property);
            if (propertyJsonNode != null) {
                itemList.add(StringUtil.toString(key));
                itemValueList.add(Constants.COLON + property);
                itemValueList.add(SqlConstants.COLON + property);
                setKeyValueMapByType(property, propertyJsonNode, keyValueMap);
            }
        }
@ -80,14 +80,14 @@ public class SqlCreator {
        StringBuilder sqlBuffer = new StringBuilder();
        setTableName(tabelName);
        sqlBuffer.append(Constants.SELECT);
        sqlBuffer.append(Constants.COUNT);
        sqlBuffer.append(Constants.FROM + tableName);
        sqlBuffer.append(SqlConstants.SELECT);
        sqlBuffer.append(SqlConstants.COUNT);
        sqlBuffer.append(SqlConstants.FROM + tableName);
        if (!CollectionUtil.isEmpty(conditionList)) {
            sqlBuffer.append(Constants.WHERE);
            sqlBuffer.append("1=1" + Constants.AND);
            sqlBuffer.append(SqlConstants.WHERE);
            sqlBuffer.append("1=1" + SqlConstants.AND);
            for (String condition : conditionList) {
                sqlBuffer.append(condition + Constants.AND);
                sqlBuffer.append(condition + SqlConstants.AND);
            }
            sqlBuffer.delete(sqlBuffer.length() - 4, sqlBuffer.length() - 1);
        }
@ -107,17 +107,17 @@ public class SqlCreator {
    public String selectData() {
        StringBuilder sqlBuffer = new StringBuilder();
        sqlBuffer.append(Constants.SELECT);
        sqlBuffer.append(SqlConstants.SELECT);
        for (String item : itemList) {
            sqlBuffer.append(item + Constants.COMMA);
            sqlBuffer.append(item + SqlConstants.COMMA);
        }
        sqlBuffer.deleteCharAt(sqlBuffer.length() - 1);
        sqlBuffer.append(Constants.FROM + tableName);
        sqlBuffer.append(SqlConstants.FROM + tableName);
        if (!CollectionUtil.isEmpty(conditionList)) {
            sqlBuffer.append(Constants.WHERE);
            sqlBuffer.append("1=1" + Constants.AND);
            sqlBuffer.append(SqlConstants.WHERE);
            sqlBuffer.append("1=1" + SqlConstants.AND);
            for (String condition : conditionList) {
                sqlBuffer.append(condition + Constants.AND);
                sqlBuffer.append(condition + SqlConstants.AND);
            }
            sqlBuffer.delete(sqlBuffer.length() - 4, sqlBuffer.length() - 1);
        }
@ -134,18 +134,18 @@ public class SqlCreator {
        setTableName(tabelName);
        StringBuilder sqlBuffer = new StringBuilder();
        sqlBuffer.append(Constants.UPDATE + tableName + Constants.SET);
        sqlBuffer.append(SqlConstants.UPDATE + tableName + SqlConstants.SET);
        Map columnToProperty = transformer.columnToProperty;
        for (Object key : columnToProperty.keySet()) {
            String property = StringUtil.toString(columnToProperty.get(key));
            if (!property.equals(Constants.TABLE_KEY)) {
                sqlBuffer.append(key + Constants.EQUAL_MARK + Constants.COLON + property + Constants.COMMA);
            if (!property.equals(SqlConstants.TABLE_KEY)) {
                sqlBuffer.append(key + SqlConstants.EQUAL_MARK + SqlConstants.COLON + property + SqlConstants.COMMA);
                setKeyValueMapByType(property, jsonNode.get(property), keyValueMap);
            }
        }
        sqlBuffer.deleteCharAt(sqlBuffer.length() - 1);
        Object tableKey = columnToProperty.get(Constants.TABLE_KEY.toUpperCase());
        sqlBuffer.append(Constants.WHERE + Constants.TABLE_KEY + Constants.EQUAL_MARK + Constants.COLON + tableKey);
        Object tableKey = columnToProperty.get(SqlConstants.TABLE_KEY.toUpperCase());
        sqlBuffer.append(SqlConstants.WHERE + SqlConstants.TABLE_KEY + SqlConstants.EQUAL_MARK + SqlConstants.COLON + tableKey);
        String property = StringUtil.toString(tableKey);
        setKeyValueMapByType(property, jsonNode.get(property), keyValueMap);
@ -154,36 +154,36 @@ public class SqlCreator {
    public String betweenCondition(String item, Object value1, Object value2) {
        String condition = item + Constants.BETWEEN + Constants.BEGIN + item + Constants.AND + Constants.END + item;
        keyValueMap.put(Constants.BEGIN + item, value1);
        keyValueMap.put(Constants.END + item, value2);
        String condition = item + SqlConstants.BETWEEN + SqlConstants.BEGIN + item + SqlConstants.AND + SqlConstants.END + item;
        keyValueMap.put(SqlConstants.BEGIN + item, value1);
        keyValueMap.put(SqlConstants.END + item, value2);
        conditionList.add(condition);
        return condition;
    }
    public String greaterAndEqualCondition(String item, Object value) {
        String condition = item + Constants.GREATER_EQUAL_MARK + Constants.COLON + item;
        String condition = item + SqlConstants.GREATER_EQUAL_MARK + SqlConstants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String greaterCondition(String item, Object value) {
        String condition = item + Constants.GREATER_MARK + Constants.COLON + item;
        String condition = item + SqlConstants.GREATER_MARK + SqlConstants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String lessAndEqualCondition(String item, Object value) {
        String condition = item + Constants.LESS_EQUAL_MARK + Constants.COLON + item;
        String condition = item + SqlConstants.LESS_EQUAL_MARK + SqlConstants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String lessCondition(String item, Object value) {
        String condition = item + Constants.LESS_MARK + Constants.COLON + item;
        String condition = item + SqlConstants.LESS_MARK + SqlConstants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
@ -191,7 +191,7 @@ public class SqlCreator {
    public String equalCondition(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String condition = column + Constants.EQUAL_MARK + Constants.COLON + item;
        String condition = column + SqlConstants.EQUAL_MARK + SqlConstants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
@ -199,7 +199,7 @@ public class SqlCreator {
    public String inCondition(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String condition = column + Constants.IN + Constants.LEFT_BRACKET + Constants.COLON + item + Constants.RIGHT_BRACKET;
        String condition = column + SqlConstants.IN + SqlConstants.LEFT_BRACKET + SqlConstants.COLON + item + SqlConstants.RIGHT_BRACKET;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
@ -207,7 +207,7 @@ public class SqlCreator {
    public String equalConditionQue(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String condition = column + Constants.EQUAL_MARK + Constants.QUESTION_MARK;
        String condition = column + SqlConstants.EQUAL_MARK + SqlConstants.QUESTION_MARK;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
@ -217,23 +217,23 @@ public class SqlCreator {
        if (!StringUtil.isEmpty(value)) {
            String column1 = StringUtil.toString(transformer.propertyToColumn.get(item1));
            String column2 = StringUtil.toString(transformer.propertyToColumn.get(item2));
            String condition = Constants.LEFT_BRACKET + column1 + Constants.LIKE + Constants.COLON + item1
                    + Constants.OR + column2 + Constants.LIKE + Constants.COLON + item2 + Constants.RIGHT_BRACKET;
            value = Constants.PERCENT + value + Constants.PERCENT;
            String condition = SqlConstants.LEFT_BRACKET + column1 + SqlConstants.LIKE + SqlConstants.COLON + item1
                    + SqlConstants.OR + column2 + SqlConstants.LIKE + SqlConstants.COLON + item2 + SqlConstants.RIGHT_BRACKET;
            value = SqlConstants.PERCENT + value + SqlConstants.PERCENT;
            keyValueMap.put(item1, value);
            keyValueMap.put(item2, value);
            conditionList.add(condition);
            return condition;
        } else {
            return Constants.EMPTY;
            return SqlConstants.EMPTY;
        }
    }
    public String likeCondition(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String condition = column + Constants.LIKE + Constants.COLON + item;
        value = Constants.PERCENT + value + Constants.PERCENT;
        String condition = column + SqlConstants.LIKE + SqlConstants.COLON + item;
        value = SqlConstants.PERCENT + value + SqlConstants.PERCENT;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
@ -241,7 +241,7 @@ public class SqlCreator {
    public String neCondition(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String condition = column + Constants.NE_MARK + Constants.COLON + item;
        String condition = column + SqlConstants.NE_MARK + SqlConstants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
@ -251,9 +251,9 @@ public class SqlCreator {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String order;
        if (CollectionUtil.isEmpty(orderList)) {
            order = Constants.ORDER_BY + column + Constants.BLANK + value + Constants.COMMA;
            order = SqlConstants.ORDER_BY + column + SqlConstants.BLANK + value + SqlConstants.COMMA;
        } else {
            order = column + Constants.BLANK + value + Constants.COMMA;
            order = column + SqlConstants.BLANK + value + SqlConstants.COMMA;
        }
        orderList.add(order);
        return order;

+ 10 - 9
Hos-resource/src/main/java/com/yihu/ehr/common/ApplicationStart.java

@ -1,7 +1,8 @@
package com.yihu.ehr.common;
import com.yihu.ehr.framework.constrant.DateConvert;
import com.yihu.ehr.framework.util.log.LogService;
import com.yihu.ehr.framework.util.log.Logger;
import com.yihu.ehr.framework.util.log.LoggerFactory;
import org.apache.commons.beanutils.ConvertUtils;
import javax.servlet.ServletContextEvent;
@ -13,8 +14,7 @@ import java.util.Date;
 * add by hzp at 2016-01-25
 */
public class ApplicationStart implements ServletContextListener {
    static private final Logger logger = LoggerFactory.getLogger(ApplicationStart.class);
    private static int rebootCount = 0;
    @Override
@ -32,24 +32,25 @@ public class ApplicationStart implements ServletContextListener {
    /**
     * 初始化任务
     *
     * @return
     */
    public void initQuartz(){
    public void initQuartz() {
        try {
            //QuartzManager.startJobs();
        } catch(Exception e){
            LogService.getLogger().error(" Quartz job initing Exception " + e.getMessage());
        } catch (Exception e) {
            logger.error(" Quartz job initing Exception " + e.getMessage());
        }
    }
    /**
     * 终止任务
     */
    public void destroyedQuartz(){
    public void destroyedQuartz() {
        try {
            //QuartzManager.shutdownJobs();
        } catch(Exception e){
            LogService.getLogger().error(" Quartz job destroying Exception " + e.getMessage());
        } catch (Exception e) {
            logger.error(" Quartz job destroying Exception " + e.getMessage());
        }
    }

+ 2 - 2
Hos-resource/src/main/java/com/yihu/ehr/crawler/format/DataSetTransformer.java

@ -10,7 +10,7 @@ import com.yihu.ehr.crawler.model.patient.Patient;
import com.yihu.ehr.crawler.model.transform.DictDataType;
import com.yihu.ehr.crawler.model.transform.TransformType;
import com.yihu.ehr.dbhelper.jdbc.DBHelper;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.util.operator.StringUtil;
import java.util.Iterator;
@ -142,7 +142,7 @@ public class DataSetTransformer implements IDataTransformer{
            ehrData = adapterDict.getAdapterCodeToCodeMap().get(esbData);
        }
        if (StringUtil.isEmpty(ehrData)) {
            return Constants.EMPTY;
            return SqlConstants.EMPTY;
        }
        return ehrData;
    }

+ 2 - 2
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/CrawlerService.java

@ -10,7 +10,7 @@ import com.yihu.ehr.crawler.model.flow.CrawlerFlowHeadModel;
import com.yihu.ehr.crawler.model.flow.CrawlerFlowModel;
import com.yihu.ehr.crawler.model.flow.resultModel.*;
import com.yihu.ehr.datacollect.model.DtoJobDataset;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.model.ActionResult;
import com.yihu.ehr.framework.model.DetailModelResult;
import com.yihu.ehr.framework.util.operator.StringUtil;
@ -278,7 +278,7 @@ public class CrawlerService {
            e.printStackTrace();
            return "删除失败";
        }
        return Constants.EMPTY;
        return SqlConstants.EMPTY;
    }
    /**

+ 11 - 11
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/DataCollectDispatcher.java

@ -12,7 +12,7 @@ import com.yihu.ehr.crawler.model.patient.Patient;
import com.yihu.ehr.crawler.model.patient.PatientIdentity;
import com.yihu.ehr.crawler.model.transform.EhrCondition;
import com.yihu.ehr.crawler.model.transform.LogicValues;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.util.file.FileUtil;
import com.yihu.ehr.framework.util.operator.DateUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
@ -117,10 +117,10 @@ public class DataCollectDispatcher {
                    while (array.hasNext()) {
                        JsonNode node = array.next();
                        Patient patient = new Patient();
                        String patientId = node.path(propertyMap.get(Constants.PATIENT_ID)).asText();
                        String eventNo = node.path(propertyMap.get(Constants.EVENT_NO)).asText();
                        String refTime = node.path(propertyMap.get(Constants.EVENT_TIME)).asText();
                        String orgCode = node.path(Constants.ORG_CODE.toUpperCase()).asText();
                        String patientId = node.path(propertyMap.get(SqlConstants.PATIENT_ID)).asText();
                        String eventNo = node.path(propertyMap.get(SqlConstants.EVENT_NO)).asText();
                        String refTime = node.path(propertyMap.get(SqlConstants.EVENT_TIME)).asText();
                        String orgCode = node.path(SqlConstants.ORG_CODE.toUpperCase()).asText();
                        patient.setPatientId(patientId);
                        patient.setEventNo(eventNo);
                        patient.setReferenceTime(refTime);
@ -142,7 +142,7 @@ public class DataCollectDispatcher {
        if (adapterDataSet.isHavePatientID()) {
            AdapterMetaData adapterMetaData = adapterDataSet.getAdapterMetaDataMap().get(PatientIdentity.getPatientIDCode());
            propertyMap.put(Constants.PATIENT_ID, adapterMetaData.getAdapterMetadataModel().getStdMetadataCode().toUpperCase());
            propertyMap.put(SqlConstants.PATIENT_ID, adapterMetaData.getAdapterMetadataModel().getStdMetadataCode().toUpperCase());
        } else {
            logger.error("", new Exception("采集病人列表数据集必须有patient_id."));
@ -151,7 +151,7 @@ public class DataCollectDispatcher {
        if (adapterDataSet.isHaveEventNo()) {
            AdapterMetaData adapterMetaData = adapterDataSet.getAdapterMetaDataMap().get(patientIdentity.getEventNoCode());
            propertyMap.put(Constants.EVENT_NO,  adapterMetaData.getAdapterMetadataModel().getStdMetadataCode().toUpperCase());
            propertyMap.put(SqlConstants.EVENT_NO,  adapterMetaData.getAdapterMetadataModel().getStdMetadataCode().toUpperCase());
        } else {
            logger.error("采集病人列表数据集必须有event_no.");
            return null;
@ -163,7 +163,7 @@ public class DataCollectDispatcher {
            return null;
        }
        propertyMap.put(Constants.EVENT_TIME, adapterRefMetaData.getAdapterMetadataModel().getStdMetadataCode().toUpperCase());
        propertyMap.put(SqlConstants.EVENT_TIME, adapterRefMetaData.getAdapterMetadataModel().getStdMetadataCode().toUpperCase());
        return propertyMap;
    }
@ -202,10 +202,10 @@ public class DataCollectDispatcher {
                }
                return jsonObject.toString();
            } else {
                return Constants.EMPTY;
                return SqlConstants.EMPTY;
            }
        } catch (Exception e) {
            return Constants.EMPTY;
            return SqlConstants.EMPTY;
        }
    }
@ -370,7 +370,7 @@ public class DataCollectDispatcher {
        try {
            Map<String, Object> map = mapper.readValue(responToken, Map.class);
            String code = (String) map.get("code");
            if (Constants.OK.equals(code)) {
            if (SqlConstants.OK.equals(code)) {
                tokenMap = (Map<String, Object>) map.get("result");
            }
        } catch (IOException e) {

+ 6 - 6
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/EsbHttp.java

@ -7,7 +7,7 @@ import com.yihu.ehr.crawler.model.adapter.AdapterDataSet;
import com.yihu.ehr.crawler.model.config.SysConfig;
import com.yihu.ehr.crawler.model.patient.Patient;
import com.yihu.ehr.crawler.model.transform.EhrCondition;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.util.encrypt.MD5;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.framework.util.httpclient.HttpHelper;
@ -156,25 +156,25 @@ public class EsbHttp {
            HttpResponse response = HttpClientUtil.postForm(HttpHelper.httpGateway, formParams);
            if (response == null || response.getStatusCode() != 200) {
                logger.info("获取病人数据错误,请求HTTP错误,请检查配置或HTTP是否可用.");
                return Constants.EMPTY;
                return SqlConstants.EMPTY;
            }
            ObjectMapper mapper = new ObjectMapper();
            JsonNode responseNode = mapper.readValue(response.getBody(), JsonNode.class);
            String code = responseNode.path("responseCode").asText();
            if (StringUtil.isEmpty(code) || !code.equals("10000")) {
                logger.info("获取病人数据错误,请求HTTP错误,请检查集成平台网关是否可用.");
                return Constants.EMPTY;
                return SqlConstants.EMPTY;
            }
            String rootStr = responseNode.path("responseResult").asText();
            if (Constants.EMPTY.equals(rootStr)) {
            if (SqlConstants.EMPTY.equals(rootStr)) {
                logger.info("获取病人数据错误,集成平台获取病人数据失败.");
                return Constants.EMPTY;
                return SqlConstants.EMPTY;
            }
            return rootStr;
        } catch (Exception e) {
            logger.error("获取病人数据失败.", e);
            return Constants.EMPTY;
            return SqlConstants.EMPTY;
        }
    }
        /**

+ 324 - 435
Hos-resource/src/main/java/com/yihu/ehr/datacollect/service/DatacollectService.java

@ -1,9 +1,7 @@
package com.yihu.ehr.datacollect.service;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.client.MongoCollection;
import com.yihu.ehr.common.Services;
import com.yihu.ehr.crawler.model.config.SysConfig;
import com.yihu.ehr.crawler.model.patient.PatientIdentity;
@ -16,35 +14,24 @@ import com.yihu.ehr.dbhelper.common.QueryCondition;
import com.yihu.ehr.dbhelper.common.enums.DBType;
import com.yihu.ehr.dbhelper.common.sqlparser.*;
import com.yihu.ehr.dbhelper.jdbc.DBHelper;
import com.yihu.ehr.dbhelper.mongodb.MongodbFactory;
import com.yihu.ehr.dbhelper.mongodb.MongodbHelper;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.DateConvert;
import com.yihu.ehr.framework.model.ActionResult;
import com.yihu.ehr.framework.util.httpclient.HttpHelper;
import com.yihu.ehr.framework.util.httpclient.HttpResponse;
import com.yihu.ehr.framework.util.log.LogService;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.log.Logger;
import com.yihu.ehr.framework.util.log.LoggerFactory;
import com.yihu.ehr.framework.util.webservice.WebserviceUtil;
import com.yihu.ehr.resource.service.IStdService;
import org.apache.axis.client.Call;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.json.JSONObject;
import org.json.JSONArray;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.xml.sax.InputSource;
import javax.annotation.Resource;
import javax.xml.namespace.QName;
import java.io.ByteArrayInputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@ -54,49 +41,185 @@ import java.util.*;
 */
@Service(Services.DatacollectService)
public class DatacollectService implements IDatacollectService {
    static private final Logger logger = LoggerFactory.getLogger(DatacollectService.class);
    MongodbHelper mongoOrigin = new MongodbHelper("origin");
    MongodbHelper mongo = new MongodbHelper();
    String dateFormat = "yyyy-MM-dd HH:mm:ss"; //默认时间字符串格式
    int maxNum = 1000; //查询条数限制
    @Resource(name = Services.Datacollect)
    private IDatacollectManager datacollect;
    @Resource(name = Services.StdService)
    private IStdService stdService;
    @Resource(name = "DatacollectDao")
    private IDatacollectDao datacollectDao;
    @Resource(name = "DatacollectLogDao")
    private IDatacollectLogDao datacollectLogDao;
    MongodbHelper mongoOrigin = new MongodbHelper("origin");
    MongodbHelper mongo = new MongodbHelper();
    String dateFormat = "yyyy-MM-dd HH:mm:ss"; //默认时间字符串格式
    int maxNum = 1000; //查询条数限制
    /**
     * 根据连接字符串获取数据库类型
     */
    private static DBType getDbType(String uri) {
        return uri.startsWith("jdbc:mysql")?DBType.Mysql:(uri.startsWith("jdbc:oracle")?DBType.Oracle:(uri.startsWith("jdbc:hive2")?DBType.Hive:(uri.startsWith("jdbc:microsoft:sqlserver")?DBType.Sqlserver:DBType.Mysql)));
        return uri.startsWith("jdbc:mysql") ? DBType.Mysql : (uri.startsWith("jdbc:oracle") ? DBType.Oracle : (uri.startsWith("jdbc:hive2") ? DBType.Hive : (uri.startsWith("jdbc:microsoft:sqlserver") ? DBType.Sqlserver : DBType.Mysql)));
    }
    public static void main(String[] args) throws Exception {
        //namespace是命名空间,methodName是方法名
        String sql = "select count(1) as COUNT,max(to_number(HDSD03_01_031)) as MAX_KEYVALUE from HDSC01_02 where 1=1 order by to_number(HDSD03_01_031)";
        //调用web Service//输出调用结果
        System.out.println(WebserviceUtil.request("http://172.19.103.71:8080/service/sql?wsdl", "ExcuteSQL", new Object[]{"", sql}));
    }
    /**
     * 执行任务
     */
    @Override
    public void executeJob(String jobId) throws Exception {
        //获取任务详细信息
        RsJobConfig job = datacollect.getJobById(jobId);
        RsJobLog log = new RsJobLog();
        log.setJobId(jobId);
        log.setJobStartTime(new Date());
        datacollectLogDao.saveEntity(log);
        String logId = log.getId();
        logger.info("任务" + jobId + "开始采集,新增日志" + logId + "。");
        StringBuilder logStr = new StringBuilder();
        int count = 0;
        int success = 0;
        try {
            String schemeVersion = job.getSchemeVersion();
            //获取任务相关数据集
            List<DtoJobDataset> list = datacollectDao.getDatacollectDataset(jobId);
            logger.info("获取任务相关数据集,数量" + list.size() + "。");
            if (list != null && list.size() > 0) {
                count = list.size();
                logStr.append("/*********** 开始采集 *******************/\n");
                //遍历数据集
                for (DtoJobDataset ds : list) {
                    try {
                        String type = ds.getType();
                        String message = "";
                        logStr.append(DateConvert.toString(new Date(), dateFormat) + " " + ds.getJobDatasetName());
                        if (type != null) {
                            if (type.equals("1")) //Web Service
                            {
                                message = collectWebservice(ds, schemeVersion, logId) + "\n";
                            } else if (type.equals("2"))//文件系统
                            {
                                message = "文件系统采集。\n";
                            } else { //数据库
                                message = collectTable(ds, schemeVersion, logId) + "\n";
                            }
                        } else {
                            message = ds.getJobDatasetName() + "未关联数据源!\n";
                        }
                        logger.info(message); //文本日志
                        logStr.append(message);
                        success++;
                    } catch (Exception ex) {
                        logger.info("异常:" + ex.getMessage());
                        logStr.append(ex.getMessage() + "\n");
                    }
                }
                logStr.append("/*********** 结束采集 *******************/\n");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            logger.info("异常:" + ex.getMessage());
            logStr.append(ex.getMessage() + "\n");
            logStr.append("/*********** 出现异常,中断采集 *******************/\n");
        }
        //任务主日志成功
        String jobContent = logStr.toString().replace("\"", "\\\"");
        if (jobContent.length() > 4000) {
            jobContent = jobContent.substring(0, 4000);
        }
        log.setJobContent(jobContent);
        log.setJobEndTime(new Date());
        log.setJobDatasetCount(count);
        log.setJobDatasetSuccess(success);
        logger.info("任务结束," + count + "个数据集成功采集" + success + "个。");
        datacollectLogDao.updateEntity(log);
    }
    /**
     * 根据日志详细补采数据
     */
    @Override
    @Transactional
    public ActionResult repeatJob(String id) throws Exception {
        RsJobLogDetail log = datacollectLogDao.getEntity(RsJobLogDetail.class, id);
        if (log.getJobStatus().equals("2")) {
            return new ActionResult(false, "数据补采中!");
        }
        if (!log.getJobStatus().equals("0")) {
            return new ActionResult(false, "数据无需补采!");
        }
        try {
            log.setRepeatStartTime(new Date());
            log.setJobStatus("2"); //设置采集中状态
            datacollectLogDao.updateEntity(log);
        } catch (Exception e) {
            return new ActionResult(false, "补采失败!");
        }
        log.setJobStatus("0");
        datacollectLogDao.updateEntity(log);
        String stdDatasetCode = log.getStdDatasetCode();
        String sql = log.getJobSql();
        //数据库连接
        String datasourceId = log.getDatasourceId();
        String config = log.getConfig();
        DBHelper db = new DBHelper(datasourceId, config);
        //获取数据集字段映射结构
        String schemeVersion = log.getSchemeVersion();
        String datasetId = log.getJobDatasetId();
        List colString = stdService.getDatacolByScheme(schemeVersion, datasetId);
        JSONArray colList = new JSONArray(colString);
        List<JSONObject> list = db.query(sql);
        String message = intoMongodb(list, schemeVersion, stdDatasetCode, colList);
        if (message.length() > 0 || db.errorMessage.length() > 0) {
            log.setJobStatus("0");
            log.setRepeatEndTime(new Date());
            if (message.length() > 0) {
                log.setRepeatJobContent(message);
            } else {
                db.errorMessage.length();
            }
            datacollectLogDao.updateEntity(log);
            return new ActionResult(false, "补采失败!");
        } else {
            log.setJobStatus("3");
            log.setRepeatEndTime(new Date());
            log.setRepeatJobContent("补采成功!");
            datacollectLogDao.updateEntity(log);
            return new ActionResult(true, "补采成功!");
        }
    }
    /**
     * 根据数据库类型获取时间sql
     *
     * @return
     */
    private String getDateSqlByDBType(DBType dbType,Date date) throws Exception
    {
    private String getDateSqlByDBType(DBType dbType, Date date) throws Exception {
        String val = DateConvert.toString(date, dateFormat);
        if(dbType.equals(DBType.Mysql))
        {
        if (dbType.equals(DBType.Mysql)) {
            return "date_format(\'" + val + "\',\'" + dateFormat + "\')";
        }
        else if(dbType.equals(DBType.Oracle))
        {
        } else if (dbType.equals(DBType.Oracle)) {
            return "to_date(\'" + val + "\',\'" + dateFormat + "\')";
        }
        else
        {
        } else {
            return val;
        }
    }
@ -104,38 +227,27 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 根据数据库类型获取转换数值型sql
     */
    private String getToNumberSqlByDBType(DBType dbType,String key)  throws Exception
    {
        if(dbType.equals(DBType.Mysql))
        {
            return "cast("+key+" as signed integer)";
        }
        else if(dbType.equals(DBType.Oracle))
        {
    private String getToNumberSqlByDBType(DBType dbType, String key) throws Exception {
        if (dbType.equals(DBType.Mysql)) {
            return "cast(" + key + " as signed integer)";
        } else if (dbType.equals(DBType.Oracle)) {
            return "to_number(" + key + ")";
        }
        else
        {
        } else {
            return key;
        }
    }
    /**
     * 根据数据库类型获取分页sql
     *
     * @return
     */
    private String getPageSqlByDBType(DBType dbType,String sql,int start,int rows) throws Exception
    {
        if(dbType.equals(DBType.Mysql))
        {
    private String getPageSqlByDBType(DBType dbType, String sql, int start, int rows) throws Exception {
        if (dbType.equals(DBType.Mysql)) {
            return sql + " LIMIT " + start + "," + rows;
        }
        else if(dbType.equals(DBType.Oracle))
        {
            return " select * from (select t.*,ROWNUM RSCOM_RN from (" + sql + ") t where ROWNUM<" + (start+rows+1) + ") where RSCOM_RN>= " + (start+1);
        }
        else
        {
        } else if (dbType.equals(DBType.Oracle)) {
            return " select * from (select t.*,ROWNUM RSCOM_RN from (" + sql + ") t where ROWNUM<" + (start + rows + 1) + ") where RSCOM_RN>= " + (start + 1);
        } else {
            return sql;
        }
    }
@ -143,17 +255,14 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 字典全转换成中文
     */
    private List<JSONObject> translateDictCN(List<JSONObject> list,JSONArray colList,String schemeVersion) throws Exception
    {
    private List<JSONObject> translateDictCN(List<JSONObject> list, JSONArray colList, String schemeVersion) throws Exception {
        //获取字典列表
        List<DtoDictCol> dictColList = new ArrayList<>();
        for(int i=0; i< colList.length();i++)
        {
        for (int i = 0; i < colList.length(); i++) {
            JSONObject col = colList.getJSONObject(i);
            String dictId = col.optString("adapterDictId");
            if(dictId!=null && dictId.length()>0)
            {
            if (dictId != null && dictId.length() > 0) {
                String dictType = col.optString("adapterDataType");
                String stdMetadataCode = col.optString("stdMetadataCode");
                DtoDictCol dictCol = new DtoDictCol();
@ -161,7 +270,7 @@ public class DatacollectService implements IDatacollectService {
                dictCol.setStdDictId(dictId);
                dictCol.setAdapterDataType(dictType.length() > 0 ? dictType : "1");//默认通过code转换字典
                //获取字典数据
                List dictString = stdService.getDictByScheme(schemeVersion,dictId);
                List dictString = stdService.getDictByScheme(schemeVersion, dictId);
                JSONArray dictAdapterArray = new JSONArray(dictString);
                dictCol.setDictList(dictAdapterArray);
@ -170,17 +279,15 @@ public class DatacollectService implements IDatacollectService {
        }
        //翻译列表
        for(JSONObject data :list)
        {
        for (JSONObject data : list) {
            //遍历字典字段
            for (DtoDictCol col : dictColList) {
                String colNmae = col.getStdMetadataCode();
                String oldValue = data.optString(colNmae);
                String newValue = translateDictValueCN(oldValue,col.getAdapterDataType(),col.getDictList());
                String newValue = translateDictValueCN(oldValue, col.getAdapterDataType(), col.getDictList());
                if(newValue!=null && newValue.length()>0)
                {
                    data.put(colNmae,newValue);
                if (newValue != null && newValue.length() > 0) {
                    data.put(colNmae, newValue);
                }
            }
        }
@ -190,21 +297,20 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 转译字典成中文
     *
     * @return
     */
    private String translateDictValueCN(String oldValue,String type,JSONArray dictAdapterList) throws Exception
    {
        if(type.equals("0")) //原本就是值
    private String translateDictValueCN(String oldValue, String type, JSONArray dictAdapterList) throws Exception {
        if (type.equals("0")) //原本就是值
        {
            return oldValue;
        }
        //遍历字典数据(编码->名称)
        for(int i=0; i< dictAdapterList.length();i++)
        {
        for (int i = 0; i < dictAdapterList.length(); i++) {
            JSONObject dictItem = dictAdapterList.getJSONObject(i);
            if(oldValue!=null && dictItem.has("stdEntryCode")) {
            if (oldValue != null && dictItem.has("stdEntryCode")) {
                if (oldValue.equals(dictItem.getString("stdEntryCode"))) {
                    String newValue = dictItem.getString("stdEntryValue"); //名称
                    return newValue;
@ -217,30 +323,28 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 字典转换
     *
     * @param list
     * @param colList
     * @return
     * @throws Exception
     */
    private List<JSONObject> translateDict(List<JSONObject> list,JSONArray colList,String schemeVersion) throws Exception
    {
    private List<JSONObject> translateDict(List<JSONObject> list, JSONArray colList, String schemeVersion) throws Exception {
        //获取字典列表
        List<DtoDictCol> dictColList = new ArrayList<>();
        for(int i=0; i< colList.length();i++)
        {
        for (int i = 0; i < colList.length(); i++) {
            JSONObject col = colList.getJSONObject(i);
            String dictId = col.optString("adapterDictId");
            if(dictId!=null && dictId.length()>0)
            {
            if (dictId != null && dictId.length() > 0) {
                String dictType = col.optString("adapterDataType");
                String stdMetadataCode = col.optString("stdMetadataCode");
                DtoDictCol dictCol = new DtoDictCol();
                dictCol.setStdMetadataCode(stdMetadataCode);
                dictCol.setStdDictId(dictId);
                dictCol.setAdapterDataType(dictType.length()>0?dictType:"1");//默认通过code转换字典
                dictCol.setAdapterDataType(dictType.length() > 0 ? dictType : "1");//默认通过code转换字典
                //获取字典数据
                List dictString = stdService.getDictByScheme(schemeVersion,dictId);
                List dictString = stdService.getDictByScheme(schemeVersion, dictId);
                JSONArray dictAdapterArray = new JSONArray(dictString);
                dictCol.setDictList(dictAdapterArray);
@ -249,17 +353,15 @@ public class DatacollectService implements IDatacollectService {
        }
        //翻译列表
        for(JSONObject data :list)
        {
        for (JSONObject data : list) {
            //遍历字典字段
            for (DtoDictCol col : dictColList) {
                String colNmae = col.getStdMetadataCode();
                String oldValue = data.optString(colNmae);
                String newValue = translateDictValue(oldValue,col.getAdapterDataType(),col.getDictList());
                String newValue = translateDictValue(oldValue, col.getAdapterDataType(), col.getDictList());
                if(newValue!=null && newValue.length()>0)
                {
                    data.put(colNmae,newValue);
                if (newValue != null && newValue.length() > 0) {
                    data.put(colNmae, newValue);
                }
            }
        }
@ -269,22 +371,21 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 转译字典
     *
     * @return
     */
    private String translateDictValue(String oldValue,String type,JSONArray dictAdapterList) throws Exception
    {
    private String translateDictValue(String oldValue, String type, JSONArray dictAdapterList) throws Exception {
        //应用标准字段
        String colName = "adapterEntryCode";
        if(type.equals("0")) //通过name转译
        if (type.equals("0")) //通过name转译
        {
            colName = "adapterEntryValue";
        }
        //遍历字典数据
        for(int i=0; i< dictAdapterList.length();i++)
        {
        for (int i = 0; i < dictAdapterList.length(); i++) {
            JSONObject dictItem = dictAdapterList.getJSONObject(i);
            if(oldValue!=null && dictItem.has(colName)) {
            if (oldValue != null && dictItem.has(colName)) {
                if (oldValue.equals(dictItem.getString(colName))) {
                    String newValue = dictItem.getString("stdEntryCode");
                    return newValue;
@ -296,30 +397,27 @@ public class DatacollectService implements IDatacollectService {
        return "";
    }
    /**
     * 获取过滤条件
     *
     * @return
     */
    private String getCondition(DBType dbType,String conditionString){
    private String getCondition(DBType dbType, String conditionString) {
        JSONArray array = new JSONArray(conditionString);
        if(array!=null && array.length()>0)
        {
        if (array != null && array.length() > 0) {
            List<QueryCondition> conditions = new ArrayList<>();
            for(Object item : array)
            {
                JSONObject obj = (JSONObject)item;
            for (Object item : array) {
                JSONObject obj = (JSONObject) item;
                String logical = obj.getString("andOr");
                String operation= obj.getString("condition");
                String field= obj.getString("field");
                String operation = obj.getString("condition");
                String field = obj.getString("field");
                String keyword = obj.getString("value");
                conditions.add(new QueryCondition(logical, operation, field, keyword));
            }
            //条件语句转换
            ParserSql ps;
            switch (dbType)
            {
            switch (dbType) {
                case Oracle:
                    ps = new ParserOracle();
                    break;
@ -336,19 +434,19 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 获取条件SQL
     *
     * @param dbType
     * @param conditionString
     * @return
     * @throws ParseException
     */
    private String getConditionSql(DBType dbType,String conditionString) throws ParseException {
    private String getConditionSql(DBType dbType, String conditionString) throws ParseException {
        String conditionSql = "";
        JSONArray conditions = new JSONArray(conditionString);
        Iterator iterator = conditions.iterator();
        while (iterator.hasNext())
        {
            JSONObject condition = (JSONObject)iterator.next();
        while (iterator.hasNext()) {
            JSONObject condition = (JSONObject) iterator.next();
            String logic = condition.getString("condition");
            String andOr = condition.getString("andOr");
            String field = condition.getString("field");
@ -356,38 +454,26 @@ public class DatacollectService implements IDatacollectService {
            String fieldType = condition.getString("type");
            String keys = "";
            if(andOr.equals(" AND "))
            {
            if (andOr.equals(" AND ")) {
                conditionSql = conditionSql + " and ";
            }
            else
            {
            } else {
                conditionSql = conditionSql + " or ";
            }
            if(logic.equals(" IN ") || logic.equals(" NOT IN "))
            {
            if (logic.equals(" IN ") || logic.equals(" NOT IN ")) {
                String[] keywords = value.split(",");
                for(String key : keywords)
                {
                for (String key : keywords) {
                    keys += "'" + key + "',";
                }
                keys = " (" + keys.substring(0,keys.length() - 1) + ") ";
            }
            else if(logic.equals(" LIKE "))
            {
                keys = " (" + keys.substring(0, keys.length() - 1) + ") ";
            } else if (logic.equals(" LIKE ")) {
                keys += " '%" + value + "%' ";
            }
            else
            {
                if(fieldType.equals("DATE"))
                {
                    keys  += getDateFormatSql(dbType,value);
                }
                else
                {
            } else {
                if (fieldType.equals("DATE")) {
                    keys += getDateFormatSql(dbType, value);
                } else {
                    keys += " '" + value + "' ";
                }
            }
@ -400,19 +486,19 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 获取对应数据库时间格式
     *
     * @param dbType
     * @param key
     * @return
     * @throws ParseException
     */
    private String getDateFormatSql(DBType dbType,String key) throws ParseException {
    private String getDateFormatSql(DBType dbType, String key) throws ParseException {
        String dateFormat = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
        Date d = formatDate.parse(key);
        SimpleDateFormat format = new SimpleDateFormat(dateFormat);
        switch (dbType)
        {
        switch (dbType) {
            case Oracle:
                key = "to_date(\'" + format.format(d) + "\',\'YYYY-MM-DD HH24:MI:SS\')";
                break;
@ -428,46 +514,40 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 采集入库
     *
     * @return
     */
    private String intoMongodb(List<JSONObject> list,String schemeVersion,String stdDatasetCode,JSONArray colList)
    {
        String patientIdCode = Constants.PATIENT_ID.toUpperCase();
        String eventNoCode = Constants.EVENT_NO.toUpperCase();
    private String intoMongodb(List<JSONObject> list, String schemeVersion, String stdDatasetCode, JSONArray colList) {
        String patientIdCode = SqlConstants.PATIENT_ID.toUpperCase();
        String eventNoCode = SqlConstants.EVENT_NO.toUpperCase();
        PatientIdentity patientIdentity = SysConfig.getInstance().getPatientIdentity(stdDatasetCode);
        if (patientIdentity != null) {
            patientIdCode = patientIdentity.getPatientIDCode();
            eventNoCode = patientIdentity.getEventNoCode();
        }
        try{
            if(!mongo.createIndex(stdDatasetCode, "patientIndex", patientIdCode, eventNoCode)) {
                return "Mongodb索引创建失败!(表:"+stdDatasetCode+")";
        try {
            if (!mongo.createIndex(stdDatasetCode, "patientIndex", patientIdCode, eventNoCode)) {
                return "Mongodb索引创建失败!(表:" + stdDatasetCode + ")";
            }
            if(list!=null && list.size()>0)
            {
            if (list != null && list.size() > 0) {
                //字典未转换前采集到原始库
                boolean b = mongoOrigin.insert(stdDatasetCode,translateDictCN(list, colList,schemeVersion));
                boolean b = mongoOrigin.insert(stdDatasetCode, translateDictCN(list, colList, schemeVersion));
                //字典转换
                list = translateDict(list, colList,schemeVersion);
                list = translateDict(list, colList, schemeVersion);
                //采集到mongodb
                b = mongo.insert(stdDatasetCode,list);
                if(!b)
                {
                    if(mongo.errorMessage!=null && mongo.errorMessage.length()>0)
                    {
                b = mongo.insert(stdDatasetCode, list);
                if (!b) {
                    if (mongo.errorMessage != null && mongo.errorMessage.length() > 0) {
                        System.out.print(mongo.errorMessage);
                        return mongo.errorMessage;
                    }
                    else {
                        return "Mongodb保存失败!(表:"+stdDatasetCode+")";
                    } else {
                        return "Mongodb保存失败!(表:" + stdDatasetCode + ")";
                    }
                }
            }
        }
        catch (Exception e)
        {
        } catch (Exception e) {
            return e.getMessage();
        }
@ -476,83 +556,75 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 数据库表采集
     *
     * @return
     */
    private String collectTable(DtoJobDataset ds,String schemeVersion,String logId) throws Exception
    {
    private String collectTable(DtoJobDataset ds, String schemeVersion, String logId) throws Exception {
        String message = "";
        String datasetId = ds.getJobDatasetId();
        String jobDatasetName = ds.getJobDatasetName();
        String condition=ds.getJobDatasetCondition();
        String key=ds.getJobDatasetKey();
        String keytype=ds.getJobDatasetKeytype();
        String keyvalue=ds.getJobDatasetKeyvalue();
        String condition = ds.getJobDatasetCondition();
        String key = ds.getJobDatasetKey();
        String keytype = ds.getJobDatasetKeytype();
        String keyvalue = ds.getJobDatasetKeyvalue();
        String orgCode = ds.getOrgCode();
        String datasourceId = ds.getDatasourceId();
        String config = ds.getConfig(); //数据库连接
        DBHelper db = new DBHelper(datasourceId,config);
        DBHelper db = new DBHelper(datasourceId, config);
        DBType dbType = db.dbType;
        //获取数据集映射
        List datasetString = stdService.getDatasetByScheme(schemeVersion, datasetId);
        JSONArray datasetList = new JSONArray(datasetString);
        if(datasetList!=null &&datasetList.length()>0)
        {
        if (datasetList != null && datasetList.length() > 0) {
            String stdTableName = datasetList.getJSONObject(0).optString("stdDatasetCode");
            String adapterTableName = datasetList.getJSONObject(0).optString("adapterDatasetCode");
            //获取数据集字段映射结构
            List colString = stdService.getDatacolByScheme(schemeVersion,datasetId);
            List colString = stdService.getDatacolByScheme(schemeVersion, datasetId);
            JSONArray colList = new JSONArray(colString);
            if(colList!=null && colList.length()>0)
            {
            if (colList != null && colList.length() > 0) {
                //拼接查询sql
                String strSql = "Select '" + orgCode +"' as RSCOM_ORG_CODE";
                for(int i=0; i< colList.length();i++)
                {
                String strSql = "Select '" + orgCode + "' as RSCOM_ORG_CODE";
                for (int i = 0; i < colList.length(); i++) {
                    JSONObject col = colList.getJSONObject(i);
                    String adapterMetadataCode = col.optString("adapterMetadataCode");
                    if(adapterMetadataCode.length()>0)
                    {
                        strSql+= ","+adapterMetadataCode +" as " + col.optString("stdMetadataCode") ;
                    if (adapterMetadataCode.length() > 0) {
                        strSql += "," + adapterMetadataCode + " as " + col.optString("stdMetadataCode");
                    }
                }
                strSql += " from " +adapterTableName;
                strSql += " from " + adapterTableName;
                String strWhere = " where 1=1";
                //采集范围
                if(condition!=null && condition.length()>0)
                {
                    strWhere += getConditionSql(dbType,condition);
                if (condition != null && condition.length() > 0) {
                    strWhere += getConditionSql(dbType, condition);
                }
                //增量采集
                String maxKey = "0";
                if(key!=null && key.length()>0)
                {
                if (key != null && key.length() > 0) {
                    maxKey = key;
                    if(keytype.toUpperCase().equals("DATE")) //时间类型
                    if (keytype.toUpperCase().equals("DATE")) //时间类型
                    {
                        if(keyvalue!=null && keyvalue.length()>0) {
                        if (keyvalue != null && keyvalue.length() > 0) {
                            Date keyDate = new Date();
                            //字符串转时间
                            keyDate = DateConvert.toDate(keyvalue);
                            //根据数据库类型获取时间sql
                            strWhere += " and "+ maxKey + ">'"+getDateSqlByDBType(dbType,keyDate)+"'";
                            strWhere += " and " + maxKey + ">'" + getDateSqlByDBType(dbType, keyDate) + "'";
                        }
                    }
                    else if(keytype.toUpperCase().equals("VARCHAR")) //字符串类型
                    } else if (keytype.toUpperCase().equals("VARCHAR")) //字符串类型
                    {
                        maxKey = getToNumberSqlByDBType(dbType,key);
                        if(keyvalue!=null && keyvalue.length()>0) {
                            strWhere += " and "+ maxKey + ">'" + keyvalue + "'";
                        maxKey = getToNumberSqlByDBType(dbType, key);
                        if (keyvalue != null && keyvalue.length() > 0) {
                            strWhere += " and " + maxKey + ">'" + keyvalue + "'";
                        }
                    }
                    else{
                        if(keyvalue!=null && keyvalue.length()>0) {
                            strWhere += " and "+ maxKey + ">'" + keyvalue + "'";
                    } else {
                        if (keyvalue != null && keyvalue.length() > 0) {
                            strWhere += " and " + maxKey + ">'" + keyvalue + "'";
                        }
                    }
                    strWhere += " order by " + maxKey;
@ -560,51 +632,43 @@ public class DatacollectService implements IDatacollectService {
                strSql += strWhere;
                //总条数
                String sqlCount = "select count(1) as COUNT from (" + strSql+")";
                String sqlCount = "select count(1) as COUNT from (" + strSql + ")";
                String sqlMax = "select max(" + maxKey + ") as MAX_KEYVALUE from " + adapterTableName + strWhere;
                JSONObject objCount = db.load(sqlCount);
                if(objCount==null)
                {
                    if(db.errorMessage.length()>0)
                    {
                if (objCount == null) {
                    if (db.errorMessage.length() > 0) {
                        throw new Exception(db.errorMessage);
                    } else {
                        throw new Exception("查询异常:" + sqlCount);
                    }
                    else{
                        throw new Exception("查询异常:"+sqlCount);
                    }
                }
                else{
                } else {
                    int count = objCount.getInt("COUNT");
                    if(count==0) //0条记录,无需采集
                    if (count == 0) //0条记录,无需采集
                    {
                        message = "0条记录,无需采集。";
                    }
                    else
                    {
                    } else {
                        //获取最大值
                        JSONObject objMax = db.load(sqlMax);
                        int successCount = 0;
                        String maxKeyvalue = objMax.optString("MAX_KEYVALUE");
                        //修改最大值
                        if(maxKeyvalue!=null&& maxKeyvalue.length()>0)
                        {
                            datacollectLogDao.updateJobDatasetKeyvalue(ds.getId(),maxKeyvalue);
                            LogService.getLogger().info("修改任务数据集最大值为"+maxKeyvalue+"。"); //文本日志
                        if (maxKeyvalue != null && maxKeyvalue.length() > 0) {
                            datacollectLogDao.updateJobDatasetKeyvalue(ds.getId(), maxKeyvalue);
                            logger.info("修改任务数据集最大值为" + maxKeyvalue + "。"); //文本日志
                        }
                        int countPage = 1;
                        if(count > maxNum) //分页采集
                        if (count > maxNum) //分页采集
                        {
                            countPage = count/maxNum+1;
                            countPage = count / maxNum + 1;
                        }
                        for(int i=0;i<countPage;i++)
                        {
                        for (int i = 0; i < countPage; i++) {
                            int rows = maxNum;
                            if(i+1==countPage){
                                rows = count-i*maxNum;
                            if (i + 1 == countPage) {
                                rows = count - i * maxNum;
                            }
                            String sql = getPageSqlByDBType(dbType,strSql,i*maxNum,rows); //获取分页sql语句
                            String sql = getPageSqlByDBType(dbType, strSql, i * maxNum, rows); //获取分页sql语句
                            RsJobLogDetail detail = new RsJobLogDetail();
                            detail.setStartTime(new Date());
@ -616,34 +680,28 @@ public class DatacollectService implements IDatacollectService {
                            detail.setJobDatasetName(ds.getJobDatasetName());
                            detail.setJobId(ds.getJobId());
                            detail.setJobSql(sql);
                            detail.setJobNum(i+1);
                            detail.setJobNum(i + 1);
                            detail.setJobDatasetRows(rows);
                            detail.setSchemeVersion(schemeVersion);
                            List<JSONObject> list = db.query(sql);
                            String msg = "";
                            if(list!=null)
                            {
                                msg = intoMongodb(list,schemeVersion,stdTableName,colList); //返回信息
                            }
                            else{
                                if(db.errorMessage.length()>0)
                                {
                            if (list != null) {
                                msg = intoMongodb(list, schemeVersion, stdTableName, colList); //返回信息
                            } else {
                                if (db.errorMessage.length() > 0) {
                                    msg = db.errorMessage;
                                }
                                else{
                                } else {
                                    msg = "查询数据为空!";
                                }
                            }
                            if(msg.length()>0)
                            {
                            if (msg.length() > 0) {
                                //任务日志细表异常操作
                                detail.setJobStatus("0");
                                detail.setJobContent(msg);
                                LogService.getLogger().info(msg); //文本日志
                            }
                            else{
                                logger.info(msg); //文本日志
                            } else {
                                detail.setJobStatus("1");
                                detail.setJobContent("采集成功!");
                                successCount += rows;
@ -652,31 +710,27 @@ public class DatacollectService implements IDatacollectService {
                            datacollectLogDao.saveEntity(detail);
                        }
                        message = jobDatasetName + "采集成功"+successCount+"条数据,总条数"+count+"条。";
                        message = jobDatasetName + "采集成功" + successCount + "条数据,总条数" + count + "条。";
                    }
                }
            }
            else
            {
            } else {
                throw new Exception(jobDatasetName + "数据集字段映射为空!");
            }
        }
        else{
        } else {
            throw new Exception(jobDatasetName + "数据集映射为空!");
        }
        LogService.getLogger().info(message);
        logger.info(message);
        return message;
    }
    /**
     * XML转JSONList
     *
     * @return
     */
    private List<JSONObject> getListFromXml(String xml) throws Exception
    {
    private List<JSONObject> getListFromXml(String xml) throws Exception {
        SAXReader reader = new SAXReader();
        Document doc = reader.read(new ByteArrayInputStream(xml.getBytes("UTF-8")));
        Element root = doc.getRootElement();
@ -684,15 +738,13 @@ public class DatacollectService implements IDatacollectService {
        //xml数据列表
        Iterator iter = root.elementIterator("Data");
        while (iter.hasNext())
        {
        while (iter.hasNext()) {
            JSONObject obj = new JSONObject();
            Element el =(Element)iter.next();
            Element el = (Element) iter.next();
            Iterator cols = el.elementIterator();
            while (cols.hasNext())
            {
                Element col =(Element)cols.next();
                obj.put(col.getName().toUpperCase(),col.getStringValue());
            while (cols.hasNext()) {
                Element col = (Element) cols.next();
                obj.put(col.getName().toUpperCase(), col.getStringValue());
            }
            re.add(obj);
        }
@ -702,17 +754,17 @@ public class DatacollectService implements IDatacollectService {
    /**
     * webservice采集
     *
     * @return
     */
    private String collectWebservice(DtoJobDataset ds,String schemeVersion,String logId) throws Exception
    {
    private String collectWebservice(DtoJobDataset ds, String schemeVersion, String logId) throws Exception {
        String message = "";
        String datasetId = ds.getJobDatasetId();
        String jobDatasetName = ds.getJobDatasetName();
        String condition=ds.getJobDatasetCondition();
        String key=ds.getJobDatasetKey();
        String keytype=ds.getJobDatasetKeytype();
        String keyvalue=ds.getJobDatasetKeyvalue();
        String condition = ds.getJobDatasetCondition();
        String key = ds.getJobDatasetKey();
        String keytype = ds.getJobDatasetKeytype();
        String keyvalue = ds.getJobDatasetKeyvalue();
        String orgCode = ds.getOrgCode();
        String datasourceId = ds.getDatasourceId();
@ -721,8 +773,8 @@ public class DatacollectService implements IDatacollectService {
        //webservice地址
        ObjectMapper objectMapper = new ObjectMapper();
        Map<String,String> mapConfig = objectMapper.readValue(config,Map.class);
        if(mapConfig.containsKey("protocol") && mapConfig.containsKey("url")) {
        Map<String, String> mapConfig = objectMapper.readValue(config, Map.class);
        if (mapConfig.containsKey("protocol") && mapConfig.containsKey("url")) {
            String url = mapConfig.get("protocol") + "://" + mapConfig.get("url");
            //获取数据集映射
            List datasetString = stdService.getDatasetByScheme(schemeVersion, datasetId);
@ -783,22 +835,21 @@ public class DatacollectService implements IDatacollectService {
                    }
                    strSql += strWhere;
                    //总条数和最大值查询
                    String sqlCount = "select count(1) as COUNT from (" + strSql+")";
                    String sqlCount = "select count(1) as COUNT from (" + strSql + ")";
                    String sqlMax = "select max(" + maxKey + ") as MAX_KEYVALUE from " + adapterTableName + strWhere;
                    //webservice获取数据总条数
                    String strCount = WebserviceUtil.request(url,"ExcuteSQL",new Object[]{"",sqlCount});
                    String strCount = WebserviceUtil.request(url, "ExcuteSQL", new Object[]{"", sqlCount});
                    List<JSONObject> dataCount = getListFromXml(strCount);
                    if (dataCount!=null &&dataCount.size()>0) {
                    if (dataCount != null && dataCount.size() > 0) {
                        Integer count = Integer.parseInt(dataCount.get(0).getString("COUNT"));
                        if (count == 0) //0条记录,无需采集
                        {
                            message = "0条记录,无需采集。";
                        }
                        else {
                        } else {
                            //webservice获取最大值
                            String strMax = WebserviceUtil.request(url,"ExcuteSQL",new Object[]{"",sqlMax});
                            String strMax = WebserviceUtil.request(url, "ExcuteSQL", new Object[]{"", sqlMax});
                            List<JSONObject> dataMax = getListFromXml(strCount);
                            int successCount = 0;
                            String maxKeyvalue = dataMax.get(0).getString("MAX_KEYVALUE");
@ -806,7 +857,7 @@ public class DatacollectService implements IDatacollectService {
                            //修改最大值
                            if (maxKeyvalue != null && maxKeyvalue.length() > 0) {
                                datacollectLogDao.updateJobDatasetKeyvalue(ds.getId(), maxKeyvalue);
                                LogService.getLogger().info("修改任务数据集最大值为" + maxKeyvalue + "。"); //文本日志
                                logger.info("修改任务数据集最大值为" + maxKeyvalue + "。"); //文本日志
                            }
                            int countPage = 1;
                            if (count > maxNum) //分页采集
@ -849,16 +900,14 @@ public class DatacollectService implements IDatacollectService {
                                        //任务日志细表异常操作
                                        detail.setJobStatus("0");
                                        detail.setJobContent(msg);
                                        LogService.getLogger().info(msg); //文本日志
                                        logger.info(msg); //文本日志
                                    } else {
                                        detail.setJobStatus("1");
                                        detail.setJobContent("采集成功!");
                                        successCount += rows;
                                    }
                                }
                                catch (Exception ex)
                                {
                                    msg=ex.getMessage();
                                } catch (Exception ex) {
                                    msg = ex.getMessage();
                                }
                                detail.setEndTime(new Date());
                                datacollectLogDao.saveEntity(detail);
@ -873,171 +922,11 @@ public class DatacollectService implements IDatacollectService {
            } else {
                throw new Exception(jobDatasetName + "数据集映射为空!");
            }
        }
        else{
        } else {
            throw new Exception("非法webservice路径!");
        }
        LogService.getLogger().info(message);
        logger.info(message);
        return message;
    }
    /**
     * 执行任务
     */
    @Override
    public void executeJob(String jobId) throws Exception{
        //获取任务详细信息
        RsJobConfig job = datacollect.getJobById(jobId);
        RsJobLog log = new RsJobLog();
        log.setJobId(jobId);
        log.setJobStartTime(new Date());
        datacollectLogDao.saveEntity(log);
        String logId = log.getId();
        LogService.getLogger().info("任务"+jobId+"开始采集,新增日志"+logId+"。");
        StringBuilder logStr = new StringBuilder();
        int count = 0;
        int success = 0;
        try {
            String schemeVersion = job.getSchemeVersion();
            //获取任务相关数据集
            List<DtoJobDataset> list = datacollectDao.getDatacollectDataset(jobId);
            LogService.getLogger().info("获取任务相关数据集,数量"+list.size()+"。");
            if (list != null && list.size() > 0) {
                count = list.size();
                logStr.append("/*********** 开始采集 *******************/\n");
                //遍历数据集
                for (DtoJobDataset ds : list) {
                    try {
                        String type = ds.getType();
                        String message = "";
                        logStr.append(DateConvert.toString(new Date(), dateFormat) + " " + ds.getJobDatasetName());
                        if (type != null) {
                            if (type.equals("1")) //Web Service
                            {
                                message = collectWebservice(ds, schemeVersion, logId) + "\n";
                            } else if (type.equals("2"))//文件系统
                            {
                                message = "文件系统采集。\n";
                            } else { //数据库
                                message = collectTable(ds, schemeVersion, logId) + "\n";
                            }
                        } else {
                            message = ds.getJobDatasetName() + "未关联数据源!\n";
                        }
                        LogService.getLogger().info(message); //文本日志
                        logStr.append(message);
                        success++;
                    }
                    catch (Exception ex)
                    {
                        LogService.getLogger().info("异常:" + ex.getMessage());
                        logStr.append(ex.getMessage() + "\n");
                    }
                }
                logStr.append("/*********** 结束采集 *******************/\n");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            LogService.getLogger().info("异常:" + ex.getMessage());
            logStr.append(ex.getMessage() + "\n");
            logStr.append("/*********** 出现异常,中断采集 *******************/\n");
        }
        //任务主日志成功
        String jobContent = logStr.toString().replace("\"", "\\\"");
        if(jobContent.length()>4000)
        {
            jobContent = jobContent.substring(0,4000);
        }
        log.setJobContent(jobContent);
        log.setJobEndTime(new Date());
        log.setJobDatasetCount(count);
        log.setJobDatasetSuccess(success);
        LogService.getLogger().info("任务结束," + count + "个数据集成功采集" + success + "个。");
        datacollectLogDao.updateEntity(log);
    }
    /**
     * 根据日志详细补采数据
     */
    @Override
    @Transactional
    public ActionResult repeatJob(String id) throws Exception
    {
        RsJobLogDetail log = datacollectLogDao.getEntity(RsJobLogDetail.class, id);
        if(log.getJobStatus().equals("2")) {
            return new ActionResult(false,"数据补采中!");
        }
        if(!log.getJobStatus().equals("0")){
            return new ActionResult(false,"数据无需补采!");
        }
        try {
            log.setRepeatStartTime(new Date());
            log.setJobStatus("2"); //设置采集中状态
            datacollectLogDao.updateEntity(log);
        }
        catch (Exception e){
            return new ActionResult(false,"补采失败!");
        }
        log.setJobStatus("0");
        datacollectLogDao.updateEntity(log);
        String stdDatasetCode = log.getStdDatasetCode();
        String sql = log.getJobSql();
        //数据库连接
        String datasourceId = log.getDatasourceId();
        String config = log.getConfig();
        DBHelper db = new DBHelper(datasourceId,config);
        //获取数据集字段映射结构
        String schemeVersion = log.getSchemeVersion();
        String datasetId = log.getJobDatasetId();
        List colString = stdService.getDatacolByScheme(schemeVersion,datasetId);
        JSONArray colList = new JSONArray(colString);
        List<JSONObject> list = db.query(sql);
        String message = intoMongodb(list,schemeVersion,stdDatasetCode,colList);
        if(message.length()>0 || db.errorMessage.length()>0)
        {
            log.setJobStatus("0");
            log.setRepeatEndTime(new Date());
            if(message.length()>0)
            {
                log.setRepeatJobContent(message);
            }
            else{
                db.errorMessage.length();
            }
            datacollectLogDao.updateEntity(log);
            return new ActionResult(false,"补采失败!");
        }
        else{
            log.setJobStatus("3");
            log.setRepeatEndTime(new Date());
            log.setRepeatJobContent("补采成功!");
            datacollectLogDao.updateEntity(log);
            return new ActionResult(true,"补采成功!");
        }
    }
    public static void main(String[] args) throws Exception{
        //namespace是命名空间,methodName是方法名
        String sql = "select count(1) as COUNT,max(to_number(HDSD03_01_031)) as MAX_KEYVALUE from HDSC01_02 where 1=1 order by to_number(HDSD03_01_031)";
        //调用web Service//输出调用结果
        System.out.println(WebserviceUtil.request("http://172.19.103.71:8080/service/sql?wsdl", "ExcuteSQL", new Object[]{"", sql}));
    }
}

+ 2 - 2
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StandardController.java

@ -1,6 +1,6 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.model.DetailModelResult;
import com.yihu.ehr.framework.model.DictionaryResult;
import com.yihu.ehr.framework.model.Result;
@ -45,7 +45,7 @@ public class StandardController extends BaseController {
    @RequestMapping("/getSysParamList")
    @ApiOperation(value = "获取集成标准系统参数", response = StandardParamResultModel.class, notes = "获取集成标准系统参数")
    public StandardParamResultModel getSysParamList() {
        StandardParamResultModel standardParamResultModel = standardService.getStandardParam(Constants.STANDARD);
        StandardParamResultModel standardParamResultModel = standardService.getStandardParam(SqlConstants.STANDARD);
        return standardParamResultModel;
    }

+ 19 - 19
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDatasetService.java

@ -4,7 +4,7 @@ package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.constrant.TreeView;
import com.yihu.ehr.framework.exception.ApiException;
@ -225,9 +225,9 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        //获取所有标准数据集
        StandardVersion sVersion = new StandardVersion(stdVersion);
        List<StdDataSetModel> dataSetList = getList(StdDataSetModel.class, sVersion.getDataSetTableName(), "", "", null, null);
        String idListStr = Constants.EMPTY;
        String idListStr = SqlConstants.EMPTY;
        for (StdDataSetModel dataSet : dataSetList) {
            idListStr += dataSet.getId() + Constants.COMMA;
            idListStr += dataSet.getId() + SqlConstants.COMMA;
        }
        Map<Integer, List<StdMetaDataModel>> stdDataSetModelMap = new HashMap<>();
        if (!StringUtil.isEmpty(idListStr)) {
@ -409,10 +409,10 @@ public class AdapterDatasetService extends SQLGeneralDAO {
            insertSqlList.add(delData(aVersion.getDictTableName(), "id", delDicList));
            insertSqlList.add(delData(aVersion.getDictEntryTableName(), "std_dict_id", delDicList));
        }
/*        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDataSetTableName());
        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getMetaDataTableName());
        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDictTableName());
        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDictEntryTableName());*/
/*        insertSqlList.add(SqlConstants.DELETE + SqlConstants.FROM + aVersion.getDataSetTableName());
        insertSqlList.add(SqlConstants.DELETE + SqlConstants.FROM + aVersion.getMetaDataTableName());
        insertSqlList.add(SqlConstants.DELETE + SqlConstants.FROM + aVersion.getDictTableName());
        insertSqlList.add(SqlConstants.DELETE + SqlConstants.FROM + aVersion.getDictEntryTableName());*/
        List<Integer> addDataSetList = datasetMap.get("add");
        if (addDataSetList.size() > 0) {
@ -456,14 +456,14 @@ public class AdapterDatasetService extends SQLGeneralDAO {
    private String delData(String adapterTableName, String item, List<Integer> idList) {
        StringBuffer sql = new StringBuffer();
        String idStr = Constants.EMPTY;
        String idStr = SqlConstants.EMPTY;
        for (Integer id : idList) {
            idStr += id + Constants.COMMA;
            idStr += id + SqlConstants.COMMA;
        }
        if (!StringUtil.isEmpty(idStr)) {
            idStr = Constants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) + Constants.RIGHT_BRACKET;
            idStr = SqlConstants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) + SqlConstants.RIGHT_BRACKET;
        }
        sql.append(Constants.DELETE + Constants.FROM).append(adapterTableName).append(Constants.WHERE).append(item).append(Constants.IN).append(idStr);
        sql.append(SqlConstants.DELETE + SqlConstants.FROM).append(adapterTableName).append(SqlConstants.WHERE).append(item).append(SqlConstants.IN).append(idStr);
        return sql.toString();
    }
@ -513,23 +513,23 @@ public class AdapterDatasetService extends SQLGeneralDAO {
    private String insertData(String adapterTableName, String stdTableName, String[] item1, String[] item2, Integer schemeId, String item, List<Integer> idList) {
        StringBuffer sql = new StringBuffer();
        String idStr = Constants.EMPTY;
        String idStr = SqlConstants.EMPTY;
        for (Integer id : idList) {
            idStr += id + Constants.COMMA;
            idStr += id + SqlConstants.COMMA;
        }
        if (!StringUtil.isEmpty(idStr)) {
            idStr = Constants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) + Constants.RIGHT_BRACKET;
            idStr = SqlConstants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) + SqlConstants.RIGHT_BRACKET;
        }
        sql.append(Constants.INSERT_INTO + adapterTableName + Constants.LEFT_BRACKET);
        sql.append(SqlConstants.INSERT_INTO + adapterTableName + SqlConstants.LEFT_BRACKET);
        for (String it : item1) {
            sql.append(it + Constants.COMMA);
            sql.append(it + SqlConstants.COMMA);
        }
        sql.append("scheme_id" + Constants.RIGHT_BRACKET + Constants.LEFT_BRACKET + Constants.SELECT);
        sql.append("scheme_id" + SqlConstants.RIGHT_BRACKET + SqlConstants.LEFT_BRACKET + SqlConstants.SELECT);
        for (String it : item2) {
            sql.append(it + Constants.COMMA);
            sql.append(it + SqlConstants.COMMA);
        }
        sql.append(schemeId + Constants.FROM + stdTableName + Constants.WHERE + item + Constants.IN + idStr + Constants.RIGHT_BRACKET);
        sql.append(schemeId + SqlConstants.FROM + stdTableName + SqlConstants.WHERE + item + SqlConstants.IN + idStr + SqlConstants.RIGHT_BRACKET);
        return sql.toString();
    }

+ 2 - 2
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterMetadataService.java

@ -4,7 +4,7 @@ package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.model.DetailModelResult;
@ -422,7 +422,7 @@ public class AdapterMetadataService extends SQLGeneralDAO {
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String column = jsonNode.get("column").asText();
                sql.append(" WHERE std_dataset_id = " + stdDatasetId + Constants.AND);
                sql.append(" WHERE std_dataset_id = " + stdDatasetId + SqlConstants.AND);
                sql.append(column).append(" IS NOT NULL");
            }
            Query query = getCurrentSession().createSQLQuery(sql.toString());

+ 3 - 3
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeService.java

@ -3,7 +3,7 @@ package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.model.DetailModelResult;
import com.yihu.ehr.framework.model.Result;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
@ -145,7 +145,7 @@ public class AdapterSchemeService extends SQLGeneralDAO {
    public DetailModelResult getSchemeList(String condition) {
        try {
            String name = Constants.EMPTY;
            String name = SqlConstants.EMPTY;
            if (!StringUtil.isEmpty(condition)) {
                ObjectMapper objectMapper = new ObjectMapper();
                try {
@ -182,7 +182,7 @@ public class AdapterSchemeService extends SQLGeneralDAO {
                stdIdList.add(null);
            }
            if (CollectionUtil.isEmpty(versionList)) {
                versionList.add(Constants.EMPTY);
                versionList.add(SqlConstants.EMPTY);
            }
            String adapterVersionHql = "FROM AdapterSchemeVersionModel WHERE schemeId IN :schemeIdList";

+ 19 - 20
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeVersionService.java

@ -1,9 +1,8 @@
package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.crawler.service.CrawlerManager;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.model.*;
@ -237,7 +236,7 @@ public class AdapterSchemeVersionService extends SQLGeneralDAO {
        List<String> deleteSqlList = new ArrayList<>();
        for (int i = 0; i < tables.length; ++i) {
            String table = tables[i];
            deleteSqlList.add(Constants.DROP_TABLE + table);
            deleteSqlList.add(SqlConstants.DROP_TABLE + table);
        }
        insertBatch(deleteSqlList);
    }
@ -259,10 +258,10 @@ public class AdapterSchemeVersionService extends SQLGeneralDAO {
            String baseTable = baseTables[i];
            String newTable = newTables[i];
            Query query = session.createSQLQuery(Constants.CREATE_TABLE + newTable + Constants.LIKE + baseTable);
            Query query = session.createSQLQuery(SqlConstants.CREATE_TABLE + newTable + SqlConstants.LIKE + baseTable);
            query.executeUpdate();
            query = session.createSQLQuery(Constants.INSERT_INTO + newTable + Constants.SELECT + "*" + Constants.FROM + baseTable);
            query = session.createSQLQuery(SqlConstants.INSERT_INTO + newTable + SqlConstants.SELECT + "*" + SqlConstants.FROM + baseTable);
            query.executeUpdate();
        }
    }
@ -361,7 +360,7 @@ public class AdapterSchemeVersionService extends SQLGeneralDAO {
        adapterTableList.add(adapterVersion.DictEntryTablePrefix);
        adapterTableList.add(adapterVersion.DatasetRelationTablePrefix);
        for (String table : adapterTableList){
            String sql = Constants.CREATE_TABLE + table + Constants.UNDERLINE + adapterVersion.getVersion() + Constants.LIKE + table;
            String sql = SqlConstants.CREATE_TABLE + table + SqlConstants.UNDERLINE + adapterVersion.getVersion() + SqlConstants.LIKE + table;
            sqlList.add(sql);
        }
        return sqlList;
@ -369,29 +368,29 @@ public class AdapterSchemeVersionService extends SQLGeneralDAO {
    private String insertData(String adapterTableName, String stdTableName, String[] item1, String[] item2, Integer schemeId, String item, List<Integer> idList) {
        StringBuffer sql = new StringBuffer();
        String idStr = Constants.EMPTY;
        String idStr = SqlConstants.EMPTY;
        if (!CollectionUtil.isEmpty(idList)) {
            for (Integer id : idList) {
                idStr += id + Constants.COMMA;
                idStr += id + SqlConstants.COMMA;
            }
            if (!StringUtil.isEmpty(idStr)) {
                idStr = Constants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) +  Constants.RIGHT_BRACKET;
                idStr = SqlConstants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) +  SqlConstants.RIGHT_BRACKET;
            }
        }
        sql.append(Constants.INSERT_INTO + adapterTableName + Constants.LEFT_BRACKET);
        sql.append(SqlConstants.INSERT_INTO + adapterTableName + SqlConstants.LEFT_BRACKET);
        for (String it : item1) {
            sql.append(it + Constants.COMMA);
            sql.append(it + SqlConstants.COMMA);
        }
        sql.append("scheme_id" + Constants.RIGHT_BRACKET + Constants.LEFT_BRACKET + Constants.SELECT );
        sql.append("scheme_id" + SqlConstants.RIGHT_BRACKET + SqlConstants.LEFT_BRACKET + SqlConstants.SELECT );
        for (String it : item2) {
            sql.append(it + Constants.COMMA);
            sql.append(it + SqlConstants.COMMA);
        }
        sql.append(schemeId + Constants.FROM + stdTableName);
        sql.append(schemeId + SqlConstants.FROM + stdTableName);
        if (!StringUtil.isEmpty(item)) {
            sql.append(Constants.WHERE + item +Constants.IN + idStr);
            sql.append(SqlConstants.WHERE + item + SqlConstants.IN + idStr);
        }
        sql.append(Constants.RIGHT_BRACKET);
        sql.append(SqlConstants.RIGHT_BRACKET);
        return sql.toString();
    }
@ -401,11 +400,11 @@ public class AdapterSchemeVersionService extends SQLGeneralDAO {
            if (CollectionUtil.isEmpty(adapterSchemeModelList)) {
                return null;
            }
            String schemeIdListStr = Constants.EMPTY;
            String schemeIdListStr = SqlConstants.EMPTY;
            for (AdapterSchemeModel adapterSchemeModel : adapterSchemeModelList) {
                schemeIdListStr = schemeIdListStr + adapterSchemeModel.getId() + Constants.COMMA;
                schemeIdListStr = schemeIdListStr + adapterSchemeModel.getId() + SqlConstants.COMMA;
            }
            schemeIdListStr = Constants.LEFT_BRACKET + schemeIdListStr.substring(0, schemeIdListStr.length() - 1) + Constants.RIGHT_BRACKET;
            schemeIdListStr = SqlConstants.LEFT_BRACKET + schemeIdListStr.substring(0, schemeIdListStr.length() - 1) + SqlConstants.RIGHT_BRACKET;
            String adapterSchemeVersionHql = "SELECT ID AS id,VERSION AS version,SCHEME_ID AS schemeId,NAME AS name FROM ADAPTER_SCHEME_VERSION WHERE PUBLISH_TIME=(select max(PUBLISH_TIME) from ADAPTER_SCHEME_VERSION WHERE SCHEME_ID in "+schemeIdListStr+")";
            Query adapterSchemeVersionQuery = getCurrentSession().createSQLQuery(adapterSchemeVersionHql);
            Object[] object = (Object[]) adapterSchemeVersionQuery.uniqueResult();
@ -425,7 +424,7 @@ public class AdapterSchemeVersionService extends SQLGeneralDAO {
    }
    public List<AdapterSchemeModel> getEhrAdapterSchemeList() {
        String paramSql = "select s.param_value from system_param s where s.param_key = '"+Constants.STANDARD_EHR+"'";
        String paramSql = "select s.param_value from system_param s where s.param_key = '"+ SqlConstants.STANDARD_EHR+"'";
        Query paramQuery = getCurrentSession().createSQLQuery(paramSql);
        String code = (String) paramQuery.uniqueResult();
        if (StringUtil.isEmpty(code)) {

+ 6 - 6
Hos-resource/src/main/java/com/yihu/ehr/standard/service/bo/AdapterVersion.java

@ -1,6 +1,6 @@
package com.yihu.ehr.standard.service.bo;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.util.ObjectVersion;
public class AdapterVersion {
@ -24,23 +24,23 @@ public class AdapterVersion {
    }
    public String getDataSetTableName() {
        return DataSetTablePrefix + Constants.UNDERLINE + version;
        return DataSetTablePrefix + SqlConstants.UNDERLINE + version;
    }
    public String getMetaDataTableName() {
        return MetaDataTablePrefix + Constants.UNDERLINE + version;
        return MetaDataTablePrefix + SqlConstants.UNDERLINE + version;
    }
    public String getDictTableName() {
        return DictTablePrefix + Constants.UNDERLINE + version;
        return DictTablePrefix + SqlConstants.UNDERLINE + version;
    }
    public String getDictEntryTableName() {
        return DictEntryTablePrefix + Constants.UNDERLINE + version;
        return DictEntryTablePrefix + SqlConstants.UNDERLINE + version;
    }
    public String getDatasetRelationTableName() {
        return DatasetRelationTablePrefix + Constants.UNDERLINE + version;
        return DatasetRelationTablePrefix + SqlConstants.UNDERLINE + version;
    }
    public String getVersion() {

+ 8 - 8
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StandardService.java

@ -3,7 +3,7 @@ package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.model.DetailModelResult;
@ -216,7 +216,7 @@ public class StandardService extends SQLGeneralDAO {
        SystemParam systemParam = (SystemParam) criteria.uniqueResult();
        Criteria criteria1 = getCurrentSession().createCriteria(SystemParam.class);
        criteria1.add(Restrictions.eq("paramKey", Constants.STANDARD_ORG));
        criteria1.add(Restrictions.eq("paramKey", SqlConstants.STANDARD_ORG));
        SystemParam systemParam1 = (SystemParam) criteria1.uniqueResult();
        if (systemParam != null) {
@ -327,7 +327,7 @@ public class StandardService extends SQLGeneralDAO {
    }
    public List<StandardResultDetailModel> getStandardList(String condition) {
        String name = Constants.EMPTY;
        String name = SqlConstants.EMPTY;
        Integer type = null;
        if (!StringUtil.isEmpty(condition)) {
            ObjectMapper objectMapper = new ObjectMapper();
@ -343,8 +343,8 @@ public class StandardService extends SQLGeneralDAO {
                e.printStackTrace();
            }
        }
        StandardParamResultModel standardParam = getStandardParam(Constants.STANDARD);
        StandardParamResultModel standardParam1= getStandardParam(Constants.STANDARD_ORG);
        StandardParamResultModel standardParam = getStandardParam(SqlConstants.STANDARD);
        StandardParamResultModel standardParam1= getStandardParam(SqlConstants.STANDARD_ORG);
        String code = standardParam.getCode();
        String orgCode = standardParam1.getCode();
        List<SystemOrganization> publisherModelList = new ArrayList<>();
@ -421,7 +421,7 @@ public class StandardService extends SQLGeneralDAO {
        for (String key : query.keySet()) {
            if (key.equals("type")) {
                Integer type = (Integer) query.get(key);
                String code = getStandardParam(Constants.STANDARD).getCode();
                String code = getStandardParam(SqlConstants.STANDARD).getCode();
                if (type == 0) {
                    criteria.add(Restrictions.eq("code", code));
                } else if (type == 1) {
@ -439,9 +439,9 @@ public class StandardService extends SQLGeneralDAO {
        }
        if (order != null) {
            for (String key : order.keySet()) {
                if (order.get(key).equals(Constants.ASC)) {
                if (order.get(key).equals(SqlConstants.ASC)) {
                    criteria.addOrder(Order.asc(key));
                } else if (order.get(key).equals(Constants.DESC)) {
                } else if (order.get(key).equals(SqlConstants.DESC)) {
                    criteria.addOrder(Order.desc(key));
                }
            }

+ 8 - 8
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StandardVersionService.java

@ -2,7 +2,7 @@ package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.model.DictItem;
@ -229,7 +229,7 @@ public class StandardVersionService extends SQLGeneralDAO {
    public StandardVersionModel getLastestVersion(Integer standardId) {
        Map<String, Object> query = new HashMap<>();
        Map<String, String> order = new HashMap<>();
        order.put("publisher", Constants.DESC);
        order.put("publisher", SqlConstants.DESC);
        List<StandardVersionModel> list = getList(standardId, query, order, 1, 0);
        if (list != null && list.size() != 0) {
@ -320,9 +320,9 @@ public class StandardVersionService extends SQLGeneralDAO {
        }
        if (order != null) {
            for (String key : order.keySet()) {
                if (order.get(key).equals(Constants.ASC)) {
                if (order.get(key).equals(SqlConstants.ASC)) {
                    criteria.addOrder(Order.asc(key));
                } else if (order.get(key).equals(Constants.DESC)) {
                } else if (order.get(key).equals(SqlConstants.DESC)) {
                    criteria.addOrder(Order.desc(key));
                }
            }
@ -340,7 +340,7 @@ public class StandardVersionService extends SQLGeneralDAO {
        List<String> deleteSql = new ArrayList<>();
        for (int i = 0; i < tables.length; ++i) {
            String table = tables[i];
            deleteSql.add(Constants.DROP_TABLE + table);
            deleteSql.add(SqlConstants.DROP_TABLE + table);
        }
        insertBatch(deleteSql);
    }
@ -379,18 +379,18 @@ public class StandardVersionService extends SQLGeneralDAO {
        for (int i = 0; i < baseTables.length; ++i) {
            String baseTable = baseTables[i];
            String newTable = newTables[i];
            createSql.add(Constants.CREATE_TABLE + newTable + Constants.LIKE + baseTable);
            createSql.add(SqlConstants.CREATE_TABLE + newTable + SqlConstants.LIKE + baseTable);
        }
        for (int i = 0; i < baseTables.length; ++i) {
            String baseTable = baseTables[i];
            String newTable = newTables[i];
            insertSql.add(Constants.INSERT_INTO + newTable + Constants.SELECT + Constants.ASTERISK + Constants.FROM + baseTable);
            insertSql.add(SqlConstants.INSERT_INTO + newTable + SqlConstants.SELECT + SqlConstants.ASTERISK + SqlConstants.FROM + baseTable);
        }
        for (int i = 0; i < baseTables.length; ++i) {
            String newTable = newTables[i];
            updateSql.add(Constants.UPDATE + newTable + Constants.SET + " STD_ID = " + standardId);
            updateSql.add(SqlConstants.UPDATE + newTable + SqlConstants.SET + " STD_ID = " + standardId);
        }
        insertBatch(createSql);
        insertBatch(insertSql);

+ 3 - 3
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdCDACatalogService.java

@ -3,7 +3,7 @@ package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
@ -122,9 +122,9 @@ public class StdCDACatalogService extends SQLGeneralDAO {
        }
        if (order != null) {
            for (String key : order.keySet()) {
                if (order.get(key).equals(Constants.ASC)) {
                if (order.get(key).equals(SqlConstants.ASC)) {
                    criteria.addOrder(Order.asc(key));
                } else if (order.get(key).equals(Constants.DESC)) {
                } else if (order.get(key).equals(SqlConstants.DESC)) {
                    criteria.addOrder(Order.desc(key));
                }
            }

+ 9 - 9
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDatasetService.java

@ -3,7 +3,7 @@ package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.model.DetailModelResult;
@ -331,7 +331,7 @@ public class StdDatasetService extends SQLGeneralDAO {
            List<Select2> detailModelList = new ArrayList<>();
            for (StdDataSetModel stdDataSetModel : datasetList) {
                Select2 select2 = new Select2();
                select2.setId(stdDataSetModel.getId() + Constants.COMMA + stdDataSetModel.getCode());
                select2.setId(stdDataSetModel.getId() + SqlConstants.COMMA + stdDataSetModel.getCode());
                select2.setText(stdDataSetModel.getName());
                detailModelList.add(select2);
            }
@ -347,7 +347,7 @@ public class StdDatasetService extends SQLGeneralDAO {
    public List getAllVersionDatasetList() {
        // 导入的数据集列表应该只取集成标准已发布各版本的并集去重 @modify by yingjie chen
        Criteria criteria = getCurrentSession().createCriteria(StandardModel.class);
        StandardParamResultModel standardParam = standardService.getStandardParam(Constants.STANDARD);
        StandardParamResultModel standardParam = standardService.getStandardParam(SqlConstants.STANDARD);
        String code = standardParam.getCode();
        criteria.add(Restrictions.eq("code", code));
        List<StandardModel> standardModelList = criteria.list();
@ -360,16 +360,16 @@ public class StdDatasetService extends SQLGeneralDAO {
                query.setParameterList("idList", idList);
                versionModelList = query.list();
            }
            String sql = Constants.EMPTY;
            String sql = SqlConstants.EMPTY;
            BeanTransformer transformer = new BeanTransformer(StdDataSetModel.class);
            for (StandardVersionModel versionModel : versionModelList) {
                SqlCreator sqlCreator = new SqlCreator(StdDataSetModel.class);
                StandardVersion version = new StandardVersion(versionModel.getVersion());
                sql = sql + sqlCreator.selectData(version.getDataSetTableName()) + Constants.UNION;
                sql = sql + sqlCreator.selectData(version.getDataSetTableName()) + SqlConstants.UNION;
            }
            if (!StringUtil.isEmpty(sql)) {
                sql = sql.substring(0, sql.length() - Constants.UNION.length());
                sql = sql.substring(0, sql.length() - SqlConstants.UNION.length());
                SQLQuery sqlQuery = getCurrentSession().createSQLQuery(sql);
                sqlQuery.setResultTransformer(transformer);
                List<StdDataSetModel> modelList = sqlQuery.list();
@ -561,16 +561,16 @@ public class StdDatasetService extends SQLGeneralDAO {
            String hql = "FROM StandardVersionModel WHERE publishTime is not null order by publishTime";
            Query query = getCurrentSession().createQuery(hql);
            List<StandardVersionModel> versionModelList = query.list();
            String sql = Constants.EMPTY;
            String sql = SqlConstants.EMPTY;
            BeanTransformer transformer = new BeanTransformer(StdDataSetModel.class);
            for (StandardVersionModel versionModel : versionModelList) {
                SqlCreator sqlCreator = new SqlCreator(StdDataSetModel.class);
                StandardVersion version = new StandardVersion(versionModel.getVersion());
                sql = sql + sqlCreator.selectData(version.getDataSetTableName())  + Constants.UNION;
                sql = sql + sqlCreator.selectData(version.getDataSetTableName())  + SqlConstants.UNION;
            }
            if (!StringUtil.isEmpty(sql)) {
                sql = sql.substring(0, sql.length() - Constants.UNION.length());
                sql = sql.substring(0, sql.length() - SqlConstants.UNION.length());
                SQLQuery sqlQuery = getCurrentSession().createSQLQuery(sql);
                sqlQuery.setResultTransformer(transformer);
                List<StdDataSetModel> modelList = sqlQuery.list();

+ 2 - 2
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDictEntryService.java

@ -3,7 +3,7 @@ package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.model.DetailModelResult;
@ -307,7 +307,7 @@ public class StdDictEntryService extends SQLGeneralDAO {
            List<Select2> detailModelList = new ArrayList<>();
            for (StdDictionaryEntryModel dictEntry : dictEntryModelList) {
                Select2 select2 = new Select2();
                select2.setId(dictEntry.getId() + Constants.COMMA + dictEntry.getCode());
                select2.setId(dictEntry.getId() + SqlConstants.COMMA + dictEntry.getCode());
                select2.setText(dictEntry.getValue());
                detailModelList.add(select2);
            }

+ 2 - 2
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDictService.java

@ -4,7 +4,7 @@ package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.model.DetailModelResult;
@ -390,7 +390,7 @@ public class StdDictService extends SQLGeneralDAO {
            List<Select2> detailModelList = new ArrayList<>();
            for (StdDictionaryModel dictModel : dictList) {
                Select2 select2 = new Select2();
                select2.setId(dictModel.getId() + Constants.COMMA + dictModel.getCode());
                select2.setId(dictModel.getId() + SqlConstants.COMMA + dictModel.getCode());
                select2.setText(dictModel.getName());
                detailModelList.add(select2);
            }

+ 8 - 8
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdMetadataService.java

@ -3,7 +3,7 @@ package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.model.DetailModelResult;
@ -311,9 +311,9 @@ public class StdMetadataService extends SQLGeneralDAO {
            for (StdMetaDataModel metaDataModel : metadataList) {
                Select2 select2 = new Select2();
                if (metaDataModel.getDictId() != null) {
                    select2.setId(metaDataModel.getId() + Constants.COMMA + metaDataModel.getCode() + Constants.COMMA + metaDataModel.getDictId());
                    select2.setId(metaDataModel.getId() + SqlConstants.COMMA + metaDataModel.getCode() + SqlConstants.COMMA + metaDataModel.getDictId());
                } else {
                    select2.setId(metaDataModel.getId() + Constants.COMMA + metaDataModel.getCode());
                    select2.setId(metaDataModel.getId() + SqlConstants.COMMA + metaDataModel.getCode());
                }
                select2.setText(metaDataModel.getName());
                detailModelList.add(select2);
@ -333,14 +333,14 @@ public class StdMetadataService extends SQLGeneralDAO {
            Map<String,List<StdDataSetModel>> version2DataSetMap = new HashMap<>();
            String sql;
            ObjectMapper objectMapper = new ObjectMapper();
            String code = Constants.EMPTY;
            String code = SqlConstants.EMPTY;
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                code = jsonNode.get("code").asText();
            }
            Criteria criteria = getCurrentSession().createCriteria(StandardModel.class);
            StandardParamResultModel standardParam = standardService.getStandardParam(Constants.STANDARD);
            StandardParamResultModel standardParam = standardService.getStandardParam(SqlConstants.STANDARD);
            String VersionCode = standardParam.getCode();
            criteria.add(Restrictions.eq("code", VersionCode));
            List<StandardModel> standardModelList = criteria.list();
@ -369,7 +369,7 @@ public class StdMetadataService extends SQLGeneralDAO {
            }
            if (!version2DataSetMap.isEmpty()) {
                sql = Constants.EMPTY;
                sql = SqlConstants.EMPTY;
                Integer count = 1;
                Map<Integer, String> datasetIdMap = new HashMap<>();
@ -381,14 +381,14 @@ public class StdMetadataService extends SQLGeneralDAO {
                    List<StdDataSetModel> dataList = (List<StdDataSetModel>) entry.getValue();
                    datasetIdMap.put(count++, StringUtil.toString(dataList.get(0).getId()));
                    sqlMetadataCreator.equalConditionQue("datasetId", dataList.get(0).getId());
                    sql = sql + sqlMetadataCreator.selectData(version.getMetaDataTableName()) + Constants.UNION;
                    sql = sql + sqlMetadataCreator.selectData(version.getMetaDataTableName()) + SqlConstants.UNION;
                }
                BeanTransformer metadataTransformer = new BeanTransformer(StdMetaDataModel.class);
                List<StdMetaDataModel> distinctModelList = new ArrayList<>();
                if (!StringUtil.isEmpty(sql)) {
                    sql = sql.substring(0, sql.length() - Constants.UNION.length());
                    sql = sql.substring(0, sql.length() - SqlConstants.UNION.length());
                    SQLQuery sqlQuery;
                    sqlQuery = getCurrentSession().createSQLQuery(sql);
                    sqlQuery.setResultTransformer(metadataTransformer);

+ 4 - 4
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdPublisherService.java

@ -1,7 +1,7 @@
package com.yihu.ehr.standard.service.standard;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.SqlConstants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.model.DictItem;
@ -79,9 +79,9 @@ public class StdPublisherService extends SQLGeneralDAO {
        }
        if (order != null) {
            for (String key : order.keySet()) {
                if (order.get(key).equals(Constants.ASC)) {
                if (order.get(key).equals(SqlConstants.ASC)) {
                    criteria.addOrder(Order.asc(key));
                } else if (order.get(key).equals(Constants.DESC)) {
                } else if (order.get(key).equals(SqlConstants.DESC)) {
                    criteria.addOrder(Order.desc(key));
                }
            }
@ -110,7 +110,7 @@ public class StdPublisherService extends SQLGeneralDAO {
    public Result getStandardPublisher() {
        try {
            String paramSql = "select s.param_value from system_param s where s.param_key = '"+ Constants.STANDARD_ORG+"'";
            String paramSql = "select s.param_value from system_param s where s.param_key = '"+ SqlConstants.STANDARD_ORG+"'";
            Query paramQuery = getCurrentSession().createSQLQuery(paramSql);
            String publisherCode = (String) paramQuery.uniqueResult();
            Criteria criteria = getCurrentSession().createCriteria(SystemOrganization.class);

+ 0 - 14
Hos-resource/src/main/resources/spring/applicationContext.xml

@ -94,20 +94,6 @@
        <property name="poolConfig" ref="poolConfig"/>
    </bean>
    <!--Redis 会话管理器配置-->
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <property name="connectionFactory" ref="jedisConnectionFactory"/>
    </bean>
    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
        <property name="customEditors">
            <map>
                <entry key="com.yihu.ehr.framework.constrant.JobType"
                       value="com.yihu.ehr.framework.util.web.JobTypeConverter"/>
            </map>
        </property>
    </bean>
    <!--文件上传支持-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

+ 31 - 0
sdk/java/hos-client/src/main/java/com/yihu/hos/client/BrokerServerClient.java

@ -1,5 +1,19 @@
package com.yihu.hos.client;
import org.apache.http.Consts;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
 * @created Airhead 2016/8/1.
 */
@ -17,4 +31,21 @@ public class BrokerServerClient {
    public Object invokeAsync() {
        return null;
    }
    private String getBrokerServer() throws IOException {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet(host + ":10135/brokerServer");
        CloseableHttpResponse response = null;
        try {
            response = httpclient.execute(httpGet);
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            assert response != null;
            response.close();
        }
    }
}