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