Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/foreignTousse/service/ForeignTousseWebServiceImpl.java =================================================================== diff -u -r28922 -r30939 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/foreignTousse/service/ForeignTousseWebServiceImpl.java (.../ForeignTousseWebServiceImpl.java) (revision 28922) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/foreignTousse/service/ForeignTousseWebServiceImpl.java (.../ForeignTousseWebServiceImpl.java) (revision 30939) @@ -17,6 +17,7 @@ import com.forgon.Constants; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.basedatamanager.supplier.service.SupplierManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.CssdUtils; @@ -36,6 +37,7 @@ import com.forgon.tools.GB2WB; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.ConfigUtils; import com.forgon.tools.util.ForgonDateUtils; /** @@ -302,20 +304,57 @@ appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用外来器械包接口的submitForeignTousseApplication方法,返回结果=" + returnJSONObject); return xmlSerializer.write(returnJSONObject); } - String departName = paramJson.optString("DEPART_NAME"); - if(StringUtils.isBlank(departName)){ - returnJSONObject.put("message","DEPART_NAME节点不能为空"); - appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用外来器械包接口的submitForeignTousseApplication方法,返回结果=" + returnJSONObject); - return xmlSerializer.write(returnJSONObject); + + String departName = null; + String departCode = null; + String settlementDepartName = null; + String settlementDepartCode = null; + + // 外来器械申请单申请科室编码(HIS系统传送外来器械申请单到追溯系统时,申请单的申请科室和结算科室可通过配置文件配置DGKHYY-27) + String foreignTousseApplicationAppDepartCodeForWSInterface = + ConfigUtils.getSystemSetConfigByName("foreignTousseApplicationAppDepartCodeForWSInterface", ""); + if(StringUtils.isBlank(foreignTousseApplicationAppDepartCodeForWSInterface)){ + departCode = foreignTousseApplicationAppDepartCodeForWSInterface; + @SuppressWarnings("unchecked") + List ouList = objectDao.findByProperty(OrgUnit.class.getSimpleName(), "orgUnitCoding", departCode); + if(CollectionUtils.isEmpty(ouList)){ + returnJSONObject.put("message","默认申请科室不存在,科室编码为:" + departCode); + appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用外来器械包接口的submitForeignTousseApplication方法,返回结果=" + returnJSONObject); + return xmlSerializer.write(returnJSONObject); + } + departName = ouList.get(0).getName(); + }else{ + departName = paramJson.optString("DEPART_NAME"); + if(StringUtils.isBlank(departName)){ + returnJSONObject.put("message","DEPART_NAME节点不能为空"); + appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用外来器械包接口的submitForeignTousseApplication方法,返回结果=" + returnJSONObject); + return xmlSerializer.write(returnJSONObject); + } + departCode = paramJson.optString("DEPART_CODE"); + if(StringUtils.isBlank(departCode)){ + returnJSONObject.put("message","DEPART_CODE节点不能为空"); + appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用外来器械包接口的submitForeignTousseApplication方法,返回结果=" + returnJSONObject); + return xmlSerializer.write(returnJSONObject); + } } - String departCode = paramJson.optString("DEPART_CODE"); - if(StringUtils.isBlank(departCode)){ - returnJSONObject.put("message","DEPART_CODE节点不能为空"); - appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用外来器械包接口的submitForeignTousseApplication方法,返回结果=" + returnJSONObject); - return xmlSerializer.write(returnJSONObject); + + // 外来器械申请单结算科室编码(HIS系统传送外来器械申请单到追溯系统时,申请单的申请科室和结算科室可通过配置文件配置DGKHYY-27) + String foreignTousseApplicationsettleAccountsDepartCodeForWSInterface = + ConfigUtils.getSystemSetConfigByName("foreignTousseApplicationsettleAccountsDepartCodeForWSInterface", ""); + if(StringUtils.isBlank(foreignTousseApplicationsettleAccountsDepartCodeForWSInterface)){ + settlementDepartCode = foreignTousseApplicationsettleAccountsDepartCodeForWSInterface; + @SuppressWarnings("unchecked") + List ouList = objectDao.findByProperty(OrgUnit.class.getSimpleName(), "orgUnitCoding", settlementDepartCode); + if(CollectionUtils.isEmpty(ouList)){ + returnJSONObject.put("message","默认结算科室不存在,科室编码为:" + settlementDepartCode); + appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用外来器械包接口的submitForeignTousseApplication方法,返回结果=" + returnJSONObject); + return xmlSerializer.write(returnJSONObject); + } + settlementDepartName = ouList.get(0).getName(); + }else{ + settlementDepartName = paramJson.optString("SETTLEMENT_DEPART_NAME"); + settlementDepartCode = paramJson.optString("SETTLEMENT_DEPART_CODE"); } - String settlementDepartName = paramJson.optString("SETTLEMENT_DEPART_NAME"); - String settlementDepartCode = paramJson.optString("SETTLEMENT_DEPART_CODE"); String applicationTime = paramJson.optString("APPLICATION_TIME"); ForeignTousseApplication orginalForeignTousseApplication = foreignTousseApplicationManager.getFirst("serialNumber='"+ serialNumber +"'"); //调用外来器械申请单业务方法 Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/foreignTousse/service/ForeignTousseWebServiceExImpl.java =================================================================== diff -u -r30791 -r30939 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/foreignTousse/service/ForeignTousseWebServiceExImpl.java (.../ForeignTousseWebServiceExImpl.java) (revision 30791) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/foreignTousse/service/ForeignTousseWebServiceExImpl.java (.../ForeignTousseWebServiceExImpl.java) (revision 30939) @@ -111,6 +111,37 @@ String departName = processDataByXpath(document, departXpath); String settlementDepartCode = processDataByXpath(document, settlementDepartCodeXpath); String settlementDepartName = processDataByXpath(document, settlementDepartNameXpath); + + // 外来器械申请单申请科室编码(HIS系统传送外来器械申请单到追溯系统时,申请单的申请科室和结算科室可通过配置文件配置DGKHYY-27) + String foreignTousseApplicationAppDepartCodeForWSInterface = + ConfigUtils.getSystemSetConfigByName("foreignTousseApplicationAppDepartCodeForWSInterface", ""); + if(StringUtils.isBlank(foreignTousseApplicationAppDepartCodeForWSInterface)){ + departCode = foreignTousseApplicationAppDepartCodeForWSInterface; + @SuppressWarnings("unchecked") + List ouList = objectDao.findByProperty(OrgUnit.class.getSimpleName(), "orgUnitCoding", departCode); + if(CollectionUtils.isEmpty(ouList)){ + returnJSONObject.put("message","默认申请科室不存在,科室编码为:" + departCode); + appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用外来器械包接口的submitForeignTousseApplication方法,返回结果=" + returnJSONObject); + return xmlSerializer.write(returnJSONObject); + } + departName = ouList.get(0).getName(); + } + + // 外来器械申请单结算科室编码(HIS系统传送外来器械申请单到追溯系统时,申请单的申请科室和结算科室可通过配置文件配置DGKHYY-27) + String foreignTousseApplicationsettleAccountsDepartCodeForWSInterface = + ConfigUtils.getSystemSetConfigByName("foreignTousseApplicationsettleAccountsDepartCodeForWSInterface", ""); + if(StringUtils.isBlank(foreignTousseApplicationsettleAccountsDepartCodeForWSInterface)){ + settlementDepartCode = foreignTousseApplicationsettleAccountsDepartCodeForWSInterface; + @SuppressWarnings("unchecked") + List ouList = objectDao.findByProperty(OrgUnit.class.getSimpleName(), "orgUnitCoding", settlementDepartCode); + if(CollectionUtils.isEmpty(ouList)){ + returnJSONObject.put("message","默认结算科室不存在,科室编码为:" + settlementDepartCode); + appLogManager.saveLog(AcegiHelper.getLoginUser(), "调用接口" , Log.TYPE_QUERY, "调用外来器械包接口的submitForeignTousseApplication方法,返回结果=" + returnJSONObject); + return xmlSerializer.write(returnJSONObject); + } + settlementDepartName = ouList.get(0).getName(); + } + String applicationTime = processDataByXpath(document, appTimeXpath); // 手术编码(将【单号】、【手术编码】作为验证唯一性的条件,查询外来器械申请单GDSZYY-75) String surgeryCode = processDataByXpath(document, surgeryCodeXpath); @@ -121,7 +152,9 @@ // 手术执行科室(GDSZYY-75) String surgeryDepartCode = processDataByXpath(document, surgeryDepartCodeXpath); String surgeryDepart = processDataByXpath(document, surgeryDepartXpath); - if(StringUtils.isNotBlank(surgeryDepartCode)){ + if(StringUtils.isNotBlank(surgeryDepartCode) + && StringUtils.isBlank(foreignTousseApplicationAppDepartCodeForWSInterface) + && StringUtils.isBlank(foreignTousseApplicationsettleAccountsDepartCodeForWSInterface)){ // 取 OES 的【手术执行科室】作为【申请科室】及【结算科室】,需通过【科室编码】匹配(GDSZYY-75) @SuppressWarnings("unchecked") List ouList = objectDao.findByProperty(OrgUnit.class.getSimpleName(), "orgUnitCoding", surgeryDepartCode);