From 0918f745a313b0d0cda2f4f33856df578d30368e Mon Sep 17 00:00:00 2001
From: zhaowenxuan <chacca165@163.com>
Date: 星期二, 31 十二月 2024 19:14:05 +0800
Subject: [PATCH] Lis接口编写

---
 src/main/java/com/example/controller/LisController.java               |   37 ++++++
 src/main/java/com/example/controller/HisinterfaceController.java      |   50 ++++++++
 src/main/java/com/example/service/shanxiqin/xian/MeiJiLisService.java |  168 +++++++++++++++++++++++++++
 src/main/java/com/example/constant/ApiParamsConstantsLis.java         |   30 +++++
 src/main/java/com/example/utils/HttpClientUtils.java                  |   41 ++++++
 src/main/java/com/example/service/LisService.java                     |    6 +
 6 files changed, 328 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/example/constant/ApiParamsConstantsLis.java b/src/main/java/com/example/constant/ApiParamsConstantsLis.java
index 900b233..764a008 100644
--- a/src/main/java/com/example/constant/ApiParamsConstantsLis.java
+++ b/src/main/java/com/example/constant/ApiParamsConstantsLis.java
@@ -243,4 +243,34 @@
      * 椤圭洰绫诲瀷鍚嶇О
      */
     public static final String SpecimenDesc = "specimendesc";
+
+    /**
+     * 妫�楠岄」鐩槑缁嗛泦鍚�
+     */
+    public static final String mxList = "mxList";
+
+    /**
+     * 姣忔潯鏄庣粏鐨勫敮涓�涓婚敭
+     */
+    public static final String PRIMARY_KEY = "primaryKey";
+
+    /**
+     * 閫�璐瑰尰鐢烮D
+     */
+    public static final String TFDOCTORID = "tfDoctorId";
+
+    /**
+     * 閫�璐瑰尰鐢熷悕
+     */
+    public static final String TFDOCTORNAME = "tfDoctorName";
+
+    /**
+     * 閫�璐圭瀹d
+     */
+    public static final String TFDEPARTID = "tfdepartid";
+
+    /**
+     * 閫�璐圭瀹ゅ悕
+     */
+    public static final String TFDEPARTNAME = "tfdepartname";
 }
diff --git a/src/main/java/com/example/controller/HisinterfaceController.java b/src/main/java/com/example/controller/HisinterfaceController.java
new file mode 100644
index 0000000..d61b58a
--- /dev/null
+++ b/src/main/java/com/example/controller/HisinterfaceController.java
@@ -0,0 +1,50 @@
+package com.example.controller;
+
+import com.example.service.shanxiqin.xian.MeiJiLisService;
+import com.example.utils.AjaxResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
+ * @Author: zhaowenxuan
+ * @Date: 2024/12/31 16:01
+ */
+@RestController
+@RequestMapping("hisinterface")
+public class HisinterfaceController {
+    @Autowired
+    private MeiJiLisService meiJiLisService;
+
+    /**
+     * 鐢盠is璋冪敤
+     * 鑾峰彇妫�楠岄」鐩�
+     * @param map
+     * @return
+     */
+    @PostMapping("TreatmentItemsSynchronization")
+    public String TreatmentItemsSynchronization(@RequestBody Map<String ,Object> map){
+        Map<String, Object> request = (Map<String, Object>) map.get("Request");
+        String hospitalId = request.get("HospitalId").toString();
+        switch (hospitalId){
+            case "xamjyy":
+                return meiJiLisService.getXmlList(map);
+        }
+        return AjaxResult.error();
+    }
+
+    @PostMapping("verificationFeeCancelled")
+    public String verificationFeeCancelled(@RequestBody Map<String ,Object> map){
+        String hospitalid = map.get("HOSPITALID").toString();
+        switch (hospitalid){
+            case "xamjyy":
+                return meiJiLisService.confirmRevoke(map);
+        }
+        return AjaxResult.error();
+    }
+}
diff --git a/src/main/java/com/example/controller/LisController.java b/src/main/java/com/example/controller/LisController.java
index a43ead5..00adcf3 100644
--- a/src/main/java/com/example/controller/LisController.java
+++ b/src/main/java/com/example/controller/LisController.java
@@ -35,5 +35,42 @@
         return lisService.makeSqd(map);
     }
 
+    /**
+     * 鑾峰彇鎵�鏈夋楠岄」鐩�
+     * 鐢盠is璋冪敤
+     * @param hospName
+     * @param map
+     * @return
+     */
+    @PostMapping("/{hospName}/getXmList")
+    public String getXmList(@PathVariable("hospName") String hospName, @RequestBody Map<String ,Object > map){
+        LisService lisService = serviceFactory.getLisService(hospName);
+        return lisService.getXmlList(map);
+    }
+
+    /**
+     * 鎾ら攢鐢宠
+     * @param hospName
+     * @param map
+     * @return
+     */
+    @PostMapping("/{hospName}/revoke")
+    public String revoke(@PathVariable("hospName") String hospName,@RequestBody Map<String, Object> map){
+        LisService lisService = serviceFactory.getLisService(hospName);
+        return lisService.revoke(map);
+    }
+
+    /**
+     * 纭鎾ら攢
+     * Lis鍥炶皟
+     * @param hospName
+     * @param map
+     * @return
+     */
+    @PostMapping("/{hospName}/confirmRevoke")
+    public String confirmRevoke(@PathVariable("hospName") String hospName,@RequestBody Map<String, Object> map){
+        LisService lisService = serviceFactory.getLisService(map.get("hospName").toString());
+        return lisService.confirmRevoke(map);
+    }
 
 }
diff --git a/src/main/java/com/example/service/LisService.java b/src/main/java/com/example/service/LisService.java
index 3264333..25f7ac8 100644
--- a/src/main/java/com/example/service/LisService.java
+++ b/src/main/java/com/example/service/LisService.java
@@ -18,4 +18,10 @@
      * @return
      */
     String makeSqd(Map<String, Object> map);
+
+    String getXmlList(Map<String, Object> map);
+
+    String revoke(Map<String, Object> map);
+
+    String confirmRevoke(Map<String, Object> map);
 }
diff --git a/src/main/java/com/example/service/shanxiqin/xian/MeiJiLisService.java b/src/main/java/com/example/service/shanxiqin/xian/MeiJiLisService.java
index 45ce298..f02b135 100644
--- a/src/main/java/com/example/service/shanxiqin/xian/MeiJiLisService.java
+++ b/src/main/java/com/example/service/shanxiqin/xian/MeiJiLisService.java
@@ -1,12 +1,25 @@
 package com.example.service.shanxiqin.xian;
 
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.pinyin.PinyinUtil;
+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.constant.ApiParamsConstantsLis;
 import com.example.service.LisService;
+import com.example.utils.AjaxResult;
+import com.example.utils.FieldNameConverter;
+import com.example.utils.HttpClientUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Service;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.util.*;
 
 /**
  * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
@@ -15,6 +28,22 @@
  */
 @Service("ShanXiQinXiAnMeiJiLis")
 public class MeiJiLisService implements LisService {
+    @Autowired
+    private ConfigValue configValue;
+
+    private final ApplicationContext applicationContext;
+
+    private final String LIS_URL;
+    private final String TJ_URL;
+
+    @Autowired
+    public MeiJiLisService(ApplicationContext applicationContext, ConfigValue configValue) {
+        this.applicationContext = applicationContext;
+        this.configValue = configValue;
+        LIS_URL = configValue.getConfigValue("ShanXi_Qin_XiAn_MeiJi.lis_api_url") + ":" + configValue.getConfigValue("ShanXi_Qin_XiAn_MeiJi.lis_api_port") + configValue.getConfigValue("ShanXi_Qin_XiAn_MeiJi.lisapiappend");
+        TJ_URL = configValue.getConfigValue("ShanXi_Qin_XiAn_MeiJi.tjUrl");
+    }
+
     @Override
     public String makeSqd(Map<String, Object> map) {
         HashMap<String, Object> hashMap = new HashMap<>();
@@ -45,12 +74,143 @@
         hashMap.put("TELEPHONE",map.get(ApiParamsConstants.CUS_PHONE));
         hashMap.put("YBKH","");
         hashMap.put("TJDW",map.get(ApiParamsConstants.COMP_NAME));
+        hashMap.put("ISACTIVE","1");
+        hashMap.put("SENDDOCTOR",map.get(ApiParamsConstantsLis.SENDDOCTOR));
+        hashMap.put("SENDDOCTORNAME",map.get(ApiParamsConstantsLis.SENDDOCTORNAME));
+        hashMap.put("SENDDEPARTCODE",map.get(ApiParamsConstantsLis.SENDDEPARTCODE));
+        hashMap.put("SENDDEPARTNAME",map.get(ApiParamsConstantsLis.SENDDEPARTNAME));
+        hashMap.put("APPLYDEPARTCODE",map.get(ApiParamsConstantsLis.APPLYDEPARTCODE));
+        hashMap.put("APPLYDEPARTNAME",map.get(ApiParamsConstantsLis.APPLYDEPARTNAME));
+        hashMap.put("APPLYDOCTORCODE",map.get(ApiParamsConstantsLis.APPLYDOCTORCODE));
+        hashMap.put("APPLYDOCTORNAME",map.get(ApiParamsConstantsLis.APPLYDOCTORNAME));
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String dqsj = format.format(new Date());
+        hashMap.put("APPLYDATETIME",dqsj);
+        hashMap.put("BEDNO","");
+        hashMap.put("SENDDATE",dqsj);
+        hashMap.put("SFDATE",dqsj);
+        // TODO
+        hashMap.put("HOSPITALID","");
+        // TODO
+        hashMap.put("CARDTYPE","");
+        hashMap.put("PATIENTTYPE","3");
+        hashMap.put("SFYNAME",map.get(ApiParamsConstantsLis.SFYNAME));
+        hashMap.put("jizhenBz","0");
 
+        JSONArray array = JSONUtil.parseArray(map.get(ApiParamsConstantsLis.mxList));
+        JSONArray orderInfoList = JSONUtil.createArray();
+        for (Object o : array) {
+            JSONObject entries = (JSONObject) o;
+            JSONObject object = JSONUtil.createObj();
+            object.putOpt("SFXMID",entries.getStr(ApiParamsConstantsLis.SFXMID));
+            object.putOpt("SFXMNAME",entries.getStr(ApiParamsConstantsLis.SFXMNAME));
+            object.putOpt("SFXMPRICE",entries.getStr(ApiParamsConstantsLis.SFXMPRICE));
+            object.putOpt("QUALITY",entries.getStr(ApiParamsConstantsLis.QUALITY));
+            object.putOpt("SpecimenCode",entries.getStr(ApiParamsConstantsLis.SpecimenCode));
+            object.putOpt("SpecimenDesc",entries.getStr(ApiParamsConstantsLis.SpecimenDesc));
+            object.putOpt("KEYVALUE",entries.getStr(ApiParamsConstantsLis.PRIMARY_KEY));
+            orderInfoList.add(object);
+        }
+        hashMap.put("OderInfoList",orderInfoList);
+        String post = sendPost(LIS_URL + "/lisinterface" + "/HisApplyList", hashMap);
+        JSONObject entries = JSONUtil.parseObj(post);
+        if (entries.getStr("MsgCode").equals("0"))
+            return AjaxResult.success();
+        else return AjaxResult.error();
+    }
 
+    @Override
+    public String getXmlList(Map<String, Object> map) {
+        Map<String, Object> request = (Map<String, Object>) map.get("Request");
+        String hospitalId = request.get("HospitalId").toString();
+        String json = sendPost(TJ_URL + "/callBack/getZdList", new HashMap<>());
+        JSONObject entries = JSONUtil.parseObj(json);
+        JSONObject result = JSONUtil.createObj();
+        if (entries.getStr("code").equals("200")){
+            result.putOpt("returnCode","200");
+            result.putOpt("returnMessage","鑾峰彇鎴愬姛");
+            result.putOpt("HOSPITALID",hospitalId);
+            JSONArray array = entries.getJSONArray("data");
+            result.putOpt("Rows",array.size());
+            JSONArray dataInfoList = JSONUtil.createArray();
+            for (Object o : array) {
+                JSONObject object = (JSONObject) o;
+                JSONObject obj = JSONUtil.createObj();
+                obj.putOpt("SFXMID",object.getStr("SFXMID"));
+                String sfxmname = object.getStr("SFXMNAME");
+                obj.putOpt("SFXMNAME",sfxmname);
+                obj.putOpt("UNIT","");
+                obj.putOpt("SFKZ","");
+                obj.putOpt("SFXM","");
+                obj.putOpt("PRICE",object.getStr("PRICE"));
+                obj.putOpt("SRM1", PinyinUtil.getFirstLetter(sfxmname,""));
+                obj.putOpt("SRM2","");
+                obj.putOpt("SRM3","");
+                obj.putOpt("MEMO","");
+                obj.putOpt("PATIENTTYPE","3");
+                dataInfoList.add(obj);
+            }
+            result.putOpt("DataInfoList",dataInfoList);
+            return JSONUtil.toJsonStr(result);
+        }else {
+            result.putOpt("returnCode","400");
+            result.putOpt("returnMessage","鑾峰彇澶辫触");
+            result.putOpt("HospitalId",hospitalId);
+            return JSONUtil.toJsonStr(result);
+        }
+    }
 
+    @Override
+    public String revoke(Map<String, Object> map) {
+        HashMap<String, Object> params = new HashMap<>();
+        JSONArray list = (JSONArray) map.get("list");
+        JSONArray array = JSONUtil.createArray();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String sj = format.format(new Date());
+        for (Object o : list) {
+            JSONObject object = (JSONObject) o;
+            JSONObject entries = JSONUtil.createObj();
+            entries.putOpt("TXM",object.getStr(ApiParamsConstantsLis.TXM));
+            entries.putOpt("TFDOCTORID",object.getStr(ApiParamsConstantsLis.TFDOCTORID));
+            entries.putOpt("TFDOCTORNAME",object.getStr(ApiParamsConstantsLis.TFDOCTORNAME));
+            entries.putOpt("TFDATE",sj);
+            entries.putOpt("TFDEPARTID",object.getStr(ApiParamsConstantsLis.TFDEPARTID));
+            entries.putOpt("TFDEPARTNAME",object.getStr(ApiParamsConstantsLis.TFDEPARTNAME));
+            // TODO
+            entries.putOpt("HOSPITALID","");
+            entries.putOpt("TFSFXMID",object.getStr(ApiParamsConstantsLis.SFXMID));
+            entries.putOpt("TFSFXMNAME",object.getStr(ApiParamsConstantsLis.SFXMNAME));
+            entries.putOpt("TFKEYVALUE",object.getStr(ApiParamsConstantsLis.PRIMARY_KEY));
+            array.add(entries);
+        }
+        String post = HttpClientUtils.sendPost(LIS_URL + "/lisinterface/FetchChargebacksInformation", JSONUtil.toJsonStr(array));
+        if (JSONUtil.parseObj(post).getStr("MsgCode").equals("0"))
+            return AjaxResult.success();
+        else return AjaxResult.error();
+    }
 
+    @Override
+    public String confirmRevoke(Map<String, Object> map) {
+        String personid = map.get("PERSONID").toString();
+        String hospitalid = map.get("HOSPITALID").toString();
+        List<String> keys = Arrays.asList((String[]) map.get("KEYVALUELIST"));
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("keys",keys);
+        hashMap.put("czy",personid);
+        hashMap.put("hospid",hospitalid);
+        String post = sendPost(TJ_URL + "/callBack/lisRevoke", hashMap);
+        JSONObject entries = JSONUtil.parseObj(post);
+        JSONObject object = JSONUtil.createObj();
+        if (entries.getStr("code").equals("200")){
+            object.putOpt("returnCode","200");
+            return JSONUtil.toJsonStr(object);
+        }else {
+            object.putOpt("returnCode","500");
+            return JSONUtil.toJsonStr(object);
+        }
+    }
 
-
-        return "";
+    private String sendPost(String url, Map<String, Object> hashMap){
+        return HttpClientUtils.sendPost(url, hashMap);
     }
 }
diff --git a/src/main/java/com/example/utils/HttpClientUtils.java b/src/main/java/com/example/utils/HttpClientUtils.java
index e18e472..5ee483f 100644
--- a/src/main/java/com/example/utils/HttpClientUtils.java
+++ b/src/main/java/com/example/utils/HttpClientUtils.java
@@ -138,6 +138,47 @@
         return null;
     }
 
+    public static String sendPost(String httpUrl, String json) {
+
+        try {
+            // 1. 鍒涘缓 URL 瀵硅薄
+            URL url = new URL(httpUrl);
+            // 2. 鍒涘缓 HttpURLConnection 瀵硅薄
+            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+            // 3. 璁剧疆璇锋眰鏂规硶涓� POST
+            connection.setRequestMethod("POST");
+            // 4. 璁剧疆 Content-Type 澶撮儴瀛楁
+            connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
+            // 6. 鍚戞湇鍔″櫒鍙戦�佹暟鎹�
+            String requestBody = json;
+            log.info(httpUrl+"鍏ュ弬:   "+requestBody);
+//            String requestBody1 = maps.toString();
+            byte[] postData = requestBody.getBytes(StandardCharsets.UTF_8);
+            connection.setDoOutput(true);
+            try (OutputStream outputStream = connection.getOutputStream()) {
+                outputStream.write(postData);
+            }
+
+            // 8. 鑾峰彇鍝嶅簲鏁版嵁
+            try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
+                String line;
+                StringBuilder response = new StringBuilder();
+                while ((line = reader.readLine()) != null) {
+                    response.append(line);
+                }
+                log.info("=====================================================");
+                log.info(httpUrl+"鍑哄弬");
+                log.info(response.toString());
+                connection.disconnect();
+                return response.toString();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
     public static String sendPostToken(String httpUrl, Map<String, Object> maps,String authorization) {
 
         try {

--
Gitblit v1.8.0