Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java =================================================================== diff -u -r41083 -r41595 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 41083) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 41595) @@ -2114,14 +2114,16 @@ orgUnitCodeSet.addAll(codeParentCodeMap.keySet()); orgUnitCodeSet.addAll(codeParentCodeMap.values()); Map orgUnitMap = getOrgUnitMapByCode(orgUnitCodeSet); + Set errorParentCodingSet = new HashSet(); for (OrgUnit orgUnit : savedOrgUnitList) { String parentCoding = codeParentCodeMap.get(orgUnitManager.getOrgForeignKeyForSync(orgUnit)); if(StringUtils.isBlank(parentCoding)){ continue; } THTreeNode parent = orgUnitMap.get(parentCoding); if(parent == null){ - throw new RuntimeException("不存在科室编码为" + parentCoding + "的科室"); + errorParentCodingSet.add(parentCoding); + continue; } THTreeNode THTreeNode = orgUnitMap.get(orgUnitManager.getOrgForeignKeyForSync(orgUnit)); if(THTreeNode == null){ @@ -2130,6 +2132,9 @@ THTreeNode.setParent(parent); objectDao.saveOrUpdate(THTreeNode); } + if(CollectionUtils.isNotEmpty(errorParentCodingSet)){ + throw new RuntimeException("上级科室编码异常,科室不存在的异常上级科室编码:" + StringTools.join(errorParentCodingSet, ";")); + } } @SuppressWarnings("unchecked") Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dwr/DataSynchronizationTableManager.java =================================================================== diff -u -r41469 -r41595 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dwr/DataSynchronizationTableManager.java (.../DataSynchronizationTableManager.java) (revision 41469) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dwr/DataSynchronizationTableManager.java (.../DataSynchronizationTableManager.java) (revision 41595) @@ -5,13 +5,16 @@ import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; +import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.disinfectsystem.datasynchronization.bo.TaskBo; import com.forgon.disinfectsystem.datasynchronization.enums.SynTaskNameEnum; import com.forgon.disinfectsystem.datasynchronization.factory.AutoSyncTaskFactory; import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO; import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager; import com.forgon.disinfectsystem.datasynchronization.task.AutoSyncTask; import com.forgon.exception.SystemException; +import com.forgon.log.model.Log; +import com.forgon.log.service.LogManager; import com.forgon.tools.json.JSONUtil; /** @@ -28,6 +31,12 @@ private DataSynchronizationManager dataSynchronizationManager; + private LogManager appLogManager; + + public void setAppLogManager(LogManager appLogManager) { + this.appLogManager = appLogManager; + } + public void setDataSynchronizationManager( DataSynchronizationManager dataSynchronizationManager) { this.dataSynchronizationManager = dataSynchronizationManager; @@ -87,6 +96,7 @@ dataSynchronizationManager.syncOrgUnit(); }catch (Exception e) { e.printStackTrace(); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_ORGUNIT, "同步", "同步失败:" + e.getMessage()); if ("nameError".equals(e.getMessage().substring(0,9))) { return e.getMessage().substring(9); } else { @@ -148,6 +158,7 @@ dataSynchronizationManager.syncUser(); }catch (Exception e) { e.printStackTrace(); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_USER, "同步", "同步失败:" + e.getMessage()); return false; } return true; @@ -162,6 +173,7 @@ dataSynchronizationManager.syncOrgUnitAndUser(); }catch (Exception e) { e.printStackTrace(); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_BASEDATA, "同步", "同步失败:" + e.getMessage()); return false; } return true; Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gdsfybjy/SyncOrgUnitAndUserDaoImpl.java =================================================================== diff -u -r40325 -r41595 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gdsfybjy/SyncOrgUnitAndUserDaoImpl.java (.../SyncOrgUnitAndUserDaoImpl.java) (revision 40325) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gdsfybjy/SyncOrgUnitAndUserDaoImpl.java (.../SyncOrgUnitAndUserDaoImpl.java) (revision 41595) @@ -1,5 +1,6 @@ package com.forgon.disinfectsystem.datasynchronization.dao.gdsfybjy; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; @@ -29,7 +30,8 @@ UserVo[] userVoArray = null; List userVoList = new ArrayList(); try { - String param = "userid=全部&keycode=" + DatasyncConstant.KEY_CODE; + String userid = URLEncoder.encode("全部", "UTF-8"); + String param = "userid=" + userid + "&keycode=" + DatasyncConstant.KEY_CODE; String requestResult = CssdUtils.sendGetRequest(DatasyncConstant.SYNC_URL + DatasyncConstant.ACTION_USER_SYNC, param, Constants.CHARSET_UTF8); //String requestResult = "{'Table':[{'NAME':'杨静如','CODING':'1990','ORGUNITCODING':'01302014'},{'NAME':'陈广道','CODING':'1991','ORGUNITCODING':'01302014'}]}"; logger.debug(new StringBuffer("人员同步接口返回参数:").append(requestResult).toString()); @@ -43,9 +45,9 @@ } for (Object object : tableArray) { JSONObject json = (JSONObject) object; - String name = json.optString("NAME"); - String coding = json.optString("CODING"); - String orgUnitCoding = json.optString("ORGUNITCODING"); + String name = CssdUtils.optString(json, "NAME"); + String coding = CssdUtils.optString(json, "CODING"); + String orgUnitCoding = CssdUtils.optString(json, "ORGUNITCODING"); UserVo vo = new UserVo(); vo.setCoding(coding); vo.setName(name); @@ -66,7 +68,8 @@ OrgUnitVo[] orgUnitVoArray = null; List orgUnitVoList = new ArrayList(); try { - String param = "deptcode=全部&keycode=" + DatasyncConstant.KEY_CODE; + String deptcode = URLEncoder.encode("全部", "UTF-8"); + String param = "deptcode=" + deptcode + "&keycode=" + DatasyncConstant.KEY_CODE; String requestResult = CssdUtils.sendGetRequest(DatasyncConstant.SYNC_URL + DatasyncConstant.ACTION_ORGUNIT_SYNC, param, Constants.CHARSET_UTF8); //String requestResult = "{'Table':[{'NAME':'小儿骨科(番禺)','CODING':'01302014','PARENTCODING':'0'},{'NAME':'眼科二区(番禺)','CODING':'01302015','PARENTCODING':'0'}]}"; logger.debug(new StringBuffer("科室同步接口返回参数:").append(requestResult).toString()); @@ -80,9 +83,9 @@ } for (Object object : tableArray) { JSONObject json = (JSONObject) object; - String name = json.optString("NAME"); - String coding = json.optString("CODING"); - String parentCoding = json.optString("PARENTCODING"); + String name = CssdUtils.optString(json, "NAME"); + String coding = CssdUtils.optString(json, "CODING"); + String parentCoding = CssdUtils.optString(json, "PARENTCODING"); OrgUnitVo vo = new OrgUnitVo(); vo.setCoding(coding); vo.setName(name);