|
@ -2,7 +2,8 @@ package com.yihu.ehr.thread;
|
|
|
|
|
|
import com.yihu.ehr.config.ThreadConfig;
|
|
|
import com.yihu.ehr.dbhelper.jdbc.DBHelper;
|
|
|
import com.yihu.ehr.util.ZipUtil;
|
|
|
import com.yihu.ehr.util.Zipper;
|
|
|
import com.yihu.ehr.util.http.HttpClientUtil;
|
|
|
import com.yihu.ehr.util.http.HttpsClientUtil;
|
|
|
import com.yihu.ehr.util.log.LogUtil;
|
|
|
import org.apache.http.NameValuePair;
|
|
@ -10,10 +11,7 @@ import org.apache.http.message.BasicNameValuePair;
|
|
|
import org.json.JSONObject;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.io.BufferedReader;
|
|
|
import java.io.File;
|
|
|
import java.io.InputStream;
|
|
|
import java.io.InputStreamReader;
|
|
|
import java.io.*;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
@ -28,6 +26,7 @@ public class UpdateThread implements Runnable {
|
|
|
private String resultString = "";
|
|
|
private String versionName = "";
|
|
|
private String versionCode = "";
|
|
|
private String downloadPath = "";
|
|
|
private String token;
|
|
|
|
|
|
@Override
|
|
@ -50,7 +49,7 @@ public class UpdateThread implements Runnable {
|
|
|
//关闭服務
|
|
|
closeService();
|
|
|
//睡眠五秒
|
|
|
Thread.sleep(5000L);
|
|
|
Thread.sleep(1000 * 60);
|
|
|
//解压
|
|
|
if (zipFile(filePath)) {
|
|
|
//启动服务
|
|
@ -82,7 +81,10 @@ public class UpdateThread implements Runnable {
|
|
|
}
|
|
|
|
|
|
private void updateVersion() {
|
|
|
String sql = "update system_param set param_value='"+versionCode+"' where param_key='VERSION'";//UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
|
|
|
if (StringUtils.isEmpty(versionCode)) {
|
|
|
versionCode = "1";
|
|
|
}
|
|
|
String sql = "update system_param set param_value='" + versionCode + "' where param_key='VERSION'";//UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
|
|
|
db.execute(sql);
|
|
|
}
|
|
|
|
|
@ -120,19 +122,19 @@ public class UpdateThread implements Runnable {
|
|
|
}
|
|
|
if (listSYSTEM != null && listSYSTEM.size() > 0) {
|
|
|
systemCode = listSYSTEM.get(0).getString("param_value");
|
|
|
}else{
|
|
|
} else {
|
|
|
String sql = "insert into system_param (id,param_key,param_value) values " +
|
|
|
"('" + UUID.randomUUID() + "'," +
|
|
|
" 'SYSTEM_CODE' ," +
|
|
|
" '"+ThreadConfig.SYSTEM_CODE+"'" +
|
|
|
" '" + ThreadConfig.SYSTEM_CODE + "'" +
|
|
|
")";
|
|
|
db.execute(sql);
|
|
|
}
|
|
|
LogUtil.info("初始化参数成功orgCode:" + orgCode + "---systemCode:" + systemCode);
|
|
|
} catch (Exception e) {
|
|
|
LogUtil.error("初始化参数失败:" + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
LogUtil.info("初始化参数成功orgCode:" + orgCode + "---systemCode:" + systemCode);
|
|
|
}
|
|
|
|
|
|
private void closeService() throws Exception {
|
|
@ -144,10 +146,12 @@ public class UpdateThread implements Runnable {
|
|
|
LogUtil.info("关闭windows服务");
|
|
|
//windows
|
|
|
String root = System.getProperty("catalina.home").replace('\\', '/');
|
|
|
String[] commandStop = {root + "\\bin\\shutdown.bat"};
|
|
|
String installPath = root.substring(0, root.lastIndexOf('/') + 1);
|
|
|
String url = installPath + ThreadConfig.TOMCAT_SERVICENAME;
|
|
|
String[] commandStop = {url + "\\bin\\shutdown.bat"};
|
|
|
|
|
|
String[] envp = {"JAVA_HOME=" + root + "\\jdk1.8.0_45", "CATALINA_HOME=" + root};
|
|
|
File workdir = new File(root + "\\bin");
|
|
|
String[] envp = {"JAVA_HOME=" + installPath + "\\jdk1.8.0_45", "CATALINA_HOME=" + url};
|
|
|
File workdir = new File(url + "\\bin");
|
|
|
|
|
|
LogUtil.info("关闭服务目录:" + commandStop[0].toString());
|
|
|
Process process = Runtime.getRuntime().exec(commandStop, envp, workdir);
|
|
@ -164,12 +168,14 @@ public class UpdateThread implements Runnable {
|
|
|
br.close();
|
|
|
} else {
|
|
|
LogUtil.info("重启linux服务");
|
|
|
Runtime.getRuntime().exec("service " + ThreadConfig.TOMCAT_SERVICENAME + " restart");
|
|
|
Runtime.getRuntime().exec("service " + ThreadConfig.TOMCAT_SERVICENAME + " stop");
|
|
|
}
|
|
|
LogUtil.info("关闭成功");
|
|
|
} catch (Exception e) {
|
|
|
LogUtil.error("关闭失败:" + e.getMessage());
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
private void startService() throws Exception {
|
|
@ -180,10 +186,12 @@ public class UpdateThread implements Runnable {
|
|
|
LogUtil.info("启动windows服务");
|
|
|
//windows
|
|
|
String root = System.getProperty("catalina.home").replace('\\', '/');
|
|
|
String[] commandStart = {root + "\\bin\\startup.bat"};
|
|
|
String installPath = root.substring(0, root.lastIndexOf('/') + 1);
|
|
|
String url = installPath + ThreadConfig.TOMCAT_SERVICENAME;
|
|
|
String[] commandStart = {url + "\\bin\\startup.bat"};
|
|
|
|
|
|
String[] envp = {"JAVA_HOME=" + root + "\\jdk1.8.0_45", "CATALINA_HOME=" + root};
|
|
|
File workdir = new File(root + "\\bin");
|
|
|
String[] envp = {"JAVA_HOME=" + installPath + "\\jdk1.8.0_45", "CATALINA_HOME=" + url};
|
|
|
File workdir = new File(url + "\\bin");
|
|
|
|
|
|
LogUtil.info("启动服务目录:" + commandStart[0].toString());
|
|
|
Process process = Runtime.getRuntime().exec(commandStart, envp, workdir);
|
|
@ -200,7 +208,7 @@ public class UpdateThread implements Runnable {
|
|
|
br.close();
|
|
|
} else {
|
|
|
LogUtil.info("启动linux服务");
|
|
|
Runtime.getRuntime().exec("service " + ThreadConfig.TOMCAT_SERVICENAME + " restart");
|
|
|
Runtime.getRuntime().exec("service " + ThreadConfig.TOMCAT_SERVICENAME + " start");
|
|
|
}
|
|
|
LogUtil.info("启动成功");
|
|
|
} catch (Exception e) {
|
|
@ -212,8 +220,8 @@ public class UpdateThread implements Runnable {
|
|
|
try {
|
|
|
String home = System.getProperty("catalina.home").replace('\\', '/');
|
|
|
String url = home.substring(0, home.lastIndexOf('/') + 1) + "tomcat8-esb-ds/webapps";
|
|
|
boolean zipResult = ZipUtil.unZip(filePath, url);
|
|
|
LogUtil.info("解压" + zipResult + ",解压路径:" + url);
|
|
|
Zipper.unzipFile(new File(filePath.trim()), url);
|
|
|
LogUtil.info("解压成功解压路径:" + url);
|
|
|
return true;
|
|
|
} catch (Exception e) {
|
|
|
LogUtil.error("解压失败:" + e.getMessage());
|
|
@ -229,13 +237,14 @@ public class UpdateThread implements Runnable {
|
|
|
// params.put("orgCode", orgCode);
|
|
|
path = getFilePath();
|
|
|
// HttpClientUtil.downFile(path, params, ThreadConfig.getURL(ThreadConfig.UPDATE_THREAD_DOWNUPDATEWAR), "", "");
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
|
params.put("systemCode", systemCode);
|
|
|
params.put("orgCode", orgCode);
|
|
|
params.put("access_token", token);
|
|
|
if (!HttpsClientUtil.downLoadFileByBase64(path, params, ThreadConfig.SERVICE_URL + ThreadConfig.UPDATE_THREAD_DOWNUPDATEWAR, ThreadConfig.SERVICE_USERNAME, ThreadConfig.SERVICE_PASSWORD)) {
|
|
|
throw new Exception("文件下载失败");
|
|
|
}
|
|
|
// Map<String, Object> params = new HashMap<String, Object>();
|
|
|
// params.put("systemCode", systemCode);
|
|
|
// params.put("orgCode", orgCode);
|
|
|
// params.put("access_token", token);
|
|
|
LogUtil.info("开始下载文件,文件下載地址在:" + ThreadConfig.SYSTEM_DOWNLOADPATH + downloadPath);
|
|
|
System.out.println(ThreadConfig.SYSTEM_DOWNLOADPATH + downloadPath);
|
|
|
// HttpClientUtil.downFile(path, new HashMap<String, Object>(), , "", "");
|
|
|
HttpClientUtil.getFile(ThreadConfig.SYSTEM_DOWNLOADPATH + downloadPath, path);
|
|
|
LogUtil.info("下载文件成功,文件保存目录:" + path);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
@ -256,7 +265,7 @@ public class UpdateThread implements Runnable {
|
|
|
List<JSONObject> listSYSTEM = db.query("select * from system_param where param_key='VERSION'");
|
|
|
if (listSYSTEM != null && listSYSTEM.size() > 0) {
|
|
|
ThreadConfig.SOFT_VERSIONCODE = listSYSTEM.get(0).getString("param_value");
|
|
|
}else{
|
|
|
} else {
|
|
|
String sql = "insert into system_param (id,param_key,param_value) values " +
|
|
|
"('" + UUID.randomUUID() + "'," +
|
|
|
" 'VERSION' ," +
|
|
@ -264,7 +273,7 @@ public class UpdateThread implements Runnable {
|
|
|
")";
|
|
|
|
|
|
db.execute(sql);
|
|
|
ThreadConfig.SOFT_VERSIONCODE="1";
|
|
|
ThreadConfig.SOFT_VERSIONCODE = "1";
|
|
|
}
|
|
|
// resultString = HttpClientUtil.doPost(ThreadConfig.SERVICE_URL + ThreadConfig.UPDATE_THREAD_GETUPDATEFLAG, params, ThreadConfig.SERVICE_USERNAME, ThreadConfig.SERVICE_PASSWORD);
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
@ -277,8 +286,13 @@ public class UpdateThread implements Runnable {
|
|
|
//不需要更新返回空 需要更新返回版本号版本名称
|
|
|
if (!StringUtils.isEmpty(resultString)) {
|
|
|
net.sf.json.JSONObject jo = net.sf.json.JSONObject.fromObject(resultString);
|
|
|
LogUtil.info("判断是否有需要更新的任务返回結果:" + resultString);
|
|
|
versionName = String.valueOf(jo.get("versionName"));
|
|
|
versionCode = String.valueOf(jo.get("versionCode"));
|
|
|
downloadPath = String.valueOf(jo.get("file"));
|
|
|
if (StringUtils.isEmpty(versionName)) {
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
} else {
|
|
|
return false;
|
|
@ -310,12 +324,29 @@ public class UpdateThread implements Runnable {
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
String cmd = "cmd /c start F:\\aaa.bat";// pass
|
|
|
getProcess();
|
|
|
}
|
|
|
|
|
|
public static boolean getProcess() {
|
|
|
boolean flag = false;
|
|
|
try {
|
|
|
//tomcat8-esb-service
|
|
|
Process ps = Runtime.getRuntime().exec(cmd);
|
|
|
ps.waitFor();
|
|
|
} catch (Exception ioe) {
|
|
|
Process p = Runtime.getRuntime().exec("cmd /c tasklist ");
|
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
|
InputStream os = p.getInputStream();
|
|
|
byte b[] = new byte[256];
|
|
|
while (os.read(b) > 0)
|
|
|
baos.write(b);
|
|
|
String s = baos.toString();
|
|
|
System.out.println(s);
|
|
|
if (s.indexOf("smss.exe") >= 0) {
|
|
|
System.out.println("yes ");
|
|
|
flag = true;
|
|
|
} else {
|
|
|
System.out.println("no ");
|
|
|
flag = false;
|
|
|
}
|
|
|
} catch (java.io.IOException ioe) {
|
|
|
}
|
|
|
return flag;
|
|
|
}
|
|
|
}
|