Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/zsszyy/DatasyncConstant.java
===================================================================
diff -u -r35441 -r39349
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/zsszyy/DatasyncConstant.java (.../DatasyncConstant.java) (revision 35441)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/zsszyy/DatasyncConstant.java (.../DatasyncConstant.java) (revision 39349)
@@ -21,6 +21,26 @@
public final static String MethodName_HospitalNumber = "operationScheduleInfoQuery";
/**
+ * 接口方法名:获取科室字典(作为输入参数)
+ */
+ public final static String MethodName_OrgUnit = "getDeptDict";
+
+ /**
+ * 接口方法名:获取员工字典(作为输入参数)
+ */
+ public final static String MethodName_User = "getStaffDict";
+
+ /**
+ * 科室人员同步的入参:机构代码,必填
+ */
+ public final static String orgCode = "45726533-2";
+
+ /**
+ * 院区代码
+ */
+ public final static String districtCode = "01";
+
+ /**
* 每页行数(不超过1200)必填
*/
public final static Integer PageSize = 1000;
Index: ssts-web/src/main/webapp/disinfectsystem/config/zsszyy/spring/applicationContext-his.xml
===================================================================
diff -u -r35441 -r39349
--- ssts-web/src/main/webapp/disinfectsystem/config/zsszyy/spring/applicationContext-his.xml (.../applicationContext-his.xml) (revision 35441)
+++ ssts-web/src/main/webapp/disinfectsystem/config/zsszyy/spring/applicationContext-his.xml (.../applicationContext-his.xml) (revision 39349)
@@ -56,18 +56,8 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
"
+ param = ""
+ "" + args[0] + ""
+ "" + DatasyncConstant.PageSize + ""
- + "" + DatasyncConstant.PageIndex + ""
+ + "" + pageIndex + ""
+ "]]>";
- inputXml = ""
- + ""
- + ""
- + ""
- + ""
- + "" + methodName + "XML" + DatasyncConstant.AccessKey + "]]>"
- + ""
- + ""
- + param
- + ""
- + ""
- +""
- +"";
+ } else if(DatasyncConstant.MethodName_OrgUnit.equals(methodName)){
+ // 查询所有科室
+ // 科室代码、科室名称为空返回所有
+ param = ""
+ + "" + DatasyncConstant.orgCode + ""
+ + "" + DatasyncConstant.districtCode + ""
+ + ""
+ + ""
+ + ""
+ + "]]>";
+ } else if(DatasyncConstant.MethodName_User.equals(methodName)){
+ // 查询所有人员
+ // 科室代码、员工姓名、员工代码、工作类别编码为空显示所有
+ param = ""
+ + "" + DatasyncConstant.orgCode + ""
+ + "" + DatasyncConstant.districtCode + ""
+ + ""
+ + ""
+ + ""
+ + ""
+ + ""
+ + "]]>";
} else {
throw new RuntimeException("不存在此methodName:" + methodName);
}
+ String inputXml = ""
+ + ""
+ + ""
+ + ""
+ + ""
+ + "" + methodName + "XML" + DatasyncConstant.AccessKey + "]]>"
+ + ""
+ + ""
+ + param
+ + ""
+ + ""
+ +""
+ +"";
return inputXml;
}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/zsszyy/SyncOrgUnitAndUserDaoImpl.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/zsszyy/SyncOrgUnitAndUserDaoImpl.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/zsszyy/SyncOrgUnitAndUserDaoImpl.java (revision 39349)
@@ -0,0 +1,253 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.zsszyy;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Node;
+import org.dom4j.XPath;
+
+import net.sf.json.JSONObject;
+
+import com.forgon.disinfectsystem.datasynchronization.dao.SyncOrgUnitAndUserDao;
+import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
+import com.forgon.disinfectsystem.datasynchronization.model.UserVo;
+import com.forgon.tools.string.StringTools;
+
+/**
+ * 人员及科室信息同步接口
+ * ZSSZYY-172
+ */
+public class SyncOrgUnitAndUserDaoImpl implements SyncOrgUnitAndUserDao {
+
+ Logger logger = Logger.getLogger(SyncOrgUnitAndUserDaoImpl.class);
+
+ @Override
+ public UserVo[] getAllUser() {
+ UserVo[] userVoArray = null;
+ List userVoList = new ArrayList();
+ try{
+ String inputXml = WebServiceClientHelper.buildInputXml(DatasyncConstant.MethodName_User, 0, "");
+ logger.info("用户信息接口请求信息:" + inputXml);
+ String xmlResult = WebServiceClientHelper.doPostSoap1_2(DatasyncConstant.WebServiceAddress, inputXml);
+ /*String xmlResult = ""
+ + ""
+ + ""
+ + "Z1032"
+ + "诸莉敏"
+ + "21409"
+ + "外二科护理单元"
+ + ""
+ + ""
+ + "Z1037"
+ + "吴嘉琪"
+ + "24109"
+ + "重症医学科护理单元"
+ + ""
+ + ""
+ + "]]>";*/
+ logger.info("用户信息接口返回信息:" + xmlResult);
+
+ if(StringUtils.isBlank(xmlResult)){
+ logger.info("用户信息接口同步失败,接口返回为空!");
+ return null;
+ }
+
+ int startIndex = xmlResult.indexOf("");
+ int endIndex = xmlResult.indexOf("");
+
+ if(startIndex == -1 || endIndex == -1 || endIndex < startIndex){
+ logger.info("同步用户信息失败,接口返回信息没有节点!");
+ return null;
+ }
+
+ xmlResult = xmlResult.substring(startIndex, endIndex + "".length());
+ Document document = DocumentHelper.parseText(xmlResult);
+ String itemXpath = "/returnContents/returnContent";
+ XPath xpath = document.createXPath(itemXpath);
+ @SuppressWarnings("unchecked")
+ List nodeList = xpath.selectNodes(document, xpath);
+ if(CollectionUtils.isNotEmpty(nodeList)){
+ Map> userCodingOrgUnitCodingMap = new HashMap>();
+ for(int i=1;i<=nodeList.size();i++){
+ String msgXpath = "/returnContents/returnContent[" + i + "]";
+ // 用户编码
+ String codingXpath = msgXpath + "/staffCode";
+ // 用户名称
+ String nameXpath = msgXpath + "/staffName";
+ // 用户所属科室编码
+ String orgUnitCodingXpath = msgXpath + "/adminDeptCode";
+
+ String coding = WebServiceClientHelper.processDataByXpath(document, codingXpath);
+ String name = WebServiceClientHelper.processDataByXpath(document, nameXpath);
+ String orgUnitCoding = WebServiceClientHelper.processDataByXpath(document, orgUnitCodingXpath);
+ UserVo userVo = new UserVo();
+ userVo.setCoding(coding);
+ userVo.setName(name);
+ userVo.setOrgUnitCoding(orgUnitCoding);
+ //如果人员工号或名称为空,则忽略该条数据
+ if(StringUtils.isBlank(userVo.getName()) || StringUtils.isBlank(userVo.getCoding())){
+ continue;
+ }
+ if(StringUtils.isNotBlank(orgUnitCoding)){
+ Set orgUnitCodingSet = userCodingOrgUnitCodingMap.get(userVo.getCoding());
+ if(orgUnitCodingSet == null){
+ orgUnitCodingSet = new LinkedHashSet();
+ }
+ orgUnitCodingSet.add(orgUnitCoding);
+ userCodingOrgUnitCodingMap.put(userVo.getCoding(), orgUnitCodingSet);
+ }
+ userVoList.add(userVo);
+ }
+ if(MapUtils.isNotEmpty(userCodingOrgUnitCodingMap) && CollectionUtils.isNotEmpty(userVoList)){
+ for (UserVo userVo : userVoList) {
+ Set orgUnitCodingSet = userCodingOrgUnitCodingMap.get(userVo.getCoding());
+ if(CollectionUtils.isEmpty(orgUnitCodingSet)){
+ continue;
+ }
+ userVo.setOrgUnitCoding(StringTools.join(orgUnitCodingSet, ";"));
+ }
+ }
+ userVoArray = new UserVo[userVoList.size()];
+ userVoList.toArray(userVoArray);
+ }
+
+ }catch(Exception e){
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ e.printStackTrace(new PrintStream(baos));
+ String exception = baos.toString();
+ logger.error("同步人员信息失败:" + exception);
+ e.printStackTrace();
+ }
+
+ return userVoArray;
+ }
+
+ @Override
+ public OrgUnitVo[] getAllOrgUnit() {
+ OrgUnitVo[] orgUnitVoArray = null;
+ List orgUnitVoList = new ArrayList();
+ try {
+ String inputXml = WebServiceClientHelper.buildInputXml(DatasyncConstant.MethodName_OrgUnit, 0, "");
+ logger.info("科室信息接口请求信息:" + inputXml);
+ String xmlResult = WebServiceClientHelper.doPostSoap1_2(DatasyncConstant.WebServiceAddress, inputXml);
+ /*String xmlResult = ""
+ + ""
+ + "AA"
+ + "查询返回"
+ + ""
+ + ""
+ + "45726533-2"
+ + "01"
+ + "21409"
+ + "外二科护理单元1"
+ + ""
+ + ""
+ + ""
+ + ""
+ + "45726533-2"
+ + "01"
+ + "24109"
+ + "重症医学科护理单元1"
+ + ""
+ + ""
+ + ""
+ + ""
+ + "]]>";*/
+ logger.info("科室信息接口返回信息:" + xmlResult);
+ if(StringUtils.isBlank(xmlResult)){
+ logger.info("科室信息接口返回信息为空!");
+ return null;
+ }
+
+ int startIndex = xmlResult.indexOf("");
+ if(startIndex == -1){
+ logger.info("科室信息接口返回信息没有标签!");
+ return null;
+ }
+ int endIndex = xmlResult.indexOf("");
+ if(endIndex == -1 || endIndex < startIndex){
+ logger.info("科室信息接口返回信息没有标签");
+ return null;
+ }
+ String xmlString = xmlResult.substring(startIndex, endIndex + "".length());
+ if(StringUtils.isBlank(xmlString)){
+ logger.info("科室信息接口返回信息为空!" + xmlString);
+ return null;
+ }
+
+ Document document = DocumentHelper.parseText(xmlString);
+ String itemXpath = "/returnContents/returnContent"; // 返回结果可能存在多条住院病人信息
+ XPath xpath = document.createXPath(itemXpath);
+ @SuppressWarnings("unchecked")
+ List nodeList = xpath.selectNodes(document, xpath);
+ if(CollectionUtils.isNotEmpty(nodeList)){
+ for(int i=1;i<=nodeList.size();i++){
+ String msgXpath = "/returnContents/returnContent[" + i + "]";
+ // 科室编码
+ String codingXpath = msgXpath + "/deptCode";
+ // 科室名称
+ String nameXpath = msgXpath + "/deptName";
+ // 上级科室代码
+ String parentCodingXpath = msgXpath + "/upperDeptCode";
+
+ String coding = WebServiceClientHelper.processDataByXpath(document, codingXpath);
+ String name = WebServiceClientHelper.processDataByXpath(document, nameXpath);
+ String parentCoding = WebServiceClientHelper.processDataByXpath(document, parentCodingXpath);
+ OrgUnitVo orgVo = new OrgUnitVo();
+ orgVo.setCoding(coding);
+ orgVo.setName(name);
+ orgVo.setParentCoding(parentCoding);
+
+ //科室编码与上级科室编码相同时,默认其上级科室编码为空
+ if(StringUtils.equals(orgVo.getCoding(), orgVo.getParentCoding())){
+ orgVo.setParentCoding(null);
+ }
+ //如果科室编码或名称为空,则忽略该条数据
+ if(StringUtils.isBlank(orgVo.getCoding()) || StringUtils.isBlank(orgVo.getName())){
+ continue;
+ }
+ orgUnitVoList.add(orgVo);
+ }
+ orgUnitVoArray = new OrgUnitVo[orgUnitVoList.size()];
+ orgUnitVoList.toArray(orgUnitVoArray);
+ }else{
+ throw new RuntimeException("未找到科室数据...");
+ }
+
+ } catch (Exception e) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ e.printStackTrace(new PrintStream(baos));
+ String exception = baos.toString();
+ logger.error("获取科室信息失败," + exception);
+ }
+ return orgUnitVoArray;
+ }
+
+ @Override
+ public OrgUnitVo[] paramToOrgUnitVos(String param) {
+ return null;
+ }
+
+ @Override
+ public UserVo[] paramToUserVos(String param) {
+ return null;
+ }
+
+ @Override
+ public JSONObject buttjoinResponse(Boolean success, String message, String param) {
+ return null;
+ }
+
+}
Index: ssts-web/src/main/webapp/disinfectsystem/config/zsszyy/config.js
===================================================================
diff -u -r36493 -r39349
--- ssts-web/src/main/webapp/disinfectsystem/config/zsszyy/config.js (.../config.js) (revision 36493)
+++ ssts-web/src/main/webapp/disinfectsystem/config/zsszyy/config.js (.../config.js) (revision 39349)
@@ -114,6 +114,8 @@
hiddenUserSyncButton:true,
//是否禁用科室同步
hiddenOrgunitSyncButton:true,
+//同步组织机构与用户数据
+showOrgunitAndUserSyncButton:true,
//外来器械允许申请多套器械
allowApplyMultipleForeignTousse:true,
//待装配任务列表的列配置