diff --git a/src/main/java/com/docus/server/collection/receiver/MzZyMqReceiver.java b/src/main/java/com/docus/server/collection/receiver/MzZyMqReceiver.java index c4a9439..f3107db 100644 --- a/src/main/java/com/docus/server/collection/receiver/MzZyMqReceiver.java +++ b/src/main/java/com/docus/server/collection/receiver/MzZyMqReceiver.java @@ -1,6 +1,9 @@ package com.docus.server.collection.receiver; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.docus.server.collection.dto.DeptDto; +import com.docus.server.collection.rpc.MzZyyRocCurrWebCommonRpc; import com.docus.server.collection.service.IPowerDeptService; import com.docus.server.collection.service.IPowerUserService; import com.docus.server.collection.xml.parsers.MzZyParser; @@ -21,37 +24,61 @@ public class MzZyMqReceiver { private IPowerUserService powerUserService; @Autowired private IPowerDeptService powerDeptService; + @Autowired + private MzZyyRocCurrWebCommonRpc mzZyyRocCurrWebCommonRpc; /** * 订阅队列(注册科室) + * * @param message 科室信息 */ @JmsIbmListener(destination = "TJ_createDepartment") - public void revCreateDepartment(String message){ - log.info("注册科室 队列接收信息:{}",message); + public void revCreateDepartment(String message) { + log.info("注册科室 队列接收信息:{}", message); try { - DeptDto deptDto= MzZyParser.parseCreateDept(message); - powerDeptService.register(deptDto); - }catch (Exception ex){ - log.error("处理注册科室 队列接收信息:{},出现异常:{}",message,ex.getMessage()); + DeptDto deptDto = MzZyParser.parseCreateDept(message); + // 只保存住院的,如果接口异常也保存 + JSONObject jsonObject = mzZyyRocCurrWebCommonRpc.queryDept(deptDto.getDeptCode(), "I"); + if (jsonObject == null) { + powerDeptService.register(deptDto); + return; + } + boolean success = "200".equals(jsonObject.getString("code")); + JSONArray data = jsonObject.getJSONArray("data"); + if (success && data.size() > 0) { + powerDeptService.register(deptDto); + } + + } catch (Exception ex) { + log.error("处理注册科室 队列接收信息:{},出现异常:{}", message, ex.getMessage()); } } - /** * 订阅队列(变更科室) + * * @param message 科室信息 */ @JmsIbmListener(destination = "TJ_updateDepartment") - public void revUpdateDepartment(String message){ - log.info("变更科室 队列接收信息:{}",message); + public void revUpdateDepartment(String message) { + log.info("变更科室 队列接收信息:{}", message); try { - DeptDto deptDto=MzZyParser.parseUpdateDept(message); - powerDeptService.register(deptDto); - }catch (Exception ex){ - log.error("处理变更科室 队列接收信息:{},出现异常:{}",message,ex.getMessage()); + DeptDto deptDto = MzZyParser.parseUpdateDept(message); + // 只保存住院的,如果接口异常也保存 + JSONObject jsonObject = mzZyyRocCurrWebCommonRpc.queryDept(deptDto.getDeptCode(), "I"); + if (jsonObject == null) { + powerDeptService.register(deptDto); + return; + } + boolean success = "200".equals(jsonObject.getString("code")); + JSONArray data = jsonObject.getJSONArray("data"); + if (success && data.size() > 0) { + powerDeptService.register(deptDto); + } + } catch (Exception ex) { + log.error("处理变更科室 队列接收信息:{},出现异常:{}", message, ex.getMessage()); } } @@ -59,11 +86,12 @@ public class MzZyMqReceiver { /** * 订阅队列(注册人员) + * * @param message 人员信息 */ @JmsIbmListener(destination = "TJ_createPractitioner") - public void revCreatePractitioner(String message){ - log.info("人员注册 队列接收信息:{}",message); + public void revCreatePractitioner(String message) { + log.info("人员注册 队列接收信息:{}", message); /* try { UserDto userDto=MzZyParser.parseCreateUser(message); @@ -78,11 +106,12 @@ public class MzZyMqReceiver { /** * 订阅队列(变更人员) + * * @param message 人员信息 */ @JmsIbmListener(destination = "TJ_updatePractitioner") - public void revUpdatePractitioner(String message){ - log.info("人员变更 队列接收信息:{}",message); + public void revUpdatePractitioner(String message) { + log.info("人员变更 队列接收信息:{}", message); /* try { UserDto userDto=MzZyParser.parseUpdateUser(message); diff --git a/src/main/java/com/docus/server/collection/rpc/MzZyyRocCurrWebCommonRpc.java b/src/main/java/com/docus/server/collection/rpc/MzZyyRocCurrWebCommonRpc.java new file mode 100644 index 0000000..aefe4b3 --- /dev/null +++ b/src/main/java/com/docus/server/collection/rpc/MzZyyRocCurrWebCommonRpc.java @@ -0,0 +1,18 @@ +package com.docus.server.collection.rpc; + +import com.alibaba.fastjson.JSONObject; + +/** + * 梅州中医院 roc curr-web公共 api 接口 + * @author YongBin Wen + * @date 2025/2/8 10:04 + */ +public interface MzZyyRocCurrWebCommonRpc { + /** + *查询科室列表 + * @param deptCode 科室编码,可为空 + * @param deptType 科室类型,C 门诊, I 住院, F 财务, L 后勤(logistics) , PI 药库 ,T 医技, O 其它 ,D 机关,P 药房 , N 护士站 ,可为空 + * @return 科室列表 + */ + JSONObject queryDept(String deptCode, String deptType); +} diff --git a/src/main/java/com/docus/server/collection/rpc/impl/MzZyyRocCurrWebCommonRpcImpl.java b/src/main/java/com/docus/server/collection/rpc/impl/MzZyyRocCurrWebCommonRpcImpl.java new file mode 100644 index 0000000..796013a --- /dev/null +++ b/src/main/java/com/docus/server/collection/rpc/impl/MzZyyRocCurrWebCommonRpcImpl.java @@ -0,0 +1,50 @@ +package com.docus.server.collection.rpc.impl; + +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.docus.server.collection.rpc.MzZyyRocCurrWebCommonRpc; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * 梅州中医院 roc curr-web 公共 api 接口实现 + * + * @author YongBin Wen + * @date 2025/2/8 10:04 + */ +@Service +@Slf4j +public class MzZyyRocCurrWebCommonRpcImpl implements MzZyyRocCurrWebCommonRpc { + @Value("${mzzyy.url.roc.curr-web: http://199.168.91.110:7800/roc/curr-web}") + private String rocCurrWebUrl; + @Value("${mzzyy.roc-domain: WZHBA}") + private String rocDomain; + @Value("${mzzyy.roc-key: b91b0ac7-665f-4874-a282-2f5511a44263}") + private String rocKey; + + @Override + public JSONObject queryDept(String deptCode, String deptType) { + final String path = "/api/v1/common/dept/query"; + final String url = rocCurrWebUrl + path; + Map paramMap = new HashMap<>(2); + paramMap.put("deptCode", deptCode); + paramMap.put("deptType", deptType); + try { + String result = HttpUtil.createGet(url) + .header("Content-Type", "application/json") + .header("domain", rocDomain) + .header("key", rocKey) + .form(paramMap) + .timeout(60 * 1000) + .execute().body(); + return JSONObject.parseObject(result); + } catch (Exception ex) { + log.error(url + " 请求出错了," + ex.getMessage(), ex); + return null; + } + } +} diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index 74efbbc..b5afed6 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -72,7 +72,12 @@ xxl: TBasic: url: http://localhost:8989/tbasic - +mzzyy: + roc-domain: WZHBA + roc-key: b91b0ac7-665f-4874-a282-2f5511a44263 + url: + roc: + curr-web: http://199.168.91.110:7800/roc/curr-web # com.ibm.mq连接方式(集群模式需要配置两个地址) 本地测试 #ibm: