Index: ssts-web/src/main/webapp/logonSSOForGdskqyy.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/logonSSOForGdskqyy.jsp (revision 0) +++ ssts-web/src/main/webapp/logonSSOForGdskqyy.jsp (revision 33395) @@ -0,0 +1,194 @@ +<%@page import="com.forgon.security.model.User"%> +<%@page import="com.forgon.disinfectsystem.common.CssdUtils"%> +<%@page import="com.forgon.security.service.UserManager"%> +<%@ page contentType="text/html; charset=UTF-8" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@page import="com.forgon.tools.SpringBeanManger"%> +<%@page import="com.forgon.tools.Constants"%> +<%@page import="net.sf.json.JSONObject" %> +<%@page import="java.io.File" %> +<%@page import="java.util.ArrayList" %> +<%@page import="org.apache.commons.lang.StringUtils"%> +<%@page import="com.forgon.disinfectsystem.datasynchronization.dao.gdskqyy.WebServiceClientHelper"%> +<%@page import="com.forgon.directory.model.LoginInfo"%> +<%@ include file="/common/taglibs.jsp" %> + +<% +ArrayList message = new ArrayList(); +String token = request.getParameter("token"); +if(StringUtils.isNotBlank(token)){ + String xmlResult=""; + String userName=null; + try{ + userName = WebServiceClientHelper.validateSSOTicket(token); + } catch (Exception e) { + message.add(e.getMessage()); + } + + if(StringUtils.isNotBlank(userName)){ + if(StringUtils.equals(userName, "-1")){ + message.add("登入名/账号不存在"); + } else { + UserManager userManager=(UserManager)SpringBeanManger.getBean("userManager"); + User user=userManager.getFirst("name", userName); + if(user==null){ + message.add("用户:"+userName+"不存在"); + }else{ + session.setAttribute("barcode", user.getBarcode()); + } + } + } +}else{ + message.add("token不能为空"); +} +pageContext.setAttribute("message", message); + +String companyName = CssdUtils.getSystemSetConfigByName("companyName"); +String companyNameStr = ""; +if(companyName == null || companyName.equals("forgon")){ + companyNameStr = "©2021 广州孚峻信息技术有限公司 版权所有"; +}else if(companyName.equals("dingxiang")){ + companyNameStr = "©2021 广州丁香软件有限公司 版权所有"; +} +session.setAttribute("companyName", companyNameStr); +String project = CssdUtils.getConfigProperty("project"); +session.setAttribute("profile", project); + +String imgPath = "disinfectsystem/config/" + project + "/img/logo_" + project +".png"; +File file = new File(application.getRealPath("/") + imgPath); +if(file.exists()){ + request.setAttribute("logoPath",imgPath); +}else{ + if(companyName == null || companyName.equals("forgon")){ + request.setAttribute("logoPath","themes/portalPage/img/logo_Forgon.png"); + }else if(companyName.equals("dingxiang")){ + request.setAttribute("logoPath","themes/portalPage/img/logo_dingxiangsoft.png"); + } +} + +%> + + + + + + + + +消毒供应质量追溯管理系统 +<%-- --%> + + + + + + +
+
+
+ 账号或密码错误!请重新输入! + 验证码错误,请重新输入! + 该用户没有回收清点的权限,请重新输入! + 注册码不正确或试用期已过!请与管理人员联系! + 身份验证接口访问异常,请与系统管理员联系! +
+ + + +
+ + + + + + + + + + Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gdskqyy/DatasyncConstant.java =================================================================== diff -u -r33369 -r33395 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gdskqyy/DatasyncConstant.java (.../DatasyncConstant.java) (revision 33369) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gdskqyy/DatasyncConstant.java (.../DatasyncConstant.java) (revision 33395) @@ -19,6 +19,16 @@ public final static String PatientInfoQueryWebserviceAddress = "http://172.16.1.28/soap/JHIPLIB.SOAP.BS.HL7V3Service.cls?CfgItem=JH0004患者基本信息查询服务"; /** + * 单点登录验证地址 + */ + public final static String SSOLoginWebserviceAddress = "http://172.16.1.29:10008/portal/services/userinfo"; + + /** + * 追溯系统编码 + */ + public final static String SYSTEM_CODE = "XDGY"; + + /** * 手术信息查询的服务标识 */ public final static String OperationInfoQueryInteractionId = "JH0215"; Index: ssts-web/src/main/webapp/WEB-INF/spring/security-standard/applicationContext-acegi-security.xml =================================================================== diff -u -r33330 -r33395 --- ssts-web/src/main/webapp/WEB-INF/spring/security-standard/applicationContext-acegi-security.xml (.../applicationContext-acegi-security.xml) (revision 33330) +++ ssts-web/src/main/webapp/WEB-INF/spring/security-standard/applicationContext-acegi-security.xml (.../applicationContext-acegi-security.xml) (revision 33395) @@ -50,6 +50,7 @@ + Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gdskqyy/WebServiceClientHelper.java =================================================================== diff -u -r33359 -r33395 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gdskqyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 33359) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gdskqyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 33395) @@ -1,6 +1,7 @@ package com.forgon.disinfectsystem.datasynchronization.dao.gdskqyy; import java.nio.charset.Charset; +import java.util.Calendar; import java.util.UUID; import org.apache.commons.lang.StringUtils; @@ -13,6 +14,7 @@ import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.apache.log4j.Logger; + import com.forgon.tools.date.DateTools; /** @@ -44,7 +46,7 @@ if(StringUtils.equals(interactionId, DatasyncConstant.OperationInfoQueryInteractionId)){ inputXmlSB.append(""); - inputXmlSB.append(""); + inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); @@ -54,14 +56,14 @@ inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); - inputXmlSB.append(""); + inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); // sender inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); - inputXmlSB.append(""); + inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); // controlActProcess @@ -87,11 +89,15 @@ inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); - // + // 只查最近一周的记录 + Calendar calendar = Calendar.getInstance(); + String high = DateTools.formatTime(calendar, "yyyyMMddHHmmss"); + calendar.add(Calendar.DAY_OF_MONTH, -7); + String low = DateTools.formatTime(calendar, "yyyyMMddHHmmss"); inputXmlSB.append(""); inputXmlSB.append(""); - inputXmlSB.append(""); - inputXmlSB.append(""); + inputXmlSB.append(""); + inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); @@ -121,14 +127,14 @@ inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); - inputXmlSB.append(""); + inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); // sender inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); - inputXmlSB.append(""); + inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); @@ -217,5 +223,61 @@ closeableHttpClient.close(); return retStr; } + + /** + * 单点登录验证接口 + * @param sessionID + * @return + * @throws Exception + */ + public static String validateSSOTicket(String sessionID) throws Exception{ + String request = buildSSOLoginRequest(sessionID, DatasyncConstant.SYSTEM_CODE); + logger.info("单点登录验证接口请求参数:" + request); + String xmlResult = doPostSoap1_2(DatasyncConstant.SSOLoginWebserviceAddress, request); + //String xmlResult = " true 成功 2078 蓝天祥 admin MQ== 男性 KwMcLtbXwB7dot07a5YB2w== JXJlW4vwMqxrs3D1ZASbkd+s3UfMGuNW9hgBqZN2dvw= ORETR+ygUboj2KJHqdGzCw== 2022-03-14 18:07:33.0 2022-02-14 00:00:00.0 2036-02-29 00:00:00.0 ]]> "; + //String xmlResult = " falsesessionID 已失效]]> "; + logger.info("单点登录验证接口返回消息:" + xmlResult); + if(StringUtils.isBlank(xmlResult)){ + throw new RuntimeException("票据验证接口调用失败或返回结果为空"); + }else{ + int beginIndex = xmlResult.indexOf(""); + int endIndex = xmlResult.indexOf(""); + if(beginIndex != -1 && endIndex != -1){ + return xmlResult.substring(beginIndex + "".length(), endIndex); + }else{ + beginIndex = xmlResult.indexOf(""); + endIndex = xmlResult.indexOf(""); + if(beginIndex != -1 && endIndex != -1){ + String resultContent = xmlResult.substring(beginIndex + "".length(), endIndex); + throw new RuntimeException(resultContent); + } + } + } + return null; + } + + /** + * 构建请求参数 + * @param sessionID + * @param systemCode + * @return + */ + private static String buildSSOLoginRequest(String sessionID, String systemCode) { + + StringBuffer request = new StringBuffer(); + request.append(""); + request.append(""); + request.append(""); + request.append(""); + request.append(""); + request.append("" + sessionID + ""); + request.append("" + DatasyncConstant.SYSTEM_CODE + ""); + request.append("]]>"); + request.append(""); + request.append(""); + request.append(""); + return request.toString(); + } + }