Bladeren bron

恒生医院试剂耗材hrp数据接入

ZhuJiaHao 6 maanden geleden
bovenliggende
commit
2a99769b6f

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

@@ -1,16 +1,18 @@
 package com.lc.ibps.components.reagent.provider;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import javax.annotation.Resource;
 
 import com.lc.ibps.base.framework.id.UniqueIdUtil;
+import com.lc.ibps.base.web.context.ContextUtil;
 import com.lc.ibps.components.reagent.persistence.entity.LingYongDetailPo;
 import com.lc.ibps.components.reagent.service.InventoryService;
+import com.lc.ibps.form.dao.ReagentConsumableDao;
+import com.lc.ibps.form.vo.DataTemplateRequestVo;
 import com.lc.ibps.untils.StrUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.codehaus.jackson.map.ObjectMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -54,6 +56,9 @@ public class LingYongProvider extends GenericProvider implements ILingYongServic
 	@Autowired
 	private InventoryService inventoryService;
 
+	@Autowired
+	private ReagentConsumableDao reagentConsumableDao;
+
 	@ApiOperation(value = "试剂耗材领用主表列表(分页条件查询)数据", notes = "试剂耗材领用主表列表(分页条件查询)数据")
 	@Override
 	public APIResult<APIPageList<LingYongPo>> query(
@@ -119,6 +124,10 @@ public class LingYongProvider extends GenericProvider implements ILingYongServic
 			}
 			LingYong domain = lingYongRepository.newInstance(lingYongPo);
 			domain.saveCascade();
+
+			/** 新增 恒生医院试剂耗材出库hrp接入逻辑 */
+			ReagentConsumabOutputForHSYY(lingYongPo);
+
 			result.setMessage("保存试剂耗材领用主表成功");
 		} catch (Exception e) {
 			setExceptionResult(result, StateEnum.ERROR.getCode(), StateEnum.ERROR.getText(), e);
@@ -126,6 +135,42 @@ public class LingYongProvider extends GenericProvider implements ILingYongServic
 		return result;
 	}
 
+	/**
+	 * 恒生医院 试剂耗材 出库流水hrp接入逻辑
+	 */
+	private void ReagentConsumabOutputForHSYY(LingYongPo lingYongPo)throws Exception{
+		/**
+		 * 出库流水保存成功后,要从  试剂耗材出库流水表(t_sjhccklsb)里删除对应数据
+		 */
+
+		/** 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.如果 <是 恒生医院环境>  */
+		if(flag1){
+			/** 3. 则删除 试剂耗材入库流水表(t_sjhccklsb)里对应数据 */
+
+			/** 3-1.从 weiZhiLingYong 字段 中获取数据id */
+			String ids = lingYongPo.getWeiZhiLingYong();
+			if(StringUtils.isNotEmpty(ids)){
+				/** 3-2. 数据库操作,删除已保存确认的入库流水记录 */
+				List<String> idsList = Arrays.asList(ids.split(","));
+				reagentConsumableDao.deleteByIdsForOutput(idsList);
+			}
+		}
+
+	}
+
 	@ApiOperation(value = "删除", notes = "删除试剂耗材领用主表", 
 			extensions = {
 					@Extension(properties = {

+ 23 - 0
ibps-provider-root/modules/provider-form/src/main/java/com/lc/ibps/form/dao/ReagentConsumableDao.java

@@ -0,0 +1,23 @@
+package com.lc.ibps.form.dao;
+
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ReagentConsumableDao {
+
+    /**
+     * 试剂耗材入库保存后删除对应入库数据
+     * 根据id批量删除数据
+     */
+    int deleteByIdsForInput(@Param("idsList")List<String> idsList);
+
+    /**
+     * 试剂耗材出库保存后删除对应入库数据
+     * 根据id批量删除数据
+     */
+    int deleteByIdsForOutput(@Param("idsList")List<String> idsList);
+}

+ 63 - 7
ibps-provider-root/modules/provider-form/src/main/java/com/lc/ibps/form/provider/DataTemplateProvider.java

@@ -4,13 +4,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import javax.annotation.Resource;
 
@@ -27,10 +21,14 @@ import com.lc.ibps.bpmn.repository.BpmInstHisRepository;
 import com.lc.ibps.bpmn.repository.BpmInstRepository;
 import com.lc.ibps.components.poi.excel.entity.enmus.ExcelType;
 import com.lc.ibps.components.poi.excel.export.styler.ExcelExportStylerColorImpl;
+import com.lc.ibps.form.dao.ReagentConsumableDao;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.ObjectMapper;
 import org.slf4j.event.Level;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -164,6 +162,9 @@ public class DataTemplateProvider extends GenericProvider implements IDataTempla
 	@Autowired
 	private ICommonDao<?> commonDao;
 
+	@Autowired
+	private ReagentConsumableDao reagentConsumableDao;
+
 	@ApiOperation(value = "数据模版列表(分页条件查询)数据", notes = "数据模版列表(分页条件查询)数据")
 	@Override
 	public APIResult<APIPageList<DataTemplatePo>> query(
@@ -1600,11 +1601,66 @@ public class DataTemplateProvider extends GenericProvider implements IDataTempla
 
 			result.addVariable("id", resultVo.getResultId());
 			result.setMessage(I18nUtil.getMessage("com.lc.ibps.form.provider.DataTemplateProvider.saveFormDataVo"));
+
+			/** 新增 恒生医院试剂耗材入库hrp接入逻辑 */
+			ReagentConsumabInputForHSYY(dataTemplateRequestVo);
+
 		} catch (Exception e) {
 			setExceptionResult(result, StateEnum.ERROR_FORM_DESIGN.getCode(), I18nUtil.getMessage(StateEnum.ERROR_FORM_DESIGN.getCode()+""), e);
 		}
 		return result;
 	}
+
+
+
+	/**
+	 * 恒生医院 试剂耗材 入库流水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);
+				}
+			}
+		}
+	}
 	
 	@ApiOperation(value = "上传解析excel文件", notes = "上传解析excel文件")
 	@Override

+ 24 - 0
ibps-provider-root/modules/provider-form/src/main/resources/com/lc/ibps/form/mapping/ReagentConsumableDao.map.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lc.ibps.form.dao.ReagentConsumableDao">
+    <!-- 根据id批量删除数据 -->
+    <delete id="deleteByIdsForInput">
+        DELETE FROM t_sjhcrkls
+        WHERE id_ IN
+        <foreach collection="idsList" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </delete>
+
+
+    <!-- 根据id批量删除数据 -->
+    <delete id="deleteByIdsForOutput">
+        DELETE t2
+        FROM t_sjhccklsb t2
+        INNER JOIN v_reagentinventory_new t1 ON t2.id_ = t1.s_id_
+        WHERE t1.id_ IN
+        <foreach collection="idsList" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>