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