From 53d149f491dba554ee035599059a1bf65ea92df2 Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期三, 12 二月 2025 17:36:13 +0800 Subject: [PATCH] 增加手动同步lis接口 --- ltkj-admin/src/main/java/com/ltkj/web/controller/dongfanghis/DfHisApiMethodService.java | 389 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 346 insertions(+), 43 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/dongfanghis/DfHisApiMethodService.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/dongfanghis/DfHisApiMethodService.java index fc5722e..b6c82bc 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/dongfanghis/DfHisApiMethodService.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/dongfanghis/DfHisApiMethodService.java @@ -1,8 +1,15 @@ package com.ltkj.web.controller.dongfanghis; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSON; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.ltkj.common.core.domain.AjaxResult; +import com.ltkj.hosp.dfDto.CheXiaoMzFyDto; +import com.ltkj.hosp.dfDto.CreateMenZhenFyDto; import com.ltkj.hosp.domain.TjCustomer; +import com.ltkj.system.service.ISysConfigService; import com.ltkj.web.wxUtils.HttpClientUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -12,9 +19,9 @@ import java.io.FileInputStream; import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; +import java.time.Instant; +import java.util.*; +import java.util.concurrent.TimeUnit; /** * ClassName: DfHisApiMethodService <br/> @@ -28,17 +35,24 @@ @Slf4j public class DfHisApiMethodService { - private static String HIS_URL = ""; + @Autowired + private ISysConfigService configService; +// @Autowired + private RedisTemplate<String ,Object> redisTemplate; + + private static String HIS_URL = "http://oapi.pbkwyy.com/OAPI"; private static String CONFIG_PATH; - private static String GRANT_TYPE = ""; - private static String CLIENT_ID = ""; - private static String CLIENT_SECRET = ""; - private static String SCOP = ""; + private static String GRANT_TYPE = "client_credentials"; + private static String CLIENT_ID = "XFZZQEfXTZ7exhhi"; + private static String CLIENT_SECRET = "05a192176c21edfcc9cf5fa26fc5a9e0c5b131ad"; +// private static String SCOP = ""; -// @Autowired -// private RedisTemplate<String,Object> redisTemplate; +// http://oapi.pbkwyy.com/OAPI/oauth/token +// grant_type:client_credentials +// client_id:XFZZQEfXTZ7exhhi +// client_secret:05a192176c21edfcc9cf5fa26fc5a9e0c5b131ad @Value("${config.properties}") public void setConfigPath(String configPath) { @@ -52,7 +66,7 @@ GRANT_TYPE = props.getProperty("grant_type"); CLIENT_ID= props.getProperty("client_id"); CLIENT_SECRET = props.getProperty("client_secret"); - SCOP = props.getProperty("scope"); +// SCOP = props.getProperty("scope"); HIS_URL=url+":"+port+"/OAPI/"; } catch (IOException throwables) { throwables.printStackTrace(); @@ -61,29 +75,39 @@ //鑾峰彇token - public AjaxResult getToken () { + private JSONObject getToken () { Map<String, Object> map = new HashMap<>(); map.put("grant_type",GRANT_TYPE); map.put("client_id",CLIENT_ID); map.put("client_secret",CLIENT_SECRET); - map.put("scope",SCOP); - String post = HttpClientUtils.sendPost (HIS_URL+"/oauth/token", map); - return AjaxResult.success ().put ("data", post); +// map.put("scope",SCOP); + String post = sendPost (HIS_URL+"/oauth/token", map); + if (StrUtil.isBlank(post)) return null; + JSONObject parseObj = JSONUtil.parseObj(post); +// Integer expiresIn = parseObj.getInt("expires_in"); +// if (expiresIn != null){ +// parseObj.putOpt("time",Instant.now().getEpochSecond()); +// redisTemplate.opsForHash().putAll("token:his:df",parseObj); +// redisTemplate.expire("token:his:df",expiresIn - 10, TimeUnit.SECONDS); +// } + return parseObj; } //寤烘。 - public AjaxResult jianDang (TjCustomer customer) { + public JSON jianDang (TjCustomer customer) { + String czy = configService.selectConfigByKey("dfhisczybm"); + Map<String, Object> map = new HashMap<> (); map.put ("jiuZhenKh", customer.getPationId ()); map.put ("kaiLeiXing","4"); map.put ("xingMing", customer.getCusName ()); Long cusSex = customer.getCusSex(); if(cusSex==0L){ - map.put ("xingBie",1); + map.put ("xingBie","鐢�"); }else if(cusSex==1L){ - map.put ("xingBie",2); + map.put ("xingBie","濂�"); }else { - map.put ("xingBie",9); + map.put ("xingBie","鏈煡"); } map.put ("shenFenZh", customer.getCusIdcard ()); map.put ("danWeiBh",""); @@ -93,7 +117,7 @@ map.put ("feiYongLb",""); map.put ("feiYongXz",""); map.put ("jiLuLy","3"); - map.put ("caoZuoYuan","1088"); + map.put ("caoZuoYuan",czy); map.put ("chongZhiJe",""); map.put ("yiBaoKh",""); map.put ("geRenBh",""); @@ -106,34 +130,36 @@ map.put ("minZuDm",""); map.put ("minZuMc",""); //鑱屼笟缂栫爜 - String post = HttpClientUtils.sendPost (HIS_URL+"/menZhenJz/jianDang", map); - return AjaxResult.success ().put ("data", post); + String post = sendPost (HIS_URL+"/menZhenJz/jianDang", map); + return JSONUtil.parseObj(post); } //楠岃瘉韬唤璇佹槸鍚﹀缓杩囨。 - public AjaxResult getBingRenXxByShengFenZheng (TjCustomer customer) { + public JSON getBingRenXxByShengFenZheng (TjCustomer customer) { + String czy = configService.selectConfigByKey("dfhisczybm"); Map<String, Object> map = new HashMap<> (); - map.put ("caoZuoYuan","1088"); + map.put ("caoZuoYuan",czy); map.put ("shenFenZh", customer.getCusIdcard ()); map.put ("danWeiBh",""); //鑱屼笟缂栫爜 - String post = HttpClientUtils.sendPost (HIS_URL+"/menZhenJz/getBingRenXxByShengFenZheng", map); - return AjaxResult.success ().put ("data", post); + String post = sendPost (HIS_URL+"/menZhenJz/getBingRenXxByShengFenZheng", map); + return JSONUtil.parseObj(post); } //鐥呬汉鍩烘湰淇℃伅鍙樻洿 - public AjaxResult saveBingRenXx (TjCustomer customer) { + public JSON saveBingRenXx (TjCustomer customer) { + String czy = configService.selectConfigByKey("dfhisczybm"); Map<String, Object> map = new HashMap<> (); map.put ("jiuZhenKh", customer.getPationId ()); map.put ("kaiLeiXing","4"); map.put ("xingMing", customer.getCusName ()); Long cusSex = customer.getCusSex(); if(cusSex==0L){ - map.put ("xingBie",1); + map.put ("xingBie","鐢�"); }else if(cusSex==1L){ - map.put ("xingBie",2); + map.put ("xingBie","濂�"); }else { - map.put ("xingBie",9); + map.put ("xingBie","鏈煡"); } map.put ("shenFenZh", customer.getCusIdcard ()); map.put ("danWeiBh",""); @@ -143,33 +169,310 @@ map.put ("feiYongLb",""); map.put ("feiYongXz",""); map.put ("jiLuLy","3"); - map.put ("caoZuoYuan","1088"); + map.put ("caoZuoYuan",czy); //鑱屼笟缂栫爜 - String post = HttpClientUtils.sendPost (HIS_URL+"/menZhenJz/saveBingRenXx", map); - return AjaxResult.success ().put ("data", post); + String post = sendPost (HIS_URL+"/menZhenJz/saveBingRenXx", map); + return JSONUtil.parseObj(post); } //寰呮敹璐硅垂鐢ㄦ煡璇� - public AjaxResult getListDaiShouFei (String bingRenId,String jiuZhenKh,String yuanQuId) { + public JSON getListDaiShouFei (String bingRenId,String jiuZhenKh,String yuanQuId) { Map<String, Object> map = new HashMap<> (); map.put ("bingRenId",bingRenId); map.put ("jiuZhenKh",jiuZhenKh); map.put ("yuanQuId",yuanQuId); //鑱屼笟缂栫爜 - String post = HttpClientUtils.sendPost (HIS_URL+"/shouFei/getListDaiShouFei", map); - return AjaxResult.success ().put ("data", post); + String post = sendPost (HIS_URL+"/shouFei/getListDaiShouFei", map); + return JSONUtil.parseObj(post); } - //寰呮敹璐硅垂鐢ㄦ煡璇� - public AjaxResult createMenZhenFy (String bingRenId,String jiuZhenKh,String yuanQuId) { + //鐢熸垚寰呮敹璐�/寰呴��璐� 璐圭敤 + public JSON createMenZhenFy (CreateMenZhenFyDto dto) { + String czy = configService.selectConfigByKey("dfhisczybm"); Map<String, Object> map = new HashMap<> (); - map.put ("bingRenId",bingRenId); - map.put ("jiuZhenKh",jiuZhenKh); - map.put ("yuanQuId",yuanQuId); + map.put ("bingRenId",dto.getBingRenId()); + map.put ("jiuZhenKh",dto.getJiuZhenKh()); + map.put ("caoZuoYuan",czy); + map.put ("yuanQuId",dto.getYuanQuId()); + map.put ("yingYongId",dto.getYingYongId()); + map.put ("kaiDanKs",dto.getKaiDanKs()); + map.put ("dengJiLsh",dto.getDengJiLsh()); + map.put ("shouTuiBz",dto.getShouTuiBz()); + map.put ("feiYongMxList",dto.getFeiYongMxList()); //鑱屼笟缂栫爜 - String post = HttpClientUtils.sendPost (HIS_URL+"/shouFei/createMenZhenFy", map); - return AjaxResult.success ().put ("data", post); + String post = sendPost (HIS_URL+"/shouFei/createMenZhenFy", map); + return JSONUtil.parseObj(post); + } + + + //闂ㄨ瘖鏈敹璐硅垂鐢ㄦ挙閿� + public JSON cheXiaoMzFy (CheXiaoMzFyDto dto) { + Map<String, Object> map = new HashMap<> (); + map.put ("bingRenId",dto.getBingRenId()); + map.put ("jiuZhenKh",dto.getJiuZhenKh()); + map.put ("feiYongIdList",dto.getFeiYongIdList()); + //鑱屼笟缂栫爜 + String post = sendPost (HIS_URL+"/shouFei/cheXiaoMzFy", map); + return JSONUtil.parseObj(post); + } + + + //鏀惰垂/閫�璐瑰畬鎴愰�氱煡绗笁鏂� + public JSON pushZhiFuMsg (String feiYongId,int yeWuLx ) { + Map<String, Object> map = new HashMap<> (); + map.put ("feiYongId",feiYongId); + map.put ("yeWuLx",yeWuLx); + //鑱屼笟缂栫爜 + String post = sendPost (HIS_URL+"/shouFei/pushZhiFuMsg", map); + return JSONUtil.parseObj(post); + } + + + //绉戝淇℃伅鏌ヨ + public JSON getKeShi (String yuanQuId,String keShiMc,int pageIndex,int pageSize ) { + Map<String, Object> map = new HashMap<> (); + map.put ("yuanQuId",yuanQuId); + map.put ("keShiMc",keShiMc); + map.put ("pageIndex",pageIndex); + map.put ("pageSize",pageSize); + //鑱屼笟缂栫爜 + String post = sendPost (HIS_URL+"/zhuShuJu/getKeShi", map); + return JSONUtil.parseObj(post); + } + + //鍖荤敓淇℃伅鏌ヨ + public JSON getListYiShengZd (String yuanQuId,String keShiMc,int pageIndex,int pageSize ) { + Map<String, Object> map = new HashMap<> (); + map.put ("yuanQuId",yuanQuId); + map.put ("keShiMc",keShiMc); + map.put ("bianGengSj",""); + map.put ("pageIndex",pageIndex); + map.put ("pageSize",pageSize); + //鑱屼笟缂栫爜 + String post = sendPost (HIS_URL+"/zhuShuJu/getListYiShengZd", map); + return JSONUtil.parseObj(post); + } + + + //鑾峰彇鏀惰垂椤圭洰鍒嗛〉 + public JSON getShouFeiXm (String queryString,String bianGengSj,int pageIndex,int pageSize ) { + Map<String, Object> map = new HashMap<> (); + map.put ("queryString",queryString); + map.put ("bianGengSj",bianGengSj); + map.put ("pageIndex",pageIndex); + map.put ("pageSize",pageSize); + //鑱屼笟缂栫爜 + String post = sendPost (HIS_URL+"/zhuShuJu/getShouFeiXm", map); + return JSONUtil.parseObj(post); + } + + + + /** + *绉戝淇℃伅鎺ㄩ�� + * @param xingZhiSx 缁勭粐灞炴�� 绗竴浣�1聽琛ㄧず 鎸傚彿 + * 绗簩浣� 1琛ㄧず涓村簥 + * 绗笁浣� 1琛ㄧず妫�鏌� + * 绗洓浣� 1 琛ㄧず鎵嬫湳 + * 绗簲浣� 1 琛ㄧず娌荤枟 + * 绗叚浣� 1 琛ㄧず鎶ょ悊 + * @param queryString 妯$硦鍖归厤杈撯紛鐮�1銆佺瀹ゅ悕绉� + * @param zuoFeiBz 浣滃簾鏍囧織锛�0 姝e父锛�1 浣滃簾 + * @param yuanQuId 闄㈠尯id + * @param keShiIds 绉戝ID闆嗗悎 + * @param ifPlus 鏄惁鏌ヨplus灞炴�� + * @return + */ + public JSON getKeShiByConditions (int xingZhiSx, String queryString, int zuoFeiBz, String yuanQuId, List<String>keShiIds,int ifPlus) { + Map<String, Object> map = new HashMap<> (); + map.put ("xingZhiSx",xingZhiSx); + map.put ("queryString",queryString); + map.put ("zuoFeiBz",zuoFeiBz); + map.put ("yuanQuId",yuanQuId); + map.put ("keShiIds",keShiIds); + map.put ("ifPlus",ifPlus); + //鑱屼笟缂栫爜 + String post = sendPost (HIS_URL+"/zhuShuJu/getKeShiByConditions", map); + return JSONUtil.parseObj(post); + } + + + + /** + * 鍙栨牱鏈瓧鍏� + * @param queryString 鏍锋湰绫诲瀷鍚嶇О(鏍锋湰鍚嶇О/鏍锋湰绫诲瀷id) + * @param pageIndex + * @param pageSize 姣忊粴鏉℃暟锛堟渶饧や笉鑳借秴杩�100锛� + * @return + */ + public JSON getYangBen (String queryString,int pageIndex,int pageSize ) { + Map<String, Object> map = new HashMap<> (); + map.put ("queryString",queryString); + map.put ("pageIndex",pageIndex); + map.put ("pageSize",pageSize); + //鑱屼笟缂栫爜 + String post = sendPost (HIS_URL+"/zhuShuJu/getYangBen", map); + return JSONUtil.parseObj(post); + } + + + /** + * 鐥呭尯淇℃伅鎺ㄩ�� + * @param yuanQuId 闄㈠尯Id + * @param keShiId 绉戝Id + * @param pageIndex 褰撳墠饣� + * @param pageSize 姣忊粴鏉℃暟锛堟渶饧や笉鑳借秴杩�100锛� + * @return + */ + public JSON getListBingQuZd (String yuanQuId,String keShiId,int pageIndex,int pageSize ) { + Map<String, Object> map = new HashMap<> (); + map.put ("yuanQuId",yuanQuId); + map.put ("keShiId",keShiId); + map.put ("pageIndex",pageIndex); + map.put ("pageSize",pageSize); + //鑱屼笟缂栫爜 + String post = sendPost (HIS_URL+"/zhuShuJu/getListBingQuZd", map); + return JSONUtil.parseObj(post); + } + + /** + * 鑱屸集淇℃伅 + * @param bianGengSj 鍙樻洿鏃堕棿 + * @param pageIndex 褰撳墠饣� + * @param pageSize 姣忊粴鏉℃暟锛堟渶饧や笉鑳借秴杩�100锛� + * @return + */ + public JSON getZhiGongPage (String bianGengSj,int pageIndex,int pageSize ) { + Map<String, Object> map = new HashMap<> (); + map.put ("bianGengSj",bianGengSj); + map.put ("pageIndex",pageIndex); + map.put ("pageSize",pageSize); + //鑱屼笟缂栫爜 + String post = sendPost (HIS_URL+"/zhuShuJu/getZhiGongPage", map); + return JSONUtil.parseObj(post); + } + + + /** + * 妫�鏌ラ」鐩� + * @param queryString + * @param bianGengSj + * @param pageIndex + * @param pageSize + * @return + */ + public JSON getJianChaXm (String queryString,String bianGengSj,int pageIndex,int pageSize ) { + Map<String, Object> map = new HashMap<> (); + map.put ("queryString",queryString); + map.put ("bianGengSj",bianGengSj); + map.put ("pageIndex",pageIndex); + map.put ("pageSize",pageSize); + //鑱屼笟缂栫爜 + String post = sendPost (HIS_URL+"/zhuShuJu/getJianChaXm", map); + return JSONUtil.parseObj(post); + } + + /** + * 妫�楠岄」饨帹閫� + * @param queryCode 鏌ヨ鐮�(椤光浆缂栫爜/鎷尖境鐮� + * @param page 褰撳墠饣� + * @param size 姣忊粴鏉℃暟锛堟渶饧や笉鑳借秴杩�100 + * @return + */ + public JSON getJianYanXm(String queryCode,Integer page,Integer size){ + HashMap<String, Object> hashMap = new HashMap<>(); + hashMap.put("queryCode",queryCode); + hashMap.put("page",page); + hashMap.put("size",size); + String post = sendPost (HIS_URL+"/zhuShuJu/getJianYanXm", hashMap); + return JSONUtil.parse(post); + } + + /** + * 妫�楠岄」饨敹璐规帹閫� + * @param shouFeiXmId 鏀惰垂椤光浆id + * @param jiaGeTx 浠锋牸浣撶郴 + * @return + */ + public JSON getShouFeiXmJg(String shouFeiXmId,String jiaGeTx){ + HashMap<String, Object> hashMap = new HashMap<>(); + hashMap.put("shouFeiXmId",shouFeiXmId); + hashMap.put("jiaGeTx",jiaGeTx); + String post = sendPost (HIS_URL+"/zhuShuJu/getShouFeiXmJg", hashMap); + return JSONUtil.parse(post); + } + + /** + * 妫�楠屽鍣� + * @param queryString 瀹瑰櫒鍚嶇О(瀹瑰櫒鍚嶇О/杈撯紛鐮�1) + * @param pageIndex 褰撳墠饣� + * @param pageSize 姣忊粴鏉℃暟锛堟渶饧や笉鑳借秴杩�100锛� + * @return + */ + public JSON getRongQi(String queryString,Integer pageIndex,Integer pageSize){ + HashMap<String, Object> hashMap = new HashMap<>(); + hashMap.put("queryString",queryString); + hashMap.put("pageIndex",pageIndex); + hashMap.put("pageSize",pageSize); + String post = sendPost (HIS_URL+"/zhuShuJu/getRongQi", hashMap); + return JSONUtil.parse(post); + } + + /** + * 妫�楠屾牱鏈� + * @param queryString 鏍锋湰绫诲瀷鍚嶇О(鏍锋湰鍚嶇О/鏍锋湰绫诲瀷id) + * @param pageIndex 褰撳墠饣� + * @param pageSize 姣忊粴鏉℃暟锛堟渶饧や笉鑳借秴杩�100锛� + * @return + */ + public JSON getYangBen(String queryString,Integer pageIndex,Integer pageSize){ + HashMap<String, Object> hashMap = new HashMap<>(); + hashMap.put("queryString",queryString); + hashMap.put("pageIndex",pageIndex); + hashMap.put("pageSize",pageSize); + String post = sendPost (HIS_URL+"/zhuShuJu/getYangBen", hashMap); + return JSONUtil.parse(post); + } + + private String sendPost(String url,Map<String, Object> hashMap){ + Map<Object, Object> entries = redisTemplate.opsForHash().entries("token:his:df"); + if (entries != null && !entries.isEmpty()) { + String timeStr = entries.get("time").toString(); + String expiresInStr = entries.get("expires_in").toString(); + long time = Long.parseLong(timeStr); + long expiresIn = Long.parseLong(expiresInStr); + Instant tokenExpirationTime = Instant.ofEpochSecond(time).plusSeconds(expiresIn); + Instant now = Instant.now(); + if (now.isAfter(tokenExpirationTime)){ + return refreshToken(url,hashMap); + }else { + String accessToken = entries.get("access_token").toString(); + String tokenType = entries.get("token_type").toString(); + String string = HttpClientUtils.sendPostToken(url, hashMap, tokenType + " " + accessToken); + return StrUtil.isNotBlank(string) ? string : JSONUtil.createObj().toString(); + } + }else { + return refreshToken(url, hashMap); + } + } + + private String refreshToken(String url, Map<String, Object> hashMap) { + JSONObject parseObj = getToken(); + if (parseObj != null) { + Integer expiresIn = parseObj.getInt("expires_in"); + if (expiresIn != null) { + parseObj.putOpt("time", Instant.now().getEpochSecond()); + redisTemplate.opsForHash().putAll("token:his:df", parseObj); + redisTemplate.expire("token:his:df", expiresIn - 10, TimeUnit.SECONDS); + + String accessToken = parseObj.getStr("access_token"); + String tokenType = parseObj.getStr("token_type"); + String string = HttpClientUtils.sendPostToken(url, hashMap, tokenType + " " + accessToken); + return StrUtil.isNotBlank(string) ? string : JSONUtil.createObj().toString(); + } + } + return JSONUtil.createObj().toString(); } -- Gitblit v1.8.0