Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/stdxyxyfszlyy/OrgUserDataWebServiceManagerImpl.java =================================================================== diff -u --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/stdxyxyfszlyy/OrgUserDataWebServiceManagerImpl.java (revision 0) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/stdxyxyfszlyy/OrgUserDataWebServiceManagerImpl.java (revision 25011) @@ -0,0 +1,238 @@ +package com.forgon.disinfectsystem.webservice.datasync.stdxyxyfszlyy; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebService; + +import net.sf.json.JSONObject; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; + +import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.service.OrgUnitManager; +import com.forgon.directory.service.SysUserManager; +import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo; +import com.forgon.disinfectsystem.datasynchronization.model.UserVo; +import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager; +import com.forgon.log.service.LogManager; +import com.forgon.security.model.User; + + +@WebService(targetNamespace="urn:hl7-org:v3") +public class OrgUserDataWebServiceManagerImpl implements OrgUserDataWebServiceManager { + + private final Logger logger = Logger.getLogger(this.getClass()); + + /** + * 数据类型,即科室或人员 + */ + public final static String DATATYPE_DEPARTMENT = "DEPARTMENT"; + public final static String DATATYPE_EMPLOYEE = "EMPLOYEE"; + public final static String DATATYPE_ERROR = "ERROR"; + + /** + * 成功与失败对应的编码 + */ + public final static String RESULT_CODE_SUCCESS = "AA"; + public final static String RESULT_CODE_FAILURE = "AE"; + /** + * 注册科室信息 + */ + public final static String ACTION_a_dept = "a_dept"; + + /** + * 注册人员信息 + */ + public final static String ACTION_a_employee = "a_employee"; + + /** + * 更新科室信息 + */ + public final static String ACTION_u_dept = "u_dept"; + + /** + * 更新人员信息 + */ + public final static String ACTION_u_employee = "u_employee"; + + /** + * 删除科室信息 + */ + public final static String ACTION_d_dept = "d_dept"; + + /** + * 删除人员信息 + */ + public final static String ACTION_d_employee = "d_employee"; + + @Autowired + private DataSynchronizationManager dataSynchronizationManager; + + @Autowired + private OrgUnitManager orgUnitManager; + + @Autowired + private SysUserManager sysUserManager; + + @Autowired + private LogManager appLogManager; + + @Override + @WebMethod + public String HIPMessageServer(@WebParam(name = "action") String action , @WebParam(name = "message") String message) { + logger.debug("OrgUserDataWebServiceManagerImpl.HIPMessageServer action=" + action + ",message=" + message); + String result = null; + switch (action) { + case ACTION_a_dept: + result = dealOrgUnit(message , action); + break; + case ACTION_u_dept: + result = dealOrgUnit(message , action); + break; + case ACTION_a_employee: + result = dealUser(message , action); + break; + case ACTION_u_employee: + result = dealUser(message , action); + break; + case ACTION_d_dept: + String resultMessage = "暂不处理科室删除"; + JSONObject json = parseMessage(message, action); + String messageId = json != null ? json.optString("messageId") : ""; + String businessTime = json != null ? json.optString("businessTime") : ""; + result = constructReturnValue(DATATYPE_DEPARTMENT, messageId, + businessTime, "", RESULT_CODE_FAILURE, resultMessage); + break; + case ACTION_d_employee: + resultMessage = "暂不处理人员删除"; + json = parseMessage(message, action); + messageId = json != null ? json.optString("messageId") : ""; + businessTime = json != null ? json.optString("businessTime") : ""; + result = constructReturnValue(DATATYPE_EMPLOYEE, messageId, + businessTime, "", RESULT_CODE_FAILURE, resultMessage); + break; + default: + resultMessage = "不支持的action参数值:" + action; + json = parseMessage(message, action); + messageId = json != null ? json.optString("messageId") : ""; + businessTime = json != null ? json.optString("businessTime") : ""; + result = constructReturnValue(DATATYPE_ERROR, messageId, + businessTime, "", RESULT_CODE_FAILURE, resultMessage); + break; + } + logger.debug(result); + return result; + } + + private String dealOrgUnit(String message , String action) { + JSONObject jsonObject = null; + try{ + jsonObject = (JSONObject)CssdUtils.xml2JsonCommon(CssdUtils.getXmlNodeContentByTagName(message, action + "_request")); + OrgUnitVo vo = new OrgUnitVo(); + if(StringUtils.equals(action, ACTION_a_dept)){ + vo.setDeptCode(jsonObject.optString("dept_code")); + vo.setDeptName(jsonObject.optString("dept_name")); + vo.setParentCoding(jsonObject.optString("super_code")); + }else{ + vo.setDeptCode(jsonObject.optJSONArray("whereBean").optString(0)); + vo.setDeptName(jsonObject.optJSONObject("setBean").optString("dept_name")); + vo.setParentCoding(jsonObject.optJSONObject("setBean").optString("super_code")); + } + OrgUnitVo[] vos = new OrgUnitVo[1]; + vos[0] = vo; + dataSynchronizationManager.processSyncOrgUnitData(vos); + //回查此科室的id + OrgUnit orgUnit = orgUnitManager.getByCode(vo.getDeptCode()); + return constructReturnValue(DATATYPE_EMPLOYEE, jsonObject.optString("messageId"), + jsonObject.optString("businessTime"), String.valueOf(orgUnit.getId()), RESULT_CODE_SUCCESS, "成功"); + }catch(Exception e){ + if(jsonObject == null){ + return constructReturnValue(DATATYPE_EMPLOYEE, "", + "", "", RESULT_CODE_FAILURE, "message数据格式错误"); + }else{ + return constructReturnValue(DATATYPE_EMPLOYEE, jsonObject.optString("messageId"), + jsonObject.optString("businessTime"), "", RESULT_CODE_FAILURE, "处理科室接口数据报错"); + } + } + } + + private String dealUser(String message , String action) { + JSONObject jsonObject = null; + try{ + jsonObject = (JSONObject)CssdUtils.xml2JsonCommon(CssdUtils.getXmlNodeContentByTagName(message, action + "_request")); + UserVo vo = new UserVo(); + if(StringUtils.equals(action, ACTION_a_employee)){ + vo.setCoding(jsonObject.optString("emp_code")); + vo.setName(jsonObject.optString("emp_name")); + vo.setDeptCode(jsonObject.optString("dept_code")); + }else{ + vo.setCoding(jsonObject.optJSONArray("whereBean").optString(0)); + vo.setName(jsonObject.optJSONObject("setBean").optString("emp_name")); + vo.setDeptCode(jsonObject.optJSONObject("setBean").optString("dept_code")); + } + UserVo[] vos = new UserVo[1]; + vos[0] = vo; + dataSynchronizationManager.processSyncUserData(vos); + //回查此人员的id + User user = sysUserManager.getUserByproperty("name", vo.getCoding()); + return constructReturnValue(DATATYPE_EMPLOYEE, jsonObject.optString("messageId"), + jsonObject.optString("businessTime"), String.valueOf(user.getId()), RESULT_CODE_SUCCESS, "成功"); + }catch(Exception e){ + if(jsonObject == null){ + return constructReturnValue(DATATYPE_EMPLOYEE, "", + "", "", RESULT_CODE_FAILURE, "message数据格式错误"); + }else{ + return constructReturnValue(DATATYPE_EMPLOYEE, jsonObject.optString("messageId"), + jsonObject.optString("businessTime"), "", RESULT_CODE_FAILURE, "处理人员接口数据报错"); + } + } + } + + /** + * 构造返回结果 + * @return 示例如下: + * + + 3423 + 2018-08-30T00:00:00.000+08:00 + 4028c381659d68e301659d92167b000c + AA + 成功 + + + */ + private String constructReturnValue(String dataType , String messageId,String businessTime + ,String responseId ,String resultMark ,String resultMsg){ + //String businessTime = "2018-08-30T00:00:00.000+08:00"; + String result = String.format("" + + "" + + "%s" + + "%s" + + "%s" + + "%s" + + "%s" + + "" + + "" + , dataType , messageId , businessTime, responseId, resultMark, resultMsg, dataType); + return result; + } + + /** + * 根据action对入参的message进行解析 + * @param message + * @param action + * @return + */ + private JSONObject parseMessage(String message , String action){ + try{ + JSONObject jsonObject = (JSONObject)CssdUtils.xml2JsonCommon(CssdUtils.getXmlContentByTagName(message, action + "_request")); + return jsonObject; + }catch(Exception e){ + return new JSONObject(); + } + } + +} Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/stdxyxyfszlyy/OrgUserDataWebServiceManager.java =================================================================== diff -u --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/stdxyxyfszlyy/OrgUserDataWebServiceManager.java (revision 0) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/stdxyxyfszlyy/OrgUserDataWebServiceManager.java (revision 25011) @@ -0,0 +1,36 @@ +package com.forgon.disinfectsystem.webservice.datasync.stdxyxyfszlyy; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebService; + +/** + * 汕大肿瘤科室人员数据webserivce + * @author shuyongfu + * @since 2018-11-22 + * + */ +@WebService +public interface OrgUserDataWebServiceManager { + + + /** + * 调用接口推送科室、 人员数据 + * @param action 入参: + * @param message 入参: + + * @return 出参: + + 3423 + 2018-08-30T00:00:00.000+08:00 + 4028c381659d68e301659d92167b000c + AA + 成功 + + + * + */ + @WebMethod + public String HIPMessageServer(@WebParam(name = "action") String action , @WebParam(name = "message") String message); + +} Index: ssts-web/src/main/resources/spring/projects/stdxyxyfszlyy/webservice-cxf.xml =================================================================== diff -u --- ssts-web/src/main/resources/spring/projects/stdxyxyfszlyy/webservice-cxf.xml (revision 0) +++ ssts-web/src/main/resources/spring/projects/stdxyxyfszlyy/webservice-cxf.xml (revision 25011) @@ -0,0 +1,27 @@ + + + + + + + + + + + + + \ No newline at end of file Index: ssts-web/src/main/webapp/WEB-INF/web-stdxyxyfszlyy.xml =================================================================== diff -u --- ssts-web/src/main/webapp/WEB-INF/web-stdxyxyfszlyy.xml (revision 0) +++ ssts-web/src/main/webapp/WEB-INF/web-stdxyxyfszlyy.xml (revision 25011) @@ -0,0 +1,392 @@ + + + + SterileSupplySystem-standard + + + reload_interval_in_minutes + 30 + + + + contextConfigLocation + classpath*:spring/applicationContext-blank.xml + + + + locatorFactorySelector + classpath*:beanRefContext.xml + + + + parentContextKey + com.forgon.portal + + + + + + springSecurityFilterChain + org.springframework.web.filter.DelegatingFilterProxy + + + + springSecurityFilterChain + /* + + + + EncodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + encoding + UTF-8 + + + + + resetPasswordFilter + com.forgon.security.filter.ResetPasswordFilter + + toUrl + /logon.jsp + + + + + + + versionManagerFilter + com.forgon.register.filter.VersionManagerFilter + + noFilterUrl + /ext-4.2.3/;/buttjoint/;/qualitymonitoringWithNoLogon/;/debug/;/disinfectsystem/config/;/disinfectsystem/common/;/disinfectSystem/fileUploadServlet;/CodeImageServlet;/fckeditor/;/UserUpLoadFiles/;/openSystemMainPage.jsp;/logon.jsp;/favicon.ico;/js/;/common/taglibs.jsp;/jquery/;/ext/;/dwr/;/images/;/styles/;/scripts/;/wap/index.jsp;/themes/;/services/;/HIP/;/ikey/;/mobileClient/;/disinfectSystem/sterilization/sterilizationRecordAction!uploadSterilizationRecordPic.do/;/disinfectSystem/printBarcodeAction!printBarcodeImage.do/;/servlets/image + + + + + + + struts2 + org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter + + + + hibernateFilter + org.springframework.orm.hibernate4.support.OpenSessionInViewFilter + + + + EncodingFilter + /* + + + + hibernateFilter + /* + + + + + + versionManagerFilter + /* + + + + struts2 + *.do + + + + + + + com.forgon.servlet.ForgonServletContextListener + + + + + org.springframework.web.context.ContextLoaderListener + + + + + + org.springframework.web.context.request.RequestContextListener + + + + + com.forgon.tools.listener.SingletonSpringApplicationContextListener + + + + + + + org.springframework.security.web.session.HttpSessionEventPublisher + + + com.forgon.oa.onlineusers.listener.SessionInvalidationListener + + + + dwr-invoker + org.directwebremoting.servlet.DwrServlet + + debug + true + + + classes + java.lang.Object + + + activeReverseAjaxEnabled + true + + + maxWaitAfterWrite + 500 + + + crossDomainSessionSecurity + false + + + scriptCompressed + true + + + compressionLevel + 47 + + + + + spring-mvc + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + /WEB-INF/spring-mvc-servlet.xml + + 1 + + + + fileDownLoad + com.forgon.filedownload.servlet.FileDownLoadServlet + + + + CodeImageServlet + com.forgon.security.servlet.CodeImageServlet + + + + CodeImageServlet + /CodeImageServlet + + + + + JRHTMLServlet + org.xinyunfei.web.JRHTMLServlet + + + JRHTMLServlet + /JRHTMLServlet + + + + + ImageServlet + net.sf.jasperreports.j2ee.servlets.ImageServlet + + + + ImageServlet + /servlets/image + + + + DisplayChart + org.jfree.chart.servlet.DisplayChart + + + + DisplayChart + /DisplayChart + + + + + + + + Connector + com.fredck.FCKeditor.connector.ConnectorServlet + + baseDir + /UserUpLoadFiles/ + + + debug + false + + 1 + + + + SimpleUploader + com.fredck.FCKeditor.uploader.SimpleUploaderServlet + + baseDir + /UserUpLoadFiles/ + + + debug + false + + + enabled + true + + + AllowedExtensionsFile + + + + DeniedExtensionsFile + php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi + + + AllowedExtensionsImage + jpg|gif|jpeg|png|bmp + + + DeniedExtensionsImage + + + + AllowedExtensionsFlash + swf|fla + + + DeniedExtensionsFlash + + + 1 + + + + cxf + cxf + Apache CXF Endpoint + org.apache.cxf.transport.servlet.CXFServlet + 1 + + + uploadImageServlet + com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.servlet.UploadServlet + + + uploadImageServlet + /disinfectSystem/fileUploadServlet + + + Connector + /fckeditor/editor/filemanager/browser/default/connectors/jsp/connector + + + + SimpleUploader + /fckeditor/editor/filemanager/upload/simpleuploader + + + + + dwr-invoker + /dwr/* + + + + fileDownLoad + /attachfiles/fileDownLoad + + + + spring-mvc + *.mhtml + + + + cxf + /services/* + + + + cxf + /HIP/* + + + + http://www.springmodules.org/tags/commons-validator + /WEB-INF/tlds/spring-commons-validator.tld + + + + http://www.forgon.com/interceptString + /WEB-INF/tlds/interceptStringTag.tld + + + + http://www.forgon.com/tags-operation + /WEB-INF/tlds/operation.tld + + + + http://www.forgon.com/tags-bean + /WEB-INF/tlds/attachfile.tld + + + + + javax.servlet.jsp.jstl.fmt.localizationContext + resources/oa + + + + logon.jsp + + + + 480 + + + + 403 + /casfailed.jsp + + + 404 + /pagenotfound.jsp + + \ No newline at end of file Index: ssts-web/build.gradle =================================================================== diff -u -r24608 -r25011 --- ssts-web/build.gradle (.../build.gradle) (revision 24608) +++ ssts-web/build.gradle (.../build.gradle) (revision 25011) @@ -328,7 +328,7 @@ println "运行任务5:prepareWebXmlFile:准备web.xml文件,使用标准的或者项目定制的web.xml文件" // web.xml文件名的后缀 def suffix = 'standard' - if (projectName == 'zd5y' || projectName == 'cszxyy'){ + if (projectName == 'zd5y' || projectName == 'cszxyy' || projectName == 'stdxyxyfszlyy'){ suffix = projectName } Index: ssts-web/src/main/resources/spring/security/applicationContext-acegi-security-standard.xml.back =================================================================== diff -u -r24869 -r25011 --- ssts-web/src/main/resources/spring/security/applicationContext-acegi-security-standard.xml.back (.../applicationContext-acegi-security-standard.xml.back) (revision 24869) +++ ssts-web/src/main/resources/spring/security/applicationContext-acegi-security-standard.xml.back (.../applicationContext-acegi-security-standard.xml.back) (revision 25011) @@ -63,6 +63,7 @@ + Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/common/CssdUtils.java =================================================================== diff -u -r24811 -r25011 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/common/CssdUtils.java (.../CssdUtils.java) (revision 24811) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/common/CssdUtils.java (.../CssdUtils.java) (revision 25011) @@ -1,13 +1,16 @@ package com.forgon.disinfectsystem.common; import java.io.BufferedReader; +import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.io.StringReader; +import java.io.StringWriter; +import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; @@ -18,30 +21,49 @@ import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.Scanner; +import java.util.Set; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; import net.sf.json.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.xml.XMLSerializer; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; +import org.apache.http.NameValuePair; +import org.apache.http.ParseException; +import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.params.BasicHttpParams; +import org.apache.http.params.HttpConnectionParams; +import org.apache.http.params.HttpParams; import org.apache.http.util.EntityUtils; import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; +import com.fasterxml.jackson.core.JsonParser.Feature; +import com.fasterxml.jackson.databind.ObjectMapper; import com.forgon.Constants; import com.forgon.directory.model.BarcodeDevice; import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseInstanceUtils; @@ -68,6 +90,7 @@ import com.forgon.tools.string.StringTools; import com.forgon.tools.util.ConfigUtils; import com.forgon.tools.util.PathUtils; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl; /*** * @@ -507,8 +530,9 @@ * @param remark 需要追加的备注信息 */ public static void appendRemarkOfInvoicePlan(InvoicePlan invoicePlan, String remark){ - if(invoicePlan == null || StringUtils.isBlank(remark)) + if(invoicePlan == null || StringUtils.isBlank(remark)){ return; + } StringBuilder sb = new StringBuilder(StringUtils.defaultString(invoicePlan .getRemark())); if (sb.length() > 0) { @@ -746,13 +770,124 @@ /** * 执行post的http请求 * @param url请求地址 - * @param param 输入参数 + * @param param 输入参数:示例如arg1=value1&arg2=value2&arg3=value3 * @param charset 字符编码集 * @return * @throws Exception */ + public static String sendPostRequest(String url, String params) { + logger.debug("sendPostRequest:url="+ url +",params="+ params); + return sendPostRequest(url, params , null); + } + + /** + * 执行post的http请求 + * @param url请求地址 + * @param param 输入参数:示例如arg1=value1&arg2=value2&arg3=value3 + * @param charset 字符编码集 + * @return + * @throws Exception + */ public static String sendPostRequest(String url, String params, String charset) { logger.debug("sendPostRequest:url="+ url +",params="+ params +",charset="+ charset); + PrintWriter out = null; + + BufferedReader in = null; + + String result = ""; + + try { + + URL realUrl = new URL(url); + + URLConnection conn = realUrl.openConnection(); + + conn.setRequestProperty("accept", "*/*"); + + conn.setRequestProperty("connection", "Keep-Alive"); + + conn.setRequestProperty("user-agent", + + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + + conn.setDoOutput(true); + + conn.setDoInput(true); + + out = new PrintWriter(conn.getOutputStream()); + + + out.print(params); + + out.flush(); + + //如果指定了字符编码集,则输入读取需指定,否则默认 + if(StringUtils.isNotBlank(charset)){ + + in = new BufferedReader( + + new InputStreamReader(conn.getInputStream() , charset)); + }else{ + in = new BufferedReader( + + new InputStreamReader(conn.getInputStream())); + } + + String line; + + while ((line = in.readLine()) != null) { + + result += line; + + } + logger.debug("result="+ result); + } catch (Exception e) { + + logger.error("出现异常!"+e); + + e.printStackTrace(); + + } + + finally{ + + try{ + + if(out!=null){ + + out.close(); + + } + + if(in!=null){ + + in.close(); + + } + + } + + catch(IOException ex){ + + ex.printStackTrace(); + + } + + } + + return result; + } + + /** + * 执行post的http请求 + * @param url请求地址 + * @param params 输入参数 + * @param charset 字符编码集 + * @return + * @throws Exception + */ + public static String sendPostRequest(String url, Map params, String charset) { + logger.debug("sendPostRequest:url="+ url +",params="+ params +",charset="+ charset); PrintWriter out = null; BufferedReader in = null; @@ -786,7 +921,7 @@ in = new BufferedReader( - new InputStreamReader(conn.getInputStream())); + new InputStreamReader(conn.getInputStream() , charset)); String line; @@ -841,88 +976,125 @@ * @return * @throws Exception */ - public static String sendPostRequest(String url, Map params, String charset) { - PrintWriter out = null; + public static String sendRequestByHttpPost(String url, Map params, String charset) { + logger.debug("sendRequestByHttpPost="+ url +",params="+ params +",charset="+ charset); + String result = null; + HttpPost post = new HttpPost(url); + List postParams = new ArrayList(); + if(params != null && params.size() > 0){ + for (String key : params.keySet()) { + postParams.add(new BasicNameValuePair(key, params.get(key))); + } + } + try { + post.setEntity(new UrlEncodedFormEntity(postParams, charset)); + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + HttpParams httpParameters = new BasicHttpParams(); + HttpConnectionParams.setConnectionTimeout(httpParameters, 30*1000);//设置请求超时10秒 + HttpConnectionParams.setSoTimeout(httpParameters, 30*1000); //设置等待数据超时10秒 + HttpConnectionParams.setSocketBufferSize(httpParameters, 8192); - BufferedReader in = null; + HttpResponse response = null; + try { + response = new DefaultHttpClient(httpParameters).execute(post); + } catch (ClientProtocolException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if(response != null && response.getStatusLine().getStatusCode() == 200){ + try { + result = EntityUtils.toString(response.getEntity()); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + return result; + } - String result = ""; - - try { - - URL realUrl = new URL(url); - - URLConnection conn = realUrl.openConnection(); - - conn.setRequestProperty("accept", "*/*"); - - conn.setRequestProperty("connection", "Keep-Alive"); - - conn.setRequestProperty("user-agent", - - "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); - - conn.setDoOutput(true); - - conn.setDoInput(true); - - out = new PrintWriter(conn.getOutputStream()); - - - out.print(params); - - out.flush(); - - in = new BufferedReader( - - new InputStreamReader(conn.getInputStream())); - - String line; - - while ((line = in.readLine()) != null) { - - result += line; - - } - logger.debug("result="+ result); - } catch (Exception e) { - - logger.error("出现异常!"+e); - - e.printStackTrace(); - + /** + * http post json请求 + * @param url + * @param json + * @return + */ + public static JSONObject sendJSONRequestByHttpPost(String url,JSONObject json){ + HttpClient client = new DefaultHttpClient(); + HttpPost post = new HttpPost(url); + JSONObject response = null; + try { + StringEntity s = new StringEntity(json.toString()); + s.setContentEncoding("UTF-8"); + s.setContentType("application/json");//发送json数据需要设置contentType + post.setEntity(s); + HttpResponse res = client.execute(post); + if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ + String result = EntityUtils.toString(res.getEntity());// 返回json格式: + //测试数据(仅用于本地测试) + /*result = "{" + +"\"code\": \"0000\"," + +"\"fundProjects\": [" + +"{" + +"\"fundCards\": [" + +"{" + +"\"balanceAmount\": 3266045.1," + +"\"budgetAmount\": 3288000," + +"\"cardNo\": \"81530028\"," + +"\"expendAmount\": 1291," + +"\"freezeAmount\": 20663.9," + +"\"fundCategory\": \"1\"," + +"\"fundSubjects\": [" + +"{" + +"\"balanceAmount\": 87468.95," + +"\"budgetAmount\": 2256300," + +"\"coperator\": \"项目预算\"," + +"\"expendAmount\": 2146728.15," + +"\"freezeAmount\": 22102.9," + +"\"subjectCode\": \"0018\"," + +"\"subjectName\": \"材料费\"" + +"}," + +"{" + +"\"balanceAmount\": 1934.44," + +"\"budgetAmount\": 1934.44," + +"\"coperator\": \"项目预算\"," + +"\"expendAmount\": 1934.44," + +"\"freezeAmount\": 0," + +"\"subjectCode\": \"0073\"," + +"\"subjectName\": \"其他\"" + +"}" + +"]," + +"\"status\": \"0\"" + +"}" + +"]," + +"\"orgManagerCode\": \"8329\"," + +"\"orgManagerName\": \"刘奕志\"," + +"\"projectCode\": \"3030901003053\"," + +"\"projectName\": \"自体iPS来源的RPE移植后眼炎症反应的机理和干预研究\"," + +"\"projectSource\": \"6\"" + +"}" + +"]," + +"\"message\": \"请求成功!\"" + +"}";*/ + response = JSONObject.fromObject(result); } + } catch (Exception e) { + throw new RuntimeException(e); + } + return response; + } - finally{ - - try{ - - if(out!=null){ - - out.close(); - - } - - if(in!=null){ - - in.close(); - - } - - } - - catch(IOException ex){ - - ex.printStackTrace(); - - } - - } - - return result; - } - /** * 执行post的http请求(请求参数为xml) * @param url 请求地址 @@ -955,35 +1127,7 @@ return result; } - /** - * http post json请求 - * @param url - * @param json - * @return - */ - public static JSONObject sendJSONRequestByHttpPost(String url,JSONObject json){ - HttpClient client = new DefaultHttpClient(); - HttpPost post = new HttpPost(url); - JSONObject response = null; - try { - StringEntity s = new StringEntity(json.toString()); - s.setContentEncoding("UTF-8"); - s.setContentType("application/json");//发送json数据需要设置contentType - post.setEntity(s); - HttpResponse res = client.execute(post); - if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ - String result = EntityUtils.toString(res.getEntity()); - response = JSONObject.fromObject(result); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - return response; - } - - - /** * 获取包定义的材料总和 * @param td * @param totalDiposableGoods 是否统计耗材 @@ -1268,6 +1412,26 @@ } /** + * 从xml格式的文本中取出某个标签的内容 + * @param xmlString xml文本 + * @param tagName xml标签名 + * @return + */ + public static String getXmlNodeContentByTagName(String xmlString , String tagName){ + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + DocumentBuilder db; + try { + db = dbf.newDocumentBuilder(); + Document doc = db.parse(new InputSource(new StringReader(xmlString))); + return getXmlNodeContentByTagName(doc , tagName); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /** * 从document中取出某个标签的内容 * @param doc w3c的document对象 * @param tagName xml标签名 @@ -1288,6 +1452,55 @@ } /** + * 从document中取出某个标签的内容 + * @param doc w3c的document对象 + * @param tagName xml标签名 + * @return + */ + public static String getXmlNodeContentByTagName(Document doc , String tagName){ + try { + NodeList list = doc.getElementsByTagName(tagName); + if(list != null && list.getLength() > 0){ + Node node = list.item(0); + return nodeToString(node); + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /** + * 将传入的一个DOM Node对象输出成字符串。如果失败则返回一个空字符串""。 + * + * @param node + * DOM Node 对象。 + * @return a XML String from node + */ + public static String nodeToString(Node node) { + if (node == null) { + throw new IllegalArgumentException(); + } + try { + Transformer transformer = TransformerFactory.newInstance() + .newTransformer(); + Properties properties = transformer.getOutputProperties(); + properties.setProperty(OutputKeys.ENCODING, com.forgon.tools.Constants.CHARSET_UTF8); + properties.setProperty(OutputKeys.METHOD, "xml"); + properties.setProperty(OutputKeys.VERSION, "1.0"); + properties.setProperty(OutputKeys.INDENT, "no"); + transformer.setOutputProperties(properties); + StringWriter sw = new StringWriter(); + transformer.transform(new DOMSource(node), new StreamResult(sw)); + return sw.toString(); + } catch (TransformerException te) { + throw new RuntimeException(te.getMessage()); + } + } + + + /** * 对比两个集合,取出不同的元素 * @param list1 * @param tousseInstanceBarcodes @@ -1340,4 +1553,166 @@ } return str; } + + public static JSONObject getJsonObjectFromConfigJs(String configJsFilePath){ + JSONObject jsonObj = null; + + ObjectMapper mapper = new ObjectMapper().configure( + Feature.ALLOW_COMMENTS, true); + + mapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true); + mapper.configure(Feature.ALLOW_SINGLE_QUOTES, true); + Scanner scan = null; + try { + String content = readFullFile(configJsFilePath); + int startIndex = content.indexOf("{"); + int endIndex = (content.lastIndexOf("}") + 1); + if (startIndex != -1 && endIndex != -1 && startIndex < endIndex) { + content = content.substring(startIndex, endIndex); + } + + jsonObj = mapper + .readValue( + content, + JSONObject.class); + } catch (IOException e) { + e.printStackTrace(); + }finally{ + if(scan != null){ + scan.close(); + } + } + return jsonObj; + } + + public static void printAllProjectConfig(){ + //遍历所有项目的config.js文件 + JSONObject totalJsonObject = new JSONObject(); + String path = "C:\\WorkspaceLunaSR2-V4.1.0\\forgon-ssts-v4.1.0\\ssts-web\\src\\main\\webapp\\disinfectsystem\\config"; + File configFolder = new File(path); + if(configFolder.exists()){ + File[] projectNameFolder = configFolder.listFiles(); + if(projectNameFolder != null && projectNameFolder.length > 0){ + for (File file : projectNameFolder) { + String projectConfigJsFilePath = file.getAbsolutePath() + "/config.js"; + logger.debug("projectConfigJsFilePath=" + projectConfigJsFilePath); + File configJsFile = new File(projectConfigJsFilePath); + if(configJsFile.exists()){ + JSONObject jsonObject = getJsonObjectFromConfigJs(projectConfigJsFilePath); + if(jsonObject != null){ + Set keySet = jsonObject.keySet(); + if(CollectionUtils.isNotEmpty(keySet)){ + for (String key : keySet) { + if(totalJsonObject.containsKey(key)){ + continue; + } + totalJsonObject.put(key, jsonObject.opt(key)); + } + } + } + } + } + } + } + logger.debug("totalJsonObject.keySet().size()=" + totalJsonObject.keySet().size()); + logger.debug("totalJsonObject=\n" + totalJsonObject); + } + + // 读取完整的文件 + private static String readFullFile(String Path) { + BufferedReader reader = null; + String laststr = ""; + try { + FileInputStream fileInputStream = new FileInputStream(Path); + InputStreamReader inputStreamReader = new InputStreamReader( + fileInputStream, "UTF-8"); + reader = new BufferedReader(inputStreamReader); + String tempString = null; + while ((tempString = reader.readLine()) != null) { + laststr += tempString + "\r\n"; + } + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return laststr; + } + + public static JSON getJsonFromJsonFile(String jsonFilePath){ + JSON json = null; + + ObjectMapper mapper = new ObjectMapper().configure( + Feature.ALLOW_COMMENTS, true); + + mapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true); + mapper.configure(Feature.ALLOW_SINGLE_QUOTES, true); + try { + String content = readFullFile(jsonFilePath); + + json = mapper + .readValue( + content, + JSONObject.class); + } catch (IOException e) { + e.printStackTrace(); + try { + String content = readFullFile(jsonFilePath); + + json = mapper + .readValue( + content, + JSONArray.class); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + return json; + } + + public static void main(String[] args) { + /*String xml = ""+ + ""+ + "MS025"+ + "科室字典"+ + "S028"+ + ""+ + "20170705175444"+ + ""+ + ""+ + ""+ + "010101"+ + "中心主任办公室"+ + ""+ + ""+ + ""+ + ""+ + "
"+ + ""+ + ""+ + "0"+ + ""+ + ""+ + ""+ + ""+ + ""+ + ""+ + "0101"+ + "管理科室"+ + ""+ + ""+ + "
"+ + ""+ + "
"; + System.out.println("======" + CssdUtils.xml2JsonCommon(xml));*/ + + //printAllProjectConfig(); + } }