Index: ssts-gdsy-misc/src/main/java/com/forgon/disinfectsystem/webservice/server/UserRecordStateWebService.java =================================================================== diff -u --- ssts-gdsy-misc/src/main/java/com/forgon/disinfectsystem/webservice/server/UserRecordStateWebService.java (revision 0) +++ ssts-gdsy-misc/src/main/java/com/forgon/disinfectsystem/webservice/server/UserRecordStateWebService.java (revision 38447) @@ -0,0 +1,16 @@ +package com.forgon.disinfectsystem.webservice.server; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebService; + +/** + * 大成手麻向手术器械闭环系统查询使用记录状态接口GDSRMYY-613 + */ +@WebService(serviceName="/userRecordStateService") +public interface UserRecordStateWebService { + + @WebMethod(action="queryUserRecordState", operationName="queryUserRecordState") + public String queryUserRecordState(@WebParam(name="message") String dataXml); + +} Index: ssts-web/src/main/webapp/disinfectsystem/config/gdsy/spring/webservice-cxf.xml =================================================================== diff -u -r36976 -r38447 --- ssts-web/src/main/webapp/disinfectsystem/config/gdsy/spring/webservice-cxf.xml (.../webservice-cxf.xml) (revision 36976) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdsy/spring/webservice-cxf.xml (.../webservice-cxf.xml) (revision 38447) @@ -98,4 +98,13 @@ implementor="#JLK_BatchImageDataPush" /> + + + + + + \ No newline at end of file Index: ssts-gdsy-misc/src/main/java/com/forgon/disinfectsystem/webservice/server/UserRecordStateWebServiceImpl.java =================================================================== diff -u --- ssts-gdsy-misc/src/main/java/com/forgon/disinfectsystem/webservice/server/UserRecordStateWebServiceImpl.java (revision 0) +++ ssts-gdsy-misc/src/main/java/com/forgon/disinfectsystem/webservice/server/UserRecordStateWebServiceImpl.java (revision 38447) @@ -0,0 +1,183 @@ +package com.forgon.disinfectsystem.webservice.server; + +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.dom4j.Document; +import org.dom4j.DocumentHelper; +import org.springframework.beans.factory.annotation.Autowired; + +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.disinfectsystem.entity.useRecord.UseRecord; +import com.forgon.disinfectsystem.webservice.helper.JLKWebServiceClientHelper; +import com.forgon.log.model.Log; +import com.forgon.log.service.LogManager; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.ForgonDateUtils; + +public class UserRecordStateWebServiceImpl implements UserRecordStateWebService { + + /** + * 表示是否接收成功:成功为0 + */ + public static final Integer CODE_SUCCESS = 0; + + /** + * 表示是否接收成功:失败为1 + */ + public static final Integer CODE_FAIL = 1; + + private static Logger logger = Logger.getLogger(UserRecordStateWebServiceImpl.class); + + @Autowired + private LogManager appLogManager; + + @Autowired + private ObjectDao objectDao; + + @Override + public String queryUserRecordState(String dataXml) { + logger.info("请求消息:" + dataXml); + Integer code = CODE_SUCCESS; + String message = ""; + List useRecordList = new ArrayList(); + try { + if(StringUtils.isBlank(dataXml)){ + throw new RuntimeException("参数不能为空!"); + } + Document document = DocumentHelper.parseText(dataXml); + + String patientInfoXpath = "/REQUEST/Patient_information"; + String hospitalNumberXpath = patientInfoXpath + "/hospitalNumber"; + String patientIDCardXpath = patientInfoXpath + "/patientIDCard"; + String patientNameXpath = patientInfoXpath + "/patientName"; + + String hospitalNumber = JLKWebServiceClientHelper.processDataByXpath(document, hospitalNumberXpath); + String patientIDCard = JLKWebServiceClientHelper.processDataByXpath(document, patientIDCardXpath); + String patientName = JLKWebServiceClientHelper.processDataByXpath(document, patientNameXpath); + + if(StringUtils.isBlank(hospitalNumber)){ + throw new RuntimeException("病人住院号为必填项!"); + } + if(StringUtils.isBlank(patientIDCard)){ + throw new RuntimeException("病人身份证号码为必填项!"); + } + if(StringUtils.isBlank(patientName)){ + throw new RuntimeException("病人姓名为必填项!"); + } + + useRecordList = selectUseRecord(hospitalNumber, patientIDCard, patientName); + + if(CollectionUtils.isEmpty(useRecordList)){ + throw new RuntimeException("未找到满足条件的使用记录"); + } + + } catch (Exception e) { + code = CODE_FAIL; + message = e.getMessage(); + } + String responce = buildResponce(code, message, useRecordList); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_SYNC, "接口同步", "手术器械闭环管理系统使用记录状态接口,入参:" + dataXml + ",出参:" + responce); + return responce; + } + + /** + * 根据住院号、身份证号码、患者姓名查询使用记录 + * @param hospitalNumber + * @param patientIDCard + * @param patientName + * @return + */ + private List selectUseRecord(String hospitalNumber, String patientIDCard, String patientName) { + + List useRecordList = new ArrayList(); + StringBuffer sqlBuffer = new StringBuffer(); + sqlBuffer.append("select ur.id, ur.status, ur.enteringDate from "); + sqlBuffer.append(UseRecord.class.getSimpleName()); + sqlBuffer.append(" ur where ur.hospitalNum = ?"); + sqlBuffer.append(" and ur.patientIDCard = ?"); + sqlBuffer.append(" and ur.patientName = ?"); + + String[] args = new String[]{hospitalNumber, patientIDCard, patientName}; + + ResultSet rs = null; + try { + + rs = objectDao.executeSql(sqlBuffer.toString(), args); + while(rs.next()){ + Long id = rs.getLong("id"); + String status = rs.getString("status"); + Date enteringDate = rs.getTimestamp("enteringDate"); + UseRecord useRecord = new UseRecord(); + useRecord.setId(id); + useRecord.setStatus(status); + useRecord.setEnteringDate(enteringDate); + useRecord.setHospitalNum(hospitalNumber); + useRecord.setPatientIDCard(patientIDCard); + useRecord.setPatientName(patientName); + useRecordList.add(useRecord); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return useRecordList; + } + + /** + * 构建返回参数 + * @param code + * @param message + * @param useRecordList + * @return + */ + public static String buildResponce(Integer code, String message, List useRecordList){ + StringBuffer returnMsgSB = new StringBuffer(); + returnMsgSB.append(""); + returnMsgSB.append("" + code + ""); + returnMsgSB.append(""); + if(StringUtils.isNotBlank(message)){ + returnMsgSB.append(message); + } + returnMsgSB.append(""); + if(code != null && code.intValue() == CODE_SUCCESS.intValue()){ + returnMsgSB.append(""); + if(CollectionUtils.isNotEmpty(useRecordList)){ + returnMsgSB.append(""); + returnMsgSB.append(useRecordList.get(0).getHospitalNum()); + returnMsgSB.append(""); + returnMsgSB.append(""); + returnMsgSB.append(useRecordList.get(0).getPatientIDCard()); + returnMsgSB.append(""); + returnMsgSB.append(""); + returnMsgSB.append(useRecordList.get(0).getPatientName()); + returnMsgSB.append(""); + for (UseRecord useRecord : useRecordList) { + returnMsgSB.append(""); + returnMsgSB.append(""); + returnMsgSB.append(useRecord.getId()); + returnMsgSB.append(""); + returnMsgSB.append(""); + returnMsgSB.append(useRecord.getStatus()); + returnMsgSB.append(""); + returnMsgSB.append(""); + returnMsgSB.append(ForgonDateUtils.safelyFormatDate(useRecord.getEnteringDate(), ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS, "")); + returnMsgSB.append(""); + returnMsgSB.append(""); + } + } + returnMsgSB.append(""); + } + + returnMsgSB.append(""); + return returnMsgSB.toString(); + } + +}