From dd0ab3867cb4092c222ecf156fc71c6c4777ddf3 Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期一, 16 六月 2025 14:19:46 +0800
Subject: [PATCH] zjh20250616

---
 src/main/java/com/example/utils/synczd/shanjianyi/DictionaryUtilShanXiWeiNanBjfhyy.java   |  495 ++++++++++++++++++++++++++
 src/main/java/com/example/factory/ServiceFactory.java                                     |    2 
 src/main/java/com/example/service/shanjianyi/shanxiqin/baoji/bjfhyy/BjfhyyHisService.java |  610 ++++++++++++++++++++++++++++++++
 3 files changed, 1,107 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/example/factory/ServiceFactory.java b/src/main/java/com/example/factory/ServiceFactory.java
index b2922e1..47e6601 100644
--- a/src/main/java/com/example/factory/ServiceFactory.java
+++ b/src/main/java/com/example/factory/ServiceFactory.java
@@ -53,6 +53,8 @@
                 return "ShanXiQinWeiNanWbzxyy";
             case "shanxiqinbjxjyy":
                 return "ShanXiQinBaoJiBjxjyy";
+            case "shanxiqinbjfhyy":
+                return "ShanXiQinBaoJiBjfhyy";
             default:
                 throw new RuntimeException("鎵句笉鍒板搴旂殑鍖婚櫌鏈嶅姟閰嶇疆锛�" + hospName);
         }
diff --git a/src/main/java/com/example/service/shanjianyi/shanxiqin/baoji/bjfhyy/BjfhyyHisService.java b/src/main/java/com/example/service/shanjianyi/shanxiqin/baoji/bjfhyy/BjfhyyHisService.java
new file mode 100644
index 0000000..c8852ca
--- /dev/null
+++ b/src/main/java/com/example/service/shanjianyi/shanxiqin/baoji/bjfhyy/BjfhyyHisService.java
@@ -0,0 +1,610 @@
+package com.example.service.shanjianyi.shanxiqin.baoji.bjfhyy;
+
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSON;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.example.config.ConfigValue;
+import com.example.constant.ApiParamsConstants;
+import com.example.domain.DictCommonHisConfig;
+import com.example.domain.HisSyncDict;
+import com.example.domain.TjFlowingWaterHis;
+import com.example.service.DictCommonHisConfigService;
+import com.example.service.HisService;
+import com.example.utils.AjaxResult;
+import com.example.utils.FieldNameConverter;
+import com.example.utils.HttpClientUtils;
+import com.example.utils.synczd.shanjianyi.DictionaryUtilShanXiWeiNanBjfhyy;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.time.Instant;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
+ * @Author: zhaowenxuan
+ * @Date: 2025/3/18 10:17
+ */
+@Slf4j
+@Service("ShanXiQinBaoJiBjfhyy")
+public class BjfhyyHisService implements HisService {
+    @Autowired
+    private DictionaryUtilShanXiWeiNanBjfhyy syncZd;
+    @Autowired
+    private ConfigValue configValue;
+
+//    http://oapi.xamjyy.com/OAPI/oauth/token
+//    grant_type:client_credentials
+//    client_id:XFZZQEfXTZ7exhhi
+//    client_secret:05a192176c21edfcc9cf5fa26fc5a9e0c5b131ad
+//    http://oapi.xamjyy.com/OAPI
+
+    @Autowired
+    private RedisTemplate<Object ,Object> redisTemplate;
+    @Autowired
+    private DictCommonHisConfigService dictCommonHisConfigService;
+
+    //鑾峰彇token
+    private JSONObject getToken () {
+        String GRANT_TYPE = "client_credentials";
+        String CLIENT_ID = "XFZZQEfXTZ7exhhi";
+        String CLIENT_SECRET = "05a192176c21edfcc9cf5fa26fc5a9e0c5b131ad";
+
+        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 = sendPostTokenFormUrlencoded (HIS_URL+"/oauth/token", map);
+        String his_url = dictCommonHisConfigService.getConfigValByHospitalAndKey("bjfhyy", "HIS_URL");
+        String post = HttpClientUtils.sendPostTokenFormUrlencoded(his_url + "/oauth/token", map, null);
+        if (StrUtil.isBlank(post)) return null;
+        return JSONUtil.parseObj(post);
+    }
+
+    @Override
+    public String jianDang(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("jiuZhenKh", params.get(ApiParamsConstants.CARD_ID));
+        map.put ("kaiLeiXing","4");
+        map.put ("xingMing", params.get(ApiParamsConstants.CUS_NAME));
+        long cusSex = Long.parseLong(params.get(ApiParamsConstants.CUS_SEX).toString());
+        if(cusSex==0L){
+            map.put ("xingBie","鐢�");
+        }else if(cusSex==1L){
+            map.put ("xingBie","濂�");
+        }else {
+            map.put ("xingBie","鏈煡");
+        }
+        map.put ("shenFenZh", params.get(ApiParamsConstants.CUS_ID_CARD));
+        map.put ("danWeiBh",params.get(ApiParamsConstants.COMP_ID));
+        map.put ("chuShengRq", params.get(ApiParamsConstants.CUS_BRITHDAY));
+        map.put ("lianXiDz", params.get(ApiParamsConstants.CUS_ADDR));
+        map.put ("lianXiDh", params.get(ApiParamsConstants.CUS_PHONE));
+        map.put ("feiYongLb","");
+        map.put ("feiYongXz","");
+        map.put ("jiLuLy","3");
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        map.put ("caoZuoYuan",config.getCzyId());
+        map.put ("chongZhiJe","");
+        map.put ("yiBaoKh","");
+        map.put ("geRenBh","");
+        map.put ("yiBaoBrXx","");
+        map.put ("gongZuoDw",params.get(ApiParamsConstants.COMP_NAME));
+        map.put ("canBaoXzMc","");
+        map.put ("muLuBlLb","");
+        map.put ("kunNanJzDj","");
+        map.put ("yiLiaoLb","");
+        map.put ("minZuDm","");
+        map.put ("minZuMc","");
+//        鑱屼笟缂栫爜
+        String post = sendPost(config.getHisUrl() + "/menZhenJz/jianDang", map);
+        JSONObject jsonObject = JSONUtil.parseObj(post);
+        if (jsonObject.getStr("returnCode").equals("1")) {
+            JSONObject obj = JSONUtil.createObj();
+            obj.putOpt("code","200");
+            obj.putOpt("data",jsonObject.getJSONObject("returnData"));
+            return JSONUtil.toJsonStr(obj);
+        }else {
+            JSONObject obj = JSONUtil.createObj();
+            obj.putOpt("code","500");
+            return JSONUtil.toJsonStr(obj);
+        }
+    }
+
+    @Override
+    public String getBingRenXxByShengFenZheng(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        map.put ("caoZuoYuan",config.getCzyId());
+        map.put ("shenFenZh", params.get(ApiParamsConstants.CUS_ID_CARD));
+        map.put ("danWeiBh",params.get(ApiParamsConstants.COMP_ID));
+        //鑱屼笟缂栫爜
+        String string = sendPostTokenFormUrlencoded(config.getHisUrl() + "/menZhenJz/getBingRenXxByShengFenZheng", map);
+        JSONObject object = JSONUtil.createObj();
+        if (StrUtil.isBlank(string)){
+            object.putOpt("code",500);
+            return JSONUtil.toJsonStr(object);
+        }
+        JSONObject entries = JSONUtil.parseObj(string);
+        log.info("鑾峰彇鐥呬汉淇℃伅杩斿洖鏁版嵁 ->{}", entries);
+        Object returnData = entries.get("returnData");
+        if (null != returnData && !returnData.toString().equals("null")) {
+            HashMap<String, String> hashMap = new HashMap<>();
+            JSONArray returnData1 = entries.getJSONArray("returnData");
+            JSONObject jsonObject = (JSONObject) returnData1.get(0);
+            hashMap.put(ApiParamsConstants.CARD_ID,jsonObject.getStr("jiuZhenKh"));
+            hashMap.put(ApiParamsConstants.PATIONID,jsonObject.getStr("bingRenId"));
+            object.putOpt("code",200);
+            object.putOpt("data",hashMap);
+            return JSONUtil.toJsonStr(object);
+        }else {
+            object.putOpt("code",404);
+        }
+        return JSONUtil.toJsonStr(object);
+    }
+
+    @Override
+    public String saveBingRenXx(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("bingRenId", params.get(ApiParamsConstants.PATIONID));
+        map.put ("kaiLeiXing","4");
+        map.put("jiuZhenKh",params.get(ApiParamsConstants.CARD_ID));
+        map.put ("xingMing", params.get(ApiParamsConstants.CUS_NAME));
+        Long cusSex = Long.parseLong(params.get(ApiParamsConstants.CUS_SEX).toString());
+        if (cusSex == 0L) {
+            map.put("xingBie", "鐢�");
+        } else if (cusSex == 1L) {
+            map.put("xingBie", "濂�");
+        } else {
+            map.put("xingBie", "鏈煡");
+        }
+
+        map.put ("shenFenZh", params.get(ApiParamsConstants.CUS_ID_CARD));
+        map.put ("danWeiBh","");
+        map.put ("chuShengRq", params.get(ApiParamsConstants.CUS_BRITHDAY));
+        map.put ("lianXiDz", params.get(ApiParamsConstants.CUS_ADDR));
+        map.put ("lianXiDh", params.get(ApiParamsConstants.CUS_PHONE));
+        map.put ("feiYongLb","");
+        map.put ("feiYongXz","");
+        map.put ("jiLuLy","3");
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        map.put ("caoZuoYuan",config.getCzyId());
+        //鑱屼笟缂栫爜
+        String post = sendPost(config.getHisUrl() + "/menZhenJz/saveBingRenXx", map);
+        JSONObject jsonObject = JSONUtil.parseObj(post);
+        if (jsonObject.getStr("returnCode").equals("1")) {
+            JSONObject obj = JSONUtil.createObj();
+            obj.putOpt("code","200");
+            obj.putOpt("data",jsonObject.getJSONObject("returnData"));
+            return JSONUtil.toJsonStr(obj);
+        }else {
+            JSONObject obj = JSONUtil.createObj();
+            obj.putOpt("code","500");
+            return JSONUtil.toJsonStr(obj);
+        }
+    }
+
+    @Override
+    public String getListDaiShouFei(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("bingRenId",params.get(ApiParamsConstants.PATIONID));
+        map.put ("jiuZhenKh",params.get(ApiParamsConstants.CARD_ID));
+        map.put ("yuanQuId","1");
+        //鑱屼笟缂栫爜
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        String post = sendPost(config.getHisUrl() + "/shouFei/getListDaiShouFei", map);
+        JSONObject jsonObject = JSONUtil.parseObj(post);
+        if (jsonObject.getStr("returnCode").equals("1")) {
+            JSONObject data = jsonObject.getJSONObject("returnData");
+            JSONArray list = data.getJSONArray("dtoMzFeiyong1List");
+            JSONArray list1 = data.getJSONArray("dtoMzFeiYong2List");
+            JSONObject result = JSONUtil.createObj();
+            result.putOpt("list1",list);
+            result.putOpt("list2",list1);
+            return AjaxResult.success(result);
+        }else {
+            return AjaxResult.error(post);
+        }
+    }
+
+    @Override
+    public String createMenZhenFy(Map<String, Object> params) {
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("bingRenId",params.get(ApiParamsConstants.PATIONID));
+        map.put ("jiuZhenKh",params.get(ApiParamsConstants.CARD_ID));
+        map.put ("caoZuoYuan",config.getCzyId());
+        map.put ("yuanQuId","1");
+        map.put ("yingYongId","870101");
+        map.put ("kaiDanKs",config.getKdks());
+        map.put ("dengJiLsh",params.get(ApiParamsConstants.Tj_NUM));
+        map.put ("shouTuiBz",params.get(ApiParamsConstants.SHOU_TUI_STATUS));
+        map.put ("feiYongMxList",params.get(ApiParamsConstants.FEI_YONG_INFO_LIST));
+        //鑱屼笟缂栫爜
+        String post = sendPost(config.getHisUrl() + "/shouFei/createMenZhenFy", map);
+        JSONObject jsonObject = JSONUtil.parseObj(post);
+        if (jsonObject.getInt("returnCode") != 1) return AjaxResult.error(post);
+        JSONObject data = jsonObject.getJSONObject("returnData");
+        JSONObject result = JSONUtil.createObj();
+        result.putOpt(ApiParamsConstants.PATIONID,data.getStr(ApiParamsConstants.PATIONID));
+        result.putOpt(ApiParamsConstants.FEI_YONG_ID,data.getStr(ApiParamsConstants.FEI_YONG_ID));
+
+        JSONArray feiYongMxList = data.getJSONArray("feiYongMxList");
+
+        ArrayList<TjFlowingWaterHis> tjFlowingWaterHis = new ArrayList<>();
+        for (Object o : feiYongMxList) {
+            JSONObject entries = (JSONObject) o;
+            TjFlowingWaterHis waterHis = new TjFlowingWaterHis();
+            waterHis.setId(IdUtil.getSnowflakeNextId());
+            waterHis.setParentId(data.getStr(ApiParamsConstants.FEI_YONG_ID));
+            waterHis.setCurrentId(entries.getStr("feiYongMxId"));
+            waterHis.setXmId(entries.getStr("xiangMuId"));
+            tjFlowingWaterHis.add(waterHis);
+        }
+        result.putOpt("mxList",tjFlowingWaterHis);
+        return AjaxResult.success(result);
+    }
+
+    @Override
+    public String cheXiaoMzFy(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("bingRenId",params.get(ApiParamsConstants.PATIONID));
+        map.put ("jiuZhenKh",params.get(ApiParamsConstants.CARD_ID));
+        ArrayList<JSONObject> ids = new ArrayList<>();
+        String string = params.get(ApiParamsConstants.FEI_YONG_ID_LIST).toString();
+        String[] split = string.split(",");
+        Arrays.stream(split).forEach(i -> {
+            JSONObject object = JSONUtil.createObj();
+            object.putOpt("feiYongId",i);
+            ids.add(object);
+        });
+        map.put ("feiYongIdList",ids);
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        //鑱屼笟缂栫爜
+        String post = sendPost(config.getHisUrl() + "/shouFei/cheXiaoMzFy", map);
+        JSONObject entries = JSONUtil.parseObj(post);
+        if (entries.getStr("returnCode").equals("1"))
+            return AjaxResult.success();
+        else return AjaxResult.error(post);
+    }
+
+    @Override
+    public String getKeShi(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("yuanQuId","1");
+        map.put ("keShiMc",params.get(ApiParamsConstants.DEPT_NAME));
+        map.put ("pageIndex",params.get(ApiParamsConstants.PAGE_INDEX));
+        map.put ("pageSize",params.get(ApiParamsConstants.PAGE_SIZE));
+        //鑱屼笟缂栫爜
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getKeShi", map);
+    }
+
+    @Override
+    public String getListYiShengZd(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("yuanQuId","1");
+        map.put ("keShiMc",params.get(ApiParamsConstants.DEPT_NAME));
+        map.put ("bianGengSj","");
+        map.put ("pageIndex",params.get(ApiParamsConstants.PAGE_INDEX));
+        map.put ("pageSize",params.get(ApiParamsConstants.PAGE_SIZE));
+        //鑱屼笟缂栫爜
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getListYiShengZd", map);
+    }
+
+    @Override
+    public String getShouFeiXm(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("queryString",params.get(ApiParamsConstants.COMMON_QUERY_KEY));
+        map.put ("bianGengSj","");
+        map.put ("pageIndex",params.get(ApiParamsConstants.PAGE_INDEX));
+        map.put ("pageSize",params.get(ApiParamsConstants.PAGE_SIZE));
+        //鑱屼笟缂栫爜
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getShouFeiXm", map);
+    }
+
+    @Override
+    public String getKeShiByConditions(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("xingZhiSx","");
+        map.put ("queryString",params.get(ApiParamsConstants.COMMON_QUERY_KEY));
+        map.put ("zuoFeiBz",params.get(ApiParamsConstants.DEPT_ZUOFEI_STATUS));
+        map.put ("yuanQuId","1");
+        map.put ("keShiIds",params.get(ApiParamsConstants.DEPT_IDS));
+        map.put ("ifPlus","");
+        //鑱屼笟缂栫爜
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getKeShiByConditions", map);
+    }
+
+    @Override
+    public String getYangBen(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("queryString",params.get(ApiParamsConstants.COMMON_QUERY_KEY));
+        map.put ("pageIndex",params.get(ApiParamsConstants.PAGE_INDEX));
+        map.put ("pageSize",params.get(ApiParamsConstants.PAGE_SIZE));
+        //鑱屼笟缂栫爜
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getYangBen", map);
+    }
+
+    @Override
+    public String getListBingQuZd(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("yuanQuId",params.get(ApiParamsConstants.YUANQU_ID));
+        map.put ("keShiId",params.get(ApiParamsConstants.DEPT_ID));
+        map.put ("pageIndex",params.get(ApiParamsConstants.PAGE_INDEX));
+        map.put ("pageSize",params.get(ApiParamsConstants.PAGE_SIZE));
+        //鑱屼笟缂栫爜
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getListBingQuZd", map);
+    }
+
+    @Override
+    public String getZhiGongPage(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("bianGengSj","");
+        map.put ("pageIndex",params.get(ApiParamsConstants.PAGE_INDEX));
+        map.put ("pageSize",params.get(ApiParamsConstants.PAGE_SIZE));
+        //鑱屼笟缂栫爜
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getZhiGongPage", map);
+    }
+
+    @Override
+    public String getJianChaXm(Map<String, Object> params) {
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("queryString",params.get(ApiParamsConstants.COMMON_QUERY_KEY));
+        map.put ("bianGengSj","");
+        map.put ("pageIndex",params.get(ApiParamsConstants.PAGE_INDEX));
+        map.put ("pageSize",params.get(ApiParamsConstants.PAGE_SIZE));
+        //鑱屼笟缂栫爜
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getJianChaXm", map);
+    }
+
+    @Override
+    public String getJianYanXm(Map<String, Object> map) {
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("queryCode",map.get(ApiParamsConstants.COMMON_QUERY_KEY));
+        hashMap.put("page",map.get(ApiParamsConstants.PAGE_INDEX));
+        hashMap.put("size",map.get(ApiParamsConstants.PAGE_SIZE));
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getJianYanXm", hashMap);
+    }
+
+    @Override
+    public String getShouFeiXmJg(Map<String, Object> map) {
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("shouFeiXmId",map.get(ApiParamsConstants.COMMON_QUERY_KEY));
+        hashMap.put("jiaGeTx",map.get(ApiParamsConstants.COMMON_QUERY_KEY2));
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getShouFeiXmJg", hashMap);
+    }
+
+    @Override
+    public String getRongQi(Map<String, Object> map) {
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("queryString",map.get(ApiParamsConstants.COMMON_QUERY_KEY));
+        hashMap.put("pageIndex",map.get(ApiParamsConstants.PAGE_INDEX));
+        hashMap.put("pageSize",map.get(ApiParamsConstants.PAGE_SIZE));
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getRongQi", hashMap);
+    }
+
+    @Override
+    public String getJyYangBen(Map<String, Object> map) {
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("queryString",map.get(ApiParamsConstants.COMMON_QUERY_KEY));
+        hashMap.put("pageIndex",map.get(ApiParamsConstants.PAGE_INDEX));
+        hashMap.put("pageSize",map.get(ApiParamsConstants.PAGE_SIZE));
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        return sendPost(config.getHisUrl()+"/zhuShuJu/getYangBen", hashMap);
+    }
+
+    @Override
+    public String pushZhiFuMsg(String hospName,Map<String, Object> params) {
+        log.info("鍥炶皟瑙﹀彂 ->{}",params);
+        configValue.refresh();
+        Map<String, Object> map = new HashMap<> ();
+        map.put ("feiYongId",params.get("feiyongid"));
+        String string = params.get("status").toString();
+        if (!string.equals("1"))
+            string = "2";
+        map.put ("yeWuLx",string);
+        // 鍙傛暟绫诲瀷鍖哄垎
+        map.put("type","1");
+        HashMap<String, Object> headers = new HashMap<>();
+        headers.put("hospId","bjfhyy");
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        String post = HttpClientUtils.sendPost(config.getTjUrl() + "/callBack/pushZhiFuMsg", map,headers);
+        JSONObject jsonObject = JSONUtil.parseObj(post);
+        JSONObject obj = JSONUtil.createObj();
+        if (jsonObject.getStr("code").equals("200")) {
+            obj.putOpt("returnCode",1);
+            obj.putOpt("exceptionContent","");
+            obj.putOpt("returnData",null);
+        }else {
+            obj.putOpt("returnCode",0);
+            obj.putOpt("exceptionContent",jsonObject.getStr("msg"));
+            obj.putOpt("returnData",null);
+        }
+        return JSONUtil.toJsonStr(obj);
+    }
+
+
+    private String sendPost(String url, Map<String, Object> hashMap){
+        Map<Object, Object> entries = redisTemplate.opsForHash().entries("token:his:shanxiqinbjfhyy");
+        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,"json");
+            }else {
+                String accessToken = entries.get("access_token").toString();
+                String tokenType = entries.get("token_type").toString();
+                String string = HttpClientUtils.sendPostToken(url, hashMap, tokenType + " " + accessToken);
+
+                if(StrUtil.isNotBlank(string)){
+                    JSON json = FieldNameConverter.convertFieldNames(JSONUtil.parse(string));
+                    return JSONUtil.toJsonStr(json);
+                } else return JSONUtil.createObj().toString();
+            }
+        }else {
+            return refreshToken(url, hashMap,"json");
+        }
+    }
+
+    private String sendPostTokenFormUrlencoded(String url, Map<String, Object> hashMap){
+        Map<Object, Object> entries = redisTemplate.opsForHash().entries("token:his:shanxiqinbjfhyy");
+        if (!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,"url");
+            }else {
+                String accessToken = entries.get("access_token").toString();
+                String tokenType = entries.get("token_type").toString();
+                String string = HttpClientUtils.sendPostTokenFormUrlencoded(url, hashMap, tokenType + " " + accessToken);
+                return StrUtil.isNotBlank(string) ? string : JSONUtil.createObj().toString();
+            }
+        }else {
+            return refreshToken(url, hashMap,"url");
+        }
+    }
+
+    private String sendPostTokenFormData(String url, Map<String, Object> hashMap){
+        Map<Object, Object> entries = redisTemplate.opsForHash().entries("token:his:shanxiqinbjfhyy");
+        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,"form");
+            }else {
+                String accessToken = entries.get("access_token").toString();
+                String tokenType = entries.get("token_type").toString();
+                String string = HttpClientUtils.sendPostTokenFormData(url, hashMap, tokenType + " " + accessToken);
+                if(StrUtil.isNotBlank(string)){
+                    JSON json = FieldNameConverter.convertFieldNames(JSONUtil.parse(string));
+                    return JSONUtil.toJsonStr(json);
+                }else return JSONUtil.createObj().toString();
+            }
+        }else {
+            return refreshToken(url, hashMap,"form");
+        }
+    }
+
+    private String refreshToken(String url, Map<String, Object> hashMap,String type) {
+        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:shanxiqinbjfhyy", parseObj);
+                redisTemplate.expire("token:his:shanxiqinbjfhyy", expiresIn - 10, TimeUnit.SECONDS);
+
+                String accessToken = parseObj.getStr("access_token");
+                String tokenType = parseObj.getStr("token_type");
+                switch (type){
+                    case "json":
+                        String string = HttpClientUtils.sendPostToken(url, hashMap, tokenType + " " + accessToken);
+                        if(StrUtil.isNotBlank(string)){
+                            JSON json = FieldNameConverter.convertFieldNames(JSONUtil.parse(string));
+                            return JSONUtil.toJsonStr(json);
+                        } else return JSONUtil.createObj().toString();
+                    case "form":
+                        String string1 = HttpClientUtils.sendPostTokenFormData(url, hashMap, tokenType + " " + accessToken);
+                        if(StrUtil.isNotBlank(string1)){
+                            JSON json = FieldNameConverter.convertFieldNames(JSONUtil.parse(string1));
+                            return JSONUtil.toJsonStr(json);
+                        } else return JSONUtil.createObj().toString();
+                    case "url":
+                        String string2 = HttpClientUtils.sendPostTokenFormUrlencoded(url, hashMap, tokenType + " " + accessToken);
+                        if(StrUtil.isNotBlank(string2)){
+                            JSON json = FieldNameConverter.convertFieldNames(JSONUtil.parse(string2));
+                            return JSONUtil.toJsonStr(json);
+                        } else return JSONUtil.createObj().toString();
+                }
+            }
+        }
+        return JSONUtil.createObj().toString();
+    }
+
+    @Override
+    public void syncDict(String hospName) {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("hosp","shanxiqinbjfhyy");
+        HashMap<String, Object> headers = new HashMap<>();
+        headers.put("hospId","bjfhyy");
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        String post = HttpClientUtils.sendPost(config.getTjUrl() + "/callBack/getZdList", map,headers);
+        JSONArray jsonArray = JSONUtil.parseObj(post).getJSONArray("data");
+        if (jsonArray != null && !jsonArray.isEmpty()) {
+            List<HisSyncDict> list = jsonArray.toList(HisSyncDict.class);
+            String token = "";
+            Map<Object, Object> entries = redisTemplate.opsForHash().entries("token:his:shanxiqinbjfhyy");
+            if (!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)){
+                    JSONObject parseObj = getToken();
+                    if (parseObj != null) {
+                        expiresIn = parseObj.getLong("expires_in");
+                        if (expiresIn != null) {
+                            parseObj.putOpt("time", Instant.now().getEpochSecond());
+                            redisTemplate.opsForHash().putAll("token:his:shanxiqinbjfhyy", parseObj);
+                            redisTemplate.expire("token:his:shanxiqinbjfhyy", expiresIn - 10, TimeUnit.SECONDS);
+                            String accessToken = parseObj.getStr("access_token");
+                            String tokenType = parseObj.getStr("token_type");
+                            token = tokenType + " " + accessToken;
+                        }
+                    }
+                }else {
+                    String accessToken = entries.get("access_token").toString();
+                    String tokenType = entries.get("token_type").toString();
+                    token = tokenType + " " + accessToken;
+                }
+            }else {
+                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:shanxiqinbjfhyy", parseObj);
+                        redisTemplate.expire("token:his:shanxiqinbjfhyy", expiresIn - 10, TimeUnit.SECONDS);
+                        String accessToken = parseObj.getStr("access_token");
+                        String tokenType = parseObj.getStr("token_type");
+                        token = tokenType + " " + accessToken;
+                    }
+                }
+            }
+            if (StrUtil.isNotBlank(token))
+                syncZd.exec(list, token);
+        }
+    }
+}
diff --git a/src/main/java/com/example/utils/synczd/shanjianyi/DictionaryUtilShanXiWeiNanBjfhyy.java b/src/main/java/com/example/utils/synczd/shanjianyi/DictionaryUtilShanXiWeiNanBjfhyy.java
new file mode 100644
index 0000000..6d6d5c6
--- /dev/null
+++ b/src/main/java/com/example/utils/synczd/shanjianyi/DictionaryUtilShanXiWeiNanBjfhyy.java
@@ -0,0 +1,495 @@
+package com.example.utils.synczd.shanjianyi;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.example.domain.DictCommonHisConfig;
+import com.example.domain.HisSyncDict;
+import com.example.mapper.HisSyncDictMapper;
+import com.example.service.DictCommonHisConfigService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.sql.*;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
+ * @Author: zhaowenxuan
+ * @Date: 2025/3/18 11:19
+ */
+@Slf4j
+@Component
+public class DictionaryUtilShanXiWeiNanBjfhyy {
+
+//    @Autowired
+//    private ConfigValue configValue;
+    @Autowired
+    private HisSyncDictMapper hisSyncDictMapper;
+    @Autowired
+    private DictCommonHisConfigService dictCommonHisConfigService;
+
+//    private static String CONFIG_PATH;
+//    private static String BASE_API_URL = "";
+    private static final int SIZE = 100;
+//    private static String USER = "";
+//    private static String PASSWORD = "";
+//    private static String URL = "";
+//    private static String NAME = "";
+//    @Value("${config.path}")
+//    public void setConfigPath(String configPath) {
+//        CONFIG_PATH = configPath;
+//        NAME = configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.name");
+//        URL = "jdbc:mysql://" + configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.ip")
+//        + ":" + configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.prot") + "/" + NAME +
+//                "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8";
+//        USER = configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.username");
+//        PASSWORD = configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.password");
+//        String apiUrl = configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.his_api_url");
+//        String apiPort = configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.his_api_port");
+//        BASE_API_URL = apiUrl+":"+apiPort+configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.hisapiappend");
+//    }
+
+
+    /**
+     * 鏆傛椂涓嶅仛
+     * 1.90 闂ㄨ瘖鏄庣粏璁¤垂鍙婄粍鍚堣璐归」鐩� MZJFZHMXXM
+     *
+     */
+
+// 鍒嗛〉姣忔1000鏉�
+    static {
+        try {
+            Class.forName("com.mysql.cj.jdbc.Driver");
+        } catch (Exception e) {
+            System.out.println("闈欐�佷唬鐮佸潡寮傚父 ->"+e.getMessage());
+        }
+    }
+
+    /**
+     * 杩涜鍚屾
+     */
+    public void exec(List<HisSyncDict> hisSyncDicts, String token){
+        DictCommonHisConfig config = dictCommonHisConfigService.getConfigByHospital("bjfhyy");
+        log.info("寮�濮嬫墽琛屽悓姝�");
+        Connection connection = getConnection(config);
+        if (connection == null)
+            return;
+        for (HisSyncDict hisSyncDict : hisSyncDicts) {
+            boolean isFormatJson = false;
+            if (hisSyncDict.getDictName().equals("getKeShizd")
+                    || hisSyncDict.getDictName().equals("getKeShiByConditionszd")
+                    || hisSyncDict.getDictName().equals("getShouFeiXmzd")
+                    || hisSyncDict.getDictName().equals("getListYiShengZd")
+            )
+                isFormatJson = true;
+            hisSyncDict.setDictName(hisSyncDict.getHospId()+"_"+hisSyncDict.getDictName());
+            extracted(config.getDbName(), connection, hisSyncDict,token,isFormatJson,config);
+        }
+        try {
+            connection.close();
+        } catch (SQLException ignored) { }
+        hisSyncDictMapper.proSyncCommonDict();
+        log.info("鎵ц鍚屾瀹屾瘯");
+    }
+
+    private void extracted(String name, Connection connection, HisSyncDict hisSyncDict,String token,Boolean isFormatJson,DictCommonHisConfig config) {
+        String method = hisSyncDict.getDictName();
+        log.info("寮�濮嬭姹備唬鐮� ->{}", method);
+        String tabName = "ltkj_" + method.toLowerCase();
+        boolean isLimit = false;
+        int page = 1;
+        int maxPage = 1;
+        String params = hisSyncDict.getParams();
+        params = params.replace("${pageIndex}",String.valueOf(page));
+        params = params.replace("${pageSize}",String.valueOf(SIZE));
+        JSONObject object = JSONUtil.parseObj(params);
+        if (hisSyncDict.getIsLimit() == 1) {
+            isLimit = true;
+        }
+        log.info("璇锋眰鎺ュ彛 ->{}, 璇锋眰鍙傛暟 ->{}", config.getHisUrl()+hisSyncDict.getUrl(), object);
+        JSONObject entries = execRequest(config,object.toString(),hisSyncDict,token);
+        log.info("璇锋眰杩斿洖 ->{}", entries.toString());
+        if (isFormatJson){
+            if ("1".equals(entries.getStr("returnCode"))) {
+                JSONObject response = entries.getJSONObject("returnData");
+                try {
+                    dropTable(tabName, connection);
+                } catch (SQLException e) {
+                    log.error("鍒犻櫎琛ㄥ紓甯� ->{}", e.getMessage());
+                }
+                if (isLimit) {
+                    maxPage = LimitInsertData(connection, tabName, response, name, page);
+                    log.info("璁$畻椤电爜涓� ->{}", maxPage);
+                    if (maxPage > 1) {
+                        for (page = 2; page <= maxPage; page++) {
+                            params = hisSyncDict.getParams();
+                            params = params.replace("${pageIndex}",String.valueOf(page));
+                            params = params.replace("${pageSize}",String.valueOf(SIZE));
+                            object = JSONUtil.parseObj(params);
+                            log.info("璇锋眰鎺ュ彛 ->{}, 璇锋眰鍙傛暟 ->{}", config.getHisUrl()+hisSyncDict.getUrl(), object.toString());
+                            entries = execRequest(config,object.toString(),hisSyncDict,token);
+                            log.info("璇锋眰杩斿洖 ->{}", entries.toString());
+                            response = entries.getJSONObject("returnData");
+                            if ("1".equals(entries.getStr("returnCode"))) {
+                                LimitInsertData(connection, tabName, response, name, page);
+                            } else {
+                                log.error("{} 璇锋眰澶辫触锛歿}", method, object.toString());
+                            }
+                        }
+                    }
+                } else {
+                    JSONArray resultData = response.getJSONArray("list");
+                    List<JSONObject> list = JSONUtil.toList(resultData, JSONObject.class);
+                    for (JSONObject jsonObject : list) {
+                        editDataBase(connection, tabName, jsonObject, name);
+                    }
+                }
+            }
+        }else {
+            if ("1".equals(entries.getStr("returnCode"))) {
+                Object returnData = entries.get("returnData");
+                if (returnData instanceof JSONObject){
+                    JSONObject response = entries.getJSONObject("returnData");
+                    try {
+                        dropTable(tabName, connection);
+                    } catch (SQLException e) {
+                        log.error("鍒犻櫎琛ㄥ紓甯� ->{}", e.getMessage());
+                    }
+                    editDataBase(connection, tabName, response, name);
+                }else {
+                    JSONArray response = entries.getJSONArray("returnData");
+                    try {
+                        dropTable(tabName, connection);
+                        List<JSONObject> list = JSONUtil.toList(response, JSONObject.class);
+                        for (JSONObject jsonObject : list) {
+                            editDataBase(connection, tabName, jsonObject, name);
+                        }
+                    } catch (SQLException e) {
+                        log.error("鍒犻櫎琛ㄥ紓甯� ->{}", e.getMessage());
+                    }
+                }
+                if (isLimit) {
+                    JSONArray response = entries.getJSONArray("returnData");
+                    if (tabName.contains("_getjianchaxmzd")) maxPage = 10000;
+                    log.info("璁$畻椤电爜涓� ->{}", maxPage);
+                    if (maxPage > 1) {
+                        for (page = 2; page <= maxPage; page++) {
+                            params = hisSyncDict.getParams();
+                            params = params.replace("${pageIndex}",String.valueOf(page));
+                            params = params.replace("${pageSize}",String.valueOf(SIZE));
+                            object = JSONUtil.parseObj(params);
+                            log.info("璇锋眰鎺ュ彛 ->{}, 璇锋眰鍙傛暟 ->{}", config.getHisUrl()+hisSyncDict.getUrl(), object.toString());
+                            entries = execRequest(config,object.toString(),hisSyncDict,token);
+                            log.info("璇锋眰杩斿洖 ->{}", entries.toString());
+                            response = entries.getJSONArray("returnData");
+                            if (response.isEmpty())
+                                break;
+                            List<JSONObject> list = JSONUtil.toList(response, JSONObject.class);
+                            for (JSONObject jsonObject : list) {
+                                editDataBase(connection, tabName, jsonObject, name);
+                            }
+                        }
+                    }
+                } else {
+                    JSONArray response = entries.getJSONArray("returnData");
+                    List<JSONObject> list = JSONUtil.toList(response, JSONObject.class);
+                    for (JSONObject jsonObject : list) {
+                        editDataBase(connection, tabName, jsonObject, name);
+                    }
+                }
+            }
+        }
+
+    }
+
+    /**
+     * 閽堝浜庡垎椤垫帴鍙� 鍒涘缓琛ㄣ�佹彃鍏ユ暟鎹�
+     *
+     * @param connection
+     * @param tabName
+     * @param response
+     * @return
+     */
+    private int LimitInsertData(Connection connection, String tabName, JSONObject response,String name,Integer page) {
+        JSONArray jsonArray = response.getJSONArray("list");
+        JSONObject entries = (JSONObject) jsonArray.get(0);
+        int maxPage;
+        // 琛屾暟 鏁版嵁杩斿洖鐨勭鍑犺
+        Integer rowNumber = response.getInt("RowNumber");
+        // 鎬绘潯鏁�
+        Integer totalCount = response.getInt("totalRows");
+        Integer pageCount = response.getInt("pageCount");
+        maxPage = (totalCount + 100 - 1) / 100;
+        log.info("璇锋眰杩斿洖鎬绘潯鏁� ->{},褰撳墠椤� ->{},鎬婚〉鏁� ->{}",totalCount,page,maxPage);
+        jsonArray.forEach(obj -> {
+            editDataBase(connection, tabName, (JSONObject) obj,name);
+        });
+        return pageCount;
+    }
+
+    /**
+     * 鎿嶄綔鏁版嵁搴�
+     *
+     * @param connection
+     * @param tabName
+     * @param obj
+     */
+    private void editDataBase(Connection connection, String tabName, JSONObject obj,String name) {
+        try {
+            if (!tabIsExists(connection, tabName,name)) {
+                // 鍒涘缓琛�
+                creatTable(obj, tabName, connection);
+            }
+        } catch (SQLException throwables) {
+            log.error("鍒涘缓琛ㄥ紓甯�");
+            log.error(throwables.getSQLState());
+            log.error(throwables.getMessage());
+        }
+        // 瀵规瘮瀛楁 骞舵彃鍏ユ暟鎹�
+        try {
+            operationTable(obj, tabName, connection);
+        } catch (SQLException e) {
+            log.error("瀵规瘮瀛楁鎻掑叆鏁版嵁寮傚父");
+            log.error(e.getSQLState());
+            log.error(e.getMessage());
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 鎵цpost璇锋眰
+     *
+     * @param params 璇锋眰鍙傛暟 渚嬪锛� param1=val1&param2=val2
+     * @return 璇锋眰杩斿洖鐨刯son杞崲鍚庣殑JSONObject瀵硅薄
+     */
+    private JSONObject execRequest(DictCommonHisConfig config,String params,HisSyncDict hisSyncDict,String token) {
+        URL url = null;
+        HttpURLConnection connection = null;
+        OutputStreamWriter writer = null;
+        BufferedReader reader = null;
+        StringBuilder response = new StringBuilder();
+        try {
+            url = new URL(config.getHisUrl()+hisSyncDict.getUrl());
+            connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+            connection.setRequestProperty("Authorization", token);
+            log.info("璇锋眰鎺ュ彛 ->{}", hisSyncDict.getUrl());
+            if (hisSyncDict.getUrl().equals("/zhuShuJu/getListYiShengZd") || hisSyncDict.getUrl().equals("/zhuShuJu/getZhiGongPage") || hisSyncDict.getUrl().equals("/zhuShuJu/getJianChaXm")){
+                connection.setRequestProperty("dangQianYhId","1001");
+                if (hisSyncDict.getUrl().equals("/zhuShuJu/getJianChaXm"))
+                    connection.setRequestProperty("yuanQuId","1");
+            }
+            connection.setDoOutput(true);
+            StringBuilder postData = new StringBuilder();
+            JSONObject jsonObject = JSONUtil.parseObj(params);
+            for (String key : jsonObject.keySet()) {
+                if (postData.length() > 0) {
+                    postData.append("&");
+                }
+                String encode = URLEncoder.encode(key, "UTF-8");
+                String encode1 = URLEncoder.encode(String.valueOf(jsonObject.get(key)), "UTF-8");
+                postData.append(encode).append("=").append(encode1);
+            }
+
+            writer = new OutputStreamWriter(connection.getOutputStream());
+            writer.write(postData.toString());
+            writer.flush();
+            reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+            String line;
+            while ((line = reader.readLine()) != null) {
+                response.append(line);
+            }
+            return JSONUtil.parseObj(response);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (connection != null) {
+                connection.disconnect();
+            }
+        }
+        return null;
+    }
+
+    public Connection getConnection(DictCommonHisConfig config) {
+        //    public void setConfigPath(String configPath) {
+//        CONFIG_PATH = configPath;
+//        NAME = configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.name");
+//        URL = "jdbc:mysql://" + configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.ip")
+//        + ":" + configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.prot") + "/" + NAME +
+//                "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8";
+//        USER = configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.username");
+//        PASSWORD = configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.password");
+//        String apiUrl = configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.his_api_url");
+//        String apiPort = configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.his_api_port");
+//        BASE_API_URL = apiUrl+":"+apiPort+configValue.getConfigValue("ShanXi_Qin_BaoJi_Bjxjyy.hisapiappend");
+//    }
+        try {
+            String url = "jdbc:mysql://" + config.getDbIp()
+        + ":" + config.getDbPort() + "/" + config.getDbName() +
+                "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8";
+            log.info("鏁版嵁搴撲俊鎭� ->{},{},{}",config.getDbUser(),config.getDbPassword(),url);
+            return DriverManager.getConnection(url,config.getDbUser(),config.getDbPassword());
+        } catch (Exception throwables) {
+            log.error("鑾峰彇sql杩炴帴澶辫触");
+            throwables.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 琛ㄦ槸鍚﹀瓨鍦�
+     *
+     * @param connection
+     * @param tableName
+     * @return
+     * @throws SQLException
+     */
+    private Boolean tabIsExists(Connection connection, String tableName,String name) throws SQLException {
+        String tabSql = "SELECT table_name FROM information_schema.tables WHERE table_schema = ? AND table_name = ?";
+        PreparedStatement statement = connection.prepareStatement(tabSql);
+        statement.setString(1, name);
+        statement.setString(2, tableName);
+//        log.info("鍒ゆ柇琛ㄦ槸鍚﹀瓨鍦� sql-> {}", statement.toString());
+        ResultSet resultSet = statement.executeQuery();
+        boolean next = resultSet.next();
+        statement.close();
+        return next;
+    }
+
+    /**
+     * 鎿嶄綔琛�
+     *
+     * @param tabName
+     * @param connection
+     * @throws SQLException
+     */
+    private void operationTable(JSONObject jsonObject, String tabName, Connection connection) throws SQLException {
+        List<String> columns = getColumns(tabName, connection);
+//        log.info("褰撳墠琛ㄥ瓧娈典负 ->{}", columns);
+        ArrayList<String> responseColums = new ArrayList<>();
+        for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
+            String key = entry.getKey().trim().toLowerCase();
+            responseColums.add(key);
+        }
+//        log.info("璇锋眰杩斿洖鐨勫瓧娈典负 ->{}", responseColums);
+        responseColums.removeAll(columns);
+//        log.info("闇�瑕佸鍔犵殑瀛楁 ->{}",responseColums);
+        if (!responseColums.isEmpty()) {
+            // 闇�瑕佸鍔犲瓧娈� 骞舵彃鍏ユ暟鎹�
+            for (String colum : responseColums) {
+                String sql = "alter table " + tabName + " add column " + colum + " VARCHAR(200) null";
+//                log.info("淇敼瀛楁 ->{}",sql.toString());
+                Statement statement = connection.createStatement();
+                statement.executeUpdate(sql);
+                statement.close();
+            }
+            insertData(tabName, connection, jsonObject);
+        } else {
+            insertData(tabName, connection, jsonObject);
+        }
+    }
+
+    /**
+     * 鎻掑叆鏁版嵁
+     *
+     * @param tabName
+     * @param connection
+     * @param jsonObject
+     * @throws SQLException
+     */
+    private void insertData(String tabName, Connection connection, JSONObject jsonObject) throws SQLException {
+        // 鎻掑叆鏁版嵁鍓� 鍏堟煡璇㈡暟鎹槸鍚﹀瓨鍦�
+        StringBuilder insertSqlBuilder = new StringBuilder();
+        StringBuilder valueBuilder = new StringBuilder();
+        insertSqlBuilder.append("insert into ").append(tabName).append(" (");
+        for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
+            String defaultVal = entry.getValue().toString();
+            String key = entry.getKey().trim().toLowerCase();
+            if (StrUtil.isBlank(defaultVal) || defaultVal.equals("null"))
+                continue;
+            String val = defaultVal.trim().replaceAll("\\s+", "").replace("\\","");
+            insertSqlBuilder.append(key).append(", ");
+            valueBuilder.append("'").append(val.replaceAll("'","鈥�")).append("', ");
+        }
+        insertSqlBuilder.append("insert_time, ");
+        String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+        valueBuilder.append("'").append(time).append("'").append(", ");
+        insertSqlBuilder.delete(insertSqlBuilder.length() - 2, insertSqlBuilder.length());
+        valueBuilder.delete(valueBuilder.length() - 2, valueBuilder.length());
+        insertSqlBuilder.append(") values (").append(valueBuilder).append(")");
+        // 鎻掑叆鏁版嵁
+        Statement statement = connection.createStatement();
+        log.info("鎻掑叆鏁版嵁 sql-> {}", insertSqlBuilder.toString());
+        statement.execute(insertSqlBuilder.toString());
+        statement.close();
+    }
+
+    /**
+     * 鑾峰彇琛ㄧ殑鍒�
+     *
+     * @param tabName
+     * @param connection
+     * @return
+     * @throws SQLException
+     */
+    private List<String> getColumns(String tabName, Connection connection) throws SQLException {
+        DatabaseMetaData metaData = connection.getMetaData();
+        ResultSet columns = metaData.getColumns(null, null, tabName, null);
+        ArrayList<String> tabColumns = new ArrayList<>();
+        while (columns.next()) {
+            String columnName = columns.getString("column_name");
+            tabColumns.add(columnName);
+        }
+        return tabColumns;
+    }
+
+    /**
+     * 鍒涘缓琛�
+     *
+     * @param resultDataIndex1 杩斿洖鏁版嵁涓殑绗竴涓弬鏁�
+     * @param tabName
+     * @param connection
+     * @throws SQLException
+     */
+    private void creatTable(JSONObject resultDataIndex1, String tabName, Connection connection) throws SQLException {
+        StringBuilder sql = new StringBuilder("CREATE TABLE " + tabName + " (");
+        for (Map.Entry<String, Object> entry : resultDataIndex1.entrySet()) {
+            String key = entry.getKey().trim().toLowerCase();
+            sql.append(key).append(" VARCHAR(200) null,");
+        }
+        sql.append("insert_time").append(" VARCHAR(100) null,");
+        sql = new StringBuilder(sql.substring(0, sql.length() - 1));
+        sql.append(");");
+        log.info("鍒涘缓琛ㄦ牸 -> {}",sql.toString());
+        Statement statement = connection.createStatement();
+        statement.execute(sql.toString());
+    }
+
+    /**
+     * 鍒犻櫎琛�
+     * @param tabName
+     * @param connection
+     * @throws SQLException
+     */
+    private void dropTable(String tabName,Connection connection) throws SQLException {
+        String sql = "DROP TABLE IF EXISTS " + tabName;
+        Statement statement = connection.createStatement();
+        statement.executeUpdate(sql);
+        statement.close();
+    }
+}

--
Gitblit v1.8.0