Эх сурвалжийг харах

恒生医院试剂耗材hrp数据接入-bug处理:空指针报错处理

ZhuJiaHao 5 сар өмнө
parent
commit
5d4f853339

+ 20 - 14
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/reagent/provider/LingYongProvider.java

@@ -151,13 +151,16 @@ public class LingYongProvider extends GenericProvider implements ILingYongServic
 			String setting = ContextUtil.getSetting();
 			//ContextUtil.getSetting()的作用:从t_ipcc表的id_为1的数据的setting字段获取每个环境的独有的标识参数
 			//恒生环境的特有标识:"HSYY":"true"
-			ObjectMapper objectMapper = new ObjectMapper();
-			HashMap<String, Object> map =(HashMap) objectMapper.readValue(setting, Map.class);
-			String hsyy = Optional.ofNullable(map)
-					.map(m -> m.get("HSYY"))
-					.map(Object::toString)
-					.orElse("");
-			boolean flag1 = Boolean.parseBoolean(hsyy);
+			boolean flag1 = false;
+			if (StringUtils.isNotEmpty(setting)) {
+				ObjectMapper objectMapper = new ObjectMapper();
+				HashMap<String, Object> map =(HashMap) objectMapper.readValue(setting, Map.class);
+				String hsyy = Optional.ofNullable(map)
+						.map(m -> m.get("HSYY"))
+						.map(Object::toString)
+						.orElse("");
+				flag1 = Boolean.parseBoolean(hsyy);
+			}
 			//flag1为 是否 恒生医院环境 的标识
 
 			/** 2.如果 <是 恒生医院环境>  */
@@ -183,13 +186,16 @@ public class LingYongProvider extends GenericProvider implements ILingYongServic
 			String setting = ContextUtil.getSetting();
 			//ContextUtil.getSetting()的作用:从t_ipcc表的id_为1的数据的setting字段获取每个环境的独有的标识参数
 			//恒生环境的特有标识:"HSYY":"true"
-			ObjectMapper objectMapper = new ObjectMapper();
-			HashMap<String, Object> map =(HashMap) objectMapper.readValue(setting, Map.class);
-			String hsyy = Optional.ofNullable(map)
-					.map(m -> m.get("HSYY"))
-					.map(Object::toString)
-					.orElse("");
-			boolean flag1 = Boolean.parseBoolean(hsyy);
+			boolean flag1 = false;
+			if (StringUtils.isNotEmpty(setting)) {
+				ObjectMapper objectMapper = new ObjectMapper();
+				HashMap<String, Object> map =(HashMap) objectMapper.readValue(setting, Map.class);
+				String hsyy = Optional.ofNullable(map)
+						.map(m -> m.get("HSYY"))
+						.map(Object::toString)
+						.orElse("");
+				flag1 = Boolean.parseBoolean(hsyy);
+			}
 			//flag1为 是否 恒生医院环境 的标识
 
 			/** 2.如果 <是 恒生医院环境>  */

+ 49 - 40
ibps-provider-root/modules/provider-form/src/main/java/com/lc/ibps/form/provider/DataTemplateProvider.java

@@ -1617,49 +1617,58 @@ public class DataTemplateProvider extends GenericProvider implements IDataTempla
 	 * 恒生医院 试剂耗材 入库流水hrp接口逻辑
 	 */
 	private void ReagentConsumabInputForHSYY(DataTemplateRequestVo dataTemplateRequestVo) throws Exception{
-		/**
-		 * 入库流水保存成功后,要从  试剂耗材入库流水表(t_sjhcrkls)里删除对应数据
-		 */
-
-		/** 1.是否 恒生医院环境 */
-		String setting = ContextUtil.getSetting();
-		//ContextUtil.getSetting()的作用:从t_ipcc表的id_为1的数据的setting字段获取每个环境的独有的标识参数
-		//恒生环境的特有标识:"HSYY":"true"
-		ObjectMapper objectMapper = new ObjectMapper();
-		HashMap<String, Object> map =(HashMap) objectMapper.readValue(setting, Map.class);
-		String hsyy = Optional.ofNullable(map)
-				.map(m -> m.get("HSYY"))
-				.map(Object::toString)
-				.orElse("");
-		boolean flag1 = Boolean.parseBoolean(hsyy);
-		//flag1为 是否 恒生医院环境 的标识
-
-
-		/** 2.是否 试剂耗材入库登记保存接口 */
-		boolean flag2 = Optional.ofNullable(dataTemplateRequestVo)
-				.map(DataTemplateRequestVo::getBoCode)
-				.map("sjhxhclrkysdjb"::equalsIgnoreCase)
-				.orElse(false);
-		//flag1为 是否 试剂耗材入库登记保存接口 的标识
-
-		/** 3.如果 <是 恒生医院环境> 并且 <是 试剂耗材入库登记保存接口> */
-		if(flag1 && flag2){
-
-			/** 4. 则删除 试剂耗材入库流水表(t_sjhcrkls)里对应数据 */
-
-			/** 4-1.从 shiJiHeHaoCai 字段 中获取数据id */
-			ObjectMapper objectMapper1 = new ObjectMapper();
-			String dataStr = dataTemplateRequestVo.getData();
-			JsonNode dataNode = objectMapper1.readTree(dataStr);
-			if (dataNode.has("shiJiHeHaoCai")) {
-				String ids = dataNode.get("shiJiHeHaoCai").asText();
-				if(StringUtils.isNotEmpty(ids)){
-					/** 4-2. 数据库操作,删除已保存确认的入库流水记录 */
-					List<String> idsList = Arrays.asList(ids.split(","));
-					reagentConsumableDao.deleteByIdsForInput(idsList);
+
+		try{
+			/**
+			 * 入库流水保存成功后,要从  试剂耗材入库流水表(t_sjhcrkls)里删除对应数据
+			 */
+
+			/** 1.是否 恒生医院环境 */
+			String setting = ContextUtil.getSetting();
+			//ContextUtil.getSetting()的作用:从t_ipcc表的id_为1的数据的setting字段获取每个环境的独有的标识参数
+			//恒生环境的特有标识:"HSYY":"true"
+			boolean flag1 = false;
+			if (StringUtils.isNotEmpty(setting)) {
+				ObjectMapper objectMapper = new ObjectMapper();
+				HashMap<String, Object> map =(HashMap) objectMapper.readValue(setting, Map.class);
+				String hsyy = Optional.ofNullable(map)
+						.map(m -> m.get("HSYY"))
+						.map(Object::toString)
+						.orElse("");
+				flag1 = Boolean.parseBoolean(hsyy);
+			}
+			//flag1为 是否 恒生医院环境 的标识
+
+
+			/** 2.是否 试剂耗材入库登记保存接口 */
+			boolean flag2 = Optional.ofNullable(dataTemplateRequestVo)
+					.map(DataTemplateRequestVo::getBoCode)
+					.map("sjhxhclrkysdjb"::equalsIgnoreCase)
+					.orElse(false);
+			//flag1为 是否 试剂耗材入库登记保存接口 的标识
+
+			/** 3.如果 <是 恒生医院环境> 并且 <是 试剂耗材入库登记保存接口> */
+			if(flag1 && flag2){
+
+				/** 4. 则删除 试剂耗材入库流水表(t_sjhcrkls)里对应数据 */
+
+				/** 4-1.从 shiJiHeHaoCai 字段 中获取数据id */
+				ObjectMapper objectMapper1 = new ObjectMapper();
+				String dataStr = dataTemplateRequestVo.getData();
+				JsonNode dataNode = objectMapper1.readTree(dataStr);
+				if (dataNode.has("shiJiHeHaoCai")) {
+					String ids = dataNode.get("shiJiHeHaoCai").asText();
+					if(StringUtils.isNotEmpty(ids)){
+						/** 4-2. 数据库操作,删除已保存确认的入库流水记录 */
+						List<String> idsList = Arrays.asList(ids.split(","));
+						reagentConsumableDao.deleteByIdsForInput(idsList);
+					}
 				}
 			}
+		}catch (Exception e){
+			logger.error("",e);
 		}
+
 	}
 	
 	@ApiOperation(value = "上传解析excel文件", notes = "上传解析excel文件")