路泰机电科技体检——数据平台后端
zhaowenxuan
2024-12-31 0918f745a313b0d0cda2f4f33856df578d30368e
Lis接口编写
5个文件已修改
1个文件已添加
332 ■■■■■ 已修改文件
src/main/java/com/example/constant/ApiParamsConstantsLis.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/controller/HisinterfaceController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/controller/LisController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/service/LisService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/service/shanxiqin/xian/MeiJiLisService.java 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/example/utils/HttpClientUtils.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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";
    /**
     * 退费医生ID
     */
    public static final String TFDOCTORID = "tfDoctorId";
    /**
     * 退费医生名
     */
    public static final String TFDOCTORNAME = "tfDoctorName";
    /**
     * 退费科室id
     */
    public static final String TFDEPARTID = "tfdepartid";
    /**
     * 退费科室名
     */
    public static final String TFDEPARTNAME = "tfdepartname";
}
src/main/java/com/example/controller/HisinterfaceController.java
New file
@@ -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;
    /**
     * 由Lis调用
     * 获取检验项目
     * @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();
    }
}
src/main/java/com/example/controller/LisController.java
@@ -35,5 +35,42 @@
        return lisService.makeSqd(map);
    }
    /**
     * 获取所有检验项目
     * 由Lis调用
     * @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);
    }
}
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);
}
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);
    }
}
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 {