hzp пре 9 година
родитељ
комит
9cacc4f7e8

Разлика између датотеке није приказан због своје велике величине
+ 19 - 9
Hos-Resource-Mini/src/main/java/com.yihu.ehr/controller/SystemController.java


+ 80 - 65
Hos-Resource-Mini/src/main/java/com.yihu.ehr/service/SystemManager.java

@ -162,83 +162,98 @@ public class SystemManager implements ISystemManager {
    登录操作
    */
    @Override
    public Result loginAction(HttpSession session, String user, String password) throws Exception {
        //特殊用户
        if (user.equals("admin") && password.equals("JKZL")) {
            UserInfo obj = new UserInfo();
            obj.setLoginCode("admin");
            obj.setRealName("管理员");
            obj.setOrgCode("JKZL");
            obj.setOrgName("健康之路");
            session.setAttribute("userInfo", obj);
            return Result.success("登录成功!");
        }
    public Result loginAction(HttpSession session, String user, String password) {
        try {
            //特殊用户
            if (user.equals("admin") && password.equals("JKZL")) {
                UserInfo obj = new UserInfo();
                obj.setLoginCode("admin");
                obj.setRealName("管理员");
                obj.setOrgCode("JKZL");
                obj.setOrgName("健康之路");
                session.setAttribute("userInfo", obj);
                return Result.success("登录成功!");
            }
        //根据用户名/密码到总平台校验
        Response response = EsbHttp.loginAction(user, password);
            //根据用户名/密码到总平台校验
            Response response = EsbHttp.loginAction(user, password);
        if (response == null || response.statusCode != 200) {
            return Result.error("登录失败!网络错误或者服务器不可用。");
        }
        try {
            JSONObject obj = new JSONObject(response.body);
            if (obj.has("token"))//登录成功
            {
                String token = obj.getString("token");
                //获取用户信息
                Response re = EsbHttp.getUserInfo(user, token);
                JSONObject userObject = new JSONObject(re.body);
                UserInfo userInfo = new UserInfo();
                userInfo.setLoginCode(user);
                userInfo.setRealName(userObject.getString("realName"));
                String orgCode = "";
                String orgName = "";
                if(!userObject.get("organization").equals(null)) {
                    JSONObject orgInfo = userObject.getJSONObject("organization");
                    orgCode = orgInfo.getString("orgCode");
                    orgName = orgInfo.getString("fullName");
                    userInfo.setOrgCode(orgCode);
                    userInfo.setOrgName(orgName);
                }
                else{
                    return Result.error("该用户未配置机构!");
            if (response != null && response.getStatusCode() == 200) {
                JSONObject obj = new JSONObject(response.getBody());
                if (obj.has("token"))//登录成功
                {
                    String token = obj.getString("token");
                    //获取用户信息
                    Response re = EsbHttp.getUserInfo(user, token);
                    if (re != null && re.getStatusCode() == 200) {
                        JSONObject userObject = new JSONObject(re.getBody());
                        UserInfo userInfo = new UserInfo();
                        userInfo.setLoginCode(user);
                        userInfo.setRealName(userObject.getString("realName"));
                        String orgCode = "";
                        String orgName = "";
                        if(userObject.has("organization") && !userObject.get("organization").equals(null)) {
                            JSONObject orgInfo = userObject.getJSONObject("organization");
                            orgCode = orgInfo.getString("orgCode");
                            orgName = orgInfo.getString("fullName");
                            userInfo.setOrgCode(orgCode);
                            userInfo.setOrgName(orgName);
                        }
                        else{
                            return Result.error("该用户未配置机构!");
                        }
                        session.setAttribute("userInfo", userInfo);
                        //判断组织编码是否为空
                        String orgCodeOld = this.getSystemParam("ORG_CODE");
                        if (orgCodeOld==null || orgCodeOld.length() == 0) {
                            this.saveSystemParams("FINGER_PRINT", UUID.randomUUID().toString());
                            this.saveSystemParams("ORG_CODE", orgCode);
                            this.saveSystemParams("ORG_NAME", orgName);
                            //启动标准
                            SysConfig.getInstance().setOrgCode(orgCode);
                            Thread standardUpdateThread = new Thread(new StandardUpdateThread());
                            ThreadManage.add(ThreadManage.STANDARD_UPDATE_THREAD, standardUpdateThread);
                            ThreadManage.setUpdateInterval();
                            if (!standardUpdateThread.isAlive()) {
                                standardUpdateThread.start();
                            }
                            return Result.success("登录成功!");
                        }
                        else {
                            if (orgCodeOld.equals(orgCode)) {
                                return Result.success("登录成功!");
                            } else {
                                return Result.error("机构编码不一致!");
                            }
                        }
                    }
                    else{
                        return Result.error("获取用户信息失败!");
                    }
                }
                session.setAttribute("userInfo", userInfo);
                //判断组织编码是否为空
                String orgCodeOld = this.getSystemParam("ORG_CODE");
                if (orgCodeOld==null || orgCodeOld.length() == 0) {
                    this.saveSystemParams("FINGER_PRINT", UUID.randomUUID().toString());
                    this.saveSystemParams("ORG_CODE", orgCode);
                    this.saveSystemParams("ORG_NAME", orgName);
                    //启动标准
                    SysConfig.getInstance().setOrgCode(orgCode);
                    Thread standardUpdateThread = new Thread(new StandardUpdateThread());
                    ThreadManage.add(ThreadManage.STANDARD_UPDATE_THREAD, standardUpdateThread);
                    ThreadManage.setUpdateInterval();
                    if (!standardUpdateThread.isAlive()) {
                        standardUpdateThread.start();
                else {
                    if(obj.has("message"))
                    {
                        return Result.error("登录失败!"+obj.getString("message"));
                    }
                    return Result.success("登录成功!");
                } else {
                    if (orgCodeOld.equals(orgCode)) {
                        return Result.success("登录成功!");
                    } else {
                        return Result.error("机构编码不一致!");
                    else{
                        return Result.error("登录失败!");
                    }
                }
            }
            else {
                if(obj.has("message"))
                String msg = "登录失败。";
                if (response != null)
                {
                    return Result.error("登录失败!"+obj.getString("message"));
                }
                else{
                    return Result.error("登录失败!");
                    msg +="(错误代码:"+ response.getStatusCode() + ",错误信息:"+response.getBody()+")";
                }
                return Result.error(msg);
            }
        }
        catch (Exception ex) {
            return Result.error(ex.getMessage());

+ 18 - 19
Hos-Resource-Mini/src/main/java/com.yihu.ehr/service/standard/StandardManager.java

@ -159,31 +159,30 @@ public class StandardManager {
    private String download(String remoteVersion, String orgCode) {
        Response response = EsbHttp.download(remoteVersion, orgCode);
        try {
            if (response == null || response.statusCode != 200) {
                LogUtil.fatal("下载标准包失败,网络错误或者服务器不可用.");
                return null;
            }
            JSONObject re = new JSONObject(response.body);
            if (re.has("password")&&re.has("url")) {
                String encryptPwd = re.getString("password");
                String zipContent = re.getString("url");
                byte[] decode = Base64.decode(zipContent);
                String downloadFilePath = SysConfig.getInstance().getTempFile() + "/" + Constants.STANDARD_ZIP;
                boolean writeFile = FileUtil.writeFile(downloadFilePath, decode, "UTF-8");
                if (!writeFile) {
                    LogUtil.fatal("下载标准包失败,生成本地临时文件错误.");
            if (response != null && response.getStatusCode() == 200) {
                JSONObject re = new JSONObject(response.getBody());
                if (re.has("password")&&re.has("url")) {
                    String encryptPwd = re.getString("password");
                    String zipContent = re.getString("url");
                    byte[] decode = Base64.decode(zipContent);
                    String downloadFilePath = SysConfig.getInstance().getTempFile() + "/" + Constants.STANDARD_ZIP;
                    boolean writeFile = FileUtil.writeFile(downloadFilePath, decode, "UTF-8");
                    if (!writeFile) {
                        LogUtil.fatal("下载标准包失败,生成本地临时文件错误.");
                        return null;
                    }
                    return encryptPwd;
                }
                else{
                    LogUtil.fatal("下载标准包失败");
                    return null;
                }
                return encryptPwd;
            }
            else{
                LogUtil.fatal("下载标准包失败");
                LogUtil.fatal("下载标准包失败,网络错误或者服务器不可用.");
                return null;
            }
        } catch (Exception e) {
            LogUtil.fatal("下载标准包异常:");
            LogUtil.error(e);

+ 111 - 79
Hos-Resource-Mini/src/main/java/com.yihu.ehr/util/httpclient/EsbHttp.java

@ -10,6 +10,7 @@ import com.yihu.ehr.util.encrypt.MD5;
import com.yihu.ehr.util.log.LogUtil;
import com.yihu.ehr.util.operator.ConfigureUtil;
import com.yihu.ehr.util.operator.StringUtil;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
@ -75,23 +76,39 @@ public class EsbHttp {
    /**
     * 应用登录验证
     */
    public static String getToken() throws Exception{
        String loginAction = HttpHelper.defaultHttpUrl + "/authorizations/clients/" + HttpHelper.clientId;
        Map<String, Object> header = new HashMap<>();
        header.put("Authorization", "Basic " + HttpHelper.clientKey);
        //本地指纹
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("info", "{\"fingerprint\": \""+GetFingerprint()+"\"}");
    public static String getToken(){
        try {
            String loginAction = HttpHelper.defaultHttpUrl + "/authorizations/clients/" + HttpHelper.clientId;
            Map<String, Object> header = new HashMap<>();
            header.put("Authorization", "Basic " + HttpHelper.clientKey);
            //本地指纹
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("info", "{\"fingerprint\": \"" + GetFingerprint() + "\"}");
        Response response = HttpHelper.put(loginAction, params, header);
        JSONObject obj = new JSONObject(response.body);
        //判断是否成功
        if(obj.has("token"))
        {
            return obj.getString("token");
            Response response = HttpHelper.put(loginAction, params, header);
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                JSONObject obj = new JSONObject(response.getBody());
                //判断是否成功
                if (obj.has("token")) {
                    return obj.getString("token");
                } else {
                    LogUtil.info("返回未包含token。");
                    return null;
                }
            } else {
                String msg = "获取Token失败。";
                if (response != null) {
                    msg += "(错误代码:" + response.getStatusCode() + ",错误信息:" + response.getBody() + ")";
                }
                LogUtil.info(msg);
                return null;
            }
        }
        else{
            throw new Exception("获取token失败!");
        catch (Exception ex)
        {
            LogUtil.info("获取Token失败," + ex.getMessage());
            return null;
        }
    }
@ -108,48 +125,65 @@ public class EsbHttp {
            paramMap.put("token", token);
            String fillMiningMethod = HttpHelper.defaultHttpUrl + "/simplified-esb/changeFillMiningStatus";
            Response response = HttpHelper.post(fillMiningMethod, paramMap);
            if (response == null || response.statusCode != 200) {
                LogUtil.fatal("修改远程补传状态失败,网络错误或者服务器不可用.");
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                LogUtil.info("修改远程补传状态成功。");
            }
            else{
                String msg = "修改远程补传状态失败。";
                if (response != null)
                {
                    msg +="(错误代码:"+ response.getStatusCode() + ",错误信息:"+response.getBody()+")";
                }
                LogUtil.info(msg);
            }
        }
        catch (Exception ex)
        {
            LogUtil.fatal("修改远程补传状态失败."+ex.getMessage());
            LogUtil.info("修改远程补传状态失败." + ex.getMessage());
        }
    }
    /**
     * 获取公钥
     */
    public static String getPublicKey() throws Exception{
        String token = getToken();
        if (SysConfig.getInstance().getPublicKey() != null) {
            return SysConfig.getInstance().getPublicKey();
        }
        String orgCode = SysConfig.getInstance().getOrgCode();
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("org_code", orgCode);
        paramMap.put("token", token);
        String publicKeyMethod = HttpHelper.defaultHttpUrl + "/organizations/"+orgCode+"/key";
        Response response = HttpHelper.get(publicKeyMethod, paramMap);
        if (response == null || response.statusCode != 200) {
            LogUtil.fatal("获取公钥失败.网络错误或者服务器不可用.");
            return null;
        }
    public static String getPublicKey(){
        try {
            JSONObject json = new JSONObject(response.body);
            if(json.has("publicKey"))
            {
                String key = json.getString("publicKey");
                SysConfig.getInstance().setPublicKey(key);
                return key;
            String token = getToken();
            if (SysConfig.getInstance().getPublicKey() != null) {
                return SysConfig.getInstance().getPublicKey();
            }
            String orgCode = SysConfig.getInstance().getOrgCode();
            Map<String, Object> paramMap = new HashMap<>();
            paramMap.put("org_code", orgCode);
            paramMap.put("token", token);
            String publicKeyMethod = HttpHelper.defaultHttpUrl + "/organizations/"+orgCode+"/key";
            Response response = HttpHelper.get(publicKeyMethod, paramMap);
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                JSONObject json = new JSONObject(response.getBody());
                if(json.has("publicKey"))
                {
                    String key = json.getString("publicKey");
                    SysConfig.getInstance().setPublicKey(key);
                    return key;
                }
                else{
                    LogUtil.info("获取公钥失败,返回未包含publicKey。");
                    return null;
                }
            }
            else{
                LogUtil.fatal("获取公钥失败");
                String msg = "获取公钥失败。";
                if (response != null)
                {
                    msg +="(错误代码:"+ response.getStatusCode() + ",错误信息:"+response.getBody()+")";
                }
                LogUtil.info(msg);
                return null;
            }
        } catch (Exception e) {
            LogUtil.fatal(e.getMessage());
            LogUtil.info(e.getMessage());
            return null;
        }
    }
@ -165,12 +199,20 @@ public class EsbHttp {
            params.put("org_code", orgCode);
            params.put("token", token);
            Response response = HttpHelper.get(versionMethod, params);
            if (response == null || response.statusCode != 200) {
                LogUtil.fatal("获取健康云平台标准版本号失败,网络错误或者服务器不可用.");
                return null;
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                return response.getBody();
            }
            else{
                String msg = "获取健康云平台标准版本号失败";
                if (response != null)
                {
                    msg +="(错误代码:"+ response.getStatusCode() + ",错误信息:"+response.getBody()+")";
                }
                LogUtil.info(msg);
            return response.body;
                return null;
            }
        } catch (Exception e) {
            LogUtil.fatal("获取远程版本号异常");
            LogUtil.error(e);
@ -190,7 +232,7 @@ public class EsbHttp {
                LogUtil.info("注册病人信息请求失败:病人无身份证,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                return false;
            }
            String registerMethod = HttpHelper.defaultHttpUrl + "/patient/"+idCord;
            String registerMethod = HttpHelper.defaultHttpUrl + "/patients/"+idCord;
            if (StringUtil.isEmpty(data)) {
                LogUtil.info("注册病人信息请求失败:无具体病人信息,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                return false;
@ -200,27 +242,19 @@ public class EsbHttp {
            paramMap.put("json", data);
            paramMap.put("token", token);
            Response response = HttpHelper.post(registerMethod, paramMap);
            if (response == null) {
                LogUtil.info("注册病人信息请求失败:响应response为null,patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
            }
            if (response.statusCode != 200) {
                LogUtil.info("注册病人信息请求失败.错误代码:" + response.statusCode + "patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                LogUtil.info("注册病人信息成功。patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
                return true;
            }
            ObjectMapper mapper = new ObjectMapper();
            JsonNode rootNode = mapper.readValue(response.body, JsonNode.class);
            JsonNode codeNode = rootNode.get("code");
            JsonNode messageNode = rootNode.get("message");
            String result = codeNode.asText();
            String message = messageNode.asText();
            if (!result.equals("0") || "true".equals(message)) {
                LogUtil.info("注册病人信息请求失败.失败信息:" + message + rootNode.get("message").asText() + "patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
            else{
                String msg = "注册病人信息请求失败。patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo();
                if(response != null)
                {
                    msg +="(错误代码:"+ response.getStatusCode() + ",错误信息:"+response.getBody()+")";
                }
                LogUtil.info(msg);
                return false;
            } else {
                LogUtil.info("注册病人信息成功,patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
                return true;
            }
        }
        catch (Exception e)
@ -244,25 +278,23 @@ public class EsbHttp {
            formParams.add(new BasicNameValuePair("org_code", SysConfig.getInstance().getOrgCode()));
            formParams.add(new BasicNameValuePair("token", token));
            Response response = HttpHelper.postFile(uploadMethod, formParams, file.getAbsolutePath());
            if (response == null) {
                LogUtil.fatal("上传病人档案请求失败,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
                return false;
            }
            if (response.statusCode != 200) {
                LogUtil.fatal("上传病人档案请求失败,错误代码:" + response.statusCode + ",patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
                return false;
            }
            String result = response.body;
            if (!result.equals("true")) {
                LogUtil.fatal("上传病人档案失败,错误代码:" + result + ",patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
                return false;
            } else {
            if (response != null && response.getStatusCode() == HttpStatus.SC_OK) {
                LogUtil.info("上传病人档案成功,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
                return true;
            }
            else {
                String msg = "上传病人档案请求失败,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo();
        } catch (Exception e) {
                if (response != null)
                {
                    msg +="(错误代码:"+ response.getStatusCode() + ",错误信息:"+response.getBody()+")";
                }
                LogUtil.info(msg);
                return false;
            }
        }
        catch (Exception e) {
            LogUtil.fatal("上传病人档案异常,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
            LogUtil.error(e);
            return false;
@ -276,7 +308,7 @@ public class EsbHttp {
    public static Response download(String remoteVersion, String orgCode) {
        try {
            String token = getToken();
            String downLoadMethod = HttpHelper.defaultHttpUrl + "/"+orgCode+"/source";
            String downLoadMethod = HttpHelper.defaultHttpUrl + "/adaptions/"+orgCode+"/source";
            Map<String, Object> params = new HashMap<>();
            params.put("version_code", remoteVersion);
            params.put("org_code", orgCode);

+ 2 - 2
Hos-Resource-Mini/src/main/java/com.yihu.ehr/util/httpclient/HttpClientUtil.java

@ -126,7 +126,7 @@ public class HttpClientUtil {
            } else {
                response = httpclient.execute(request);
            }
            re.setStatusCode(200);
            re.setStatusCode(response.getStatusLine().getStatusCode());
            re.setBody(EntityUtils.toString(response.getEntity(), "UTF-8"));
        } catch (Exception e) {
            re.setStatusCode(201);
@ -185,7 +185,7 @@ public class HttpClientUtil {
            } else {
                response = httpClient.execute(httpPost);
            }
            re.setStatusCode(200);
            re.setStatusCode(response.getStatusLine().getStatusCode());
            re.setBody(EntityUtils.toString(response.getEntity(), "UTF-8"));;
        } catch (Exception e) {
            re.setStatusCode(201);

+ 1 - 1
Hos-Resource-Mini/src/main/java/com.yihu.ehr/util/httpclient/HttpHelper.java

@ -139,7 +139,7 @@ public class HttpHelper {
    }
    public static Response postFile(String url, List<NameValuePair> formParams, String filePath)
    {
        return HttpClientUtil.postFile(url, filePath, formParams, defaultHttpUser,defaultHttpPassword);
        return HttpClientUtil.postFile(url, filePath, formParams, defaultSSL,defaultHttpUser,defaultHttpPassword);
    }
    /************************** Put方法 ******************************************/
    public static Response put(String url)

+ 2 - 2
Hos-Resource-Mini/src/main/java/com.yihu.ehr/util/httpclient/Response.java

@ -14,8 +14,8 @@ public class Response {
        this.body = body;
    }
    public int statusCode;
    public String body;
    private int statusCode;
    private String body;
    public int getStatusCode() {