xiaochan 1 year ago
parent
commit
b8592d69ad

+ 23 - 3
src/main/java/thyyxxk/webserver/controller/ca/CaController.java

@@ -1,5 +1,6 @@
 package thyyxxk.webserver.controller.ca;
 
+import cn.hutool.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import thyyxxk.webserver.config.auth.PassToken;
@@ -26,16 +27,35 @@ public class CaController {
         return ResultVoUtil.success(server.sendBatchByCode(send));
     }
 
-
     @PostMapping("/sendByCode")
-    @PassToken
     public ResultVo<CaReturn.CaData> sendByCode(@RequestBody CaServer.Send send) {
         return ResultVoUtil.success(server.sendByCode(send));
     }
 
     @GetMapping("/getSignInfoByBizSn")
-    @PassToken
     public ResultVo<CaSingBizSnReturnData> getSignInfoByBizSn(@RequestParam("bizSn") String bizSn) {
         return server.getSignInfoByBizSn(bizSn);
     }
+
+    @PostMapping("/sendMoreEventSign")
+    public ResultVo<JSONObject> sendMoreEventSign(@RequestBody CaServer.MoreEventSign moreEventSign) {
+        return server.sendMoreEventSign(moreEventSign);
+    }
+
+    @PostMapping("/h5EventSign")
+    public ResultVo<CaServer.H5Return> h5EventSign(@RequestBody CaServer.H5EventSign value) {
+        return server.h5EventSign(value);
+    }
+
+    @PostMapping("/hBoardSignV2")
+    public ResultVo<CaServer.H5Return> hBoardSignV2(@RequestBody CaServer.H5EventSign value) {
+        return server.hBoardSignV2(value);
+    }
+
+    @GetMapping("/downloadSealV2")
+    @PassToken
+    public ResultVo<JSONObject> downloadSealV2(@RequestParam("id") String documentId) {
+        return server.downloadSealV2(documentId);
+    }
+
 }

+ 32 - 0
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/PatientFamilyController.java

@@ -0,0 +1,32 @@
+package thyyxxk.webserver.controller.zhuyuanyizheng;
+
+import org.springframework.web.bind.annotation.*;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.zhuyuanyisheng.PatientFamily;
+import thyyxxk.webserver.service.zhuyuanyisheng.PatientFamilyServer;
+
+@RestController
+@RequestMapping("/patientFamily")
+public class PatientFamilyController {
+    private final PatientFamilyServer server;
+
+    public PatientFamilyController(PatientFamilyServer server) {
+        this.server = server;
+    }
+
+    @PostMapping("/insert")
+    public ResultVo<Integer> insert(@RequestBody PatientFamily pf) {
+        return server.insert(pf);
+    }
+
+    @PostMapping("/update")
+    public ResultVo<Integer> update(@RequestBody PatientFamily pf) {
+        return server.update(pf);
+    }
+
+    @GetMapping("/delete")
+    public ResultVo<Integer> delete(@RequestParam("id") String id) {
+        return server.delete(id);
+    }
+
+}

+ 7 - 0
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/PatientFamilyDao.java

@@ -0,0 +1,7 @@
+package thyyxxk.webserver.dao.his.zhuyuanyisheng;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import thyyxxk.webserver.entity.zhuyuanyisheng.PatientFamily;
+
+public interface PatientFamilyDao extends BaseMapper<PatientFamily> {
+}

+ 8 - 0
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/emr/EmrPatientDao.java

@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 import thyyxxk.webserver.entity.datamodify.YzTemperature;
 import thyyxxk.webserver.entity.fluorescenceTest.FluorescenceSpecimenResult;
+import thyyxxk.webserver.entity.inpatient.patient.Patient;
 import thyyxxk.webserver.entity.medicalinsurance.inpatient.ZyPatientInfo;
 import thyyxxk.webserver.entity.mz.MzEmrPatientData;
 import thyyxxk.webserver.entity.zhuyuanyisheng.ZyZkList;
@@ -554,4 +555,11 @@ public interface EmrPatientDao {
             "where pat_no = #{mzNo} ")
     List<MzEmrPatientData> getEmrPatientMz(String mzNo);
 
+    @Select("select rtrim(b.name) as name, b.sex, b.social_no\n" +
+            "from emr_patient_data a,\n" +
+            "     a_patient_mi b\n" +
+            "where emr_document_id = #{documentId}\n" +
+            "  and a.pat_no = b.inpatient_no")
+    Patient getPatientInfoByDocumentId(String documentId);
+
 }

+ 6 - 4
src/main/java/thyyxxk/webserver/entity/ca/CaData.java

@@ -62,18 +62,20 @@ public class CaData {
         private String appPwd;
     }
 
+    /**
+     * 手写数字签名系统接口规范
+     */
+    private HBoardSign hBoardSign;
+
     @Data
     public static class HBoardSign {
         private String apiKey;
         private String apiSecret;
+        private String url;
     }
 
     private MobileApp mobileApp;
     private SignAuthentication signAuthentication;
     private TimestampAuthentication timestampAuthentication;
 
-    /**
-     * 手写数字签名系统接口规范
-     */
-    private HBoardSign hBoardSign;
 }

+ 60 - 0
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/PatientFamily.java

@@ -0,0 +1,60 @@
+package thyyxxk.webserver.entity.zhuyuanyisheng;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.NoArgsConstructor;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName(value = "patient_family")
+public class PatientFamily implements Serializable {
+
+    private static final long serialVersionUID = 5999679895839502050L;
+
+    @TableId
+    private String id;
+
+    /**
+     * idCard
+     */
+    @TableField(value = "id_card")
+    private String idCard;
+
+    /**
+     * name
+     */
+    @TableField(value = "name")
+    private String name;
+
+    /**
+     * 1:患者本人 2:亲属 3:朋友 4:伴侣
+     */
+    @TableField(value = "relationship")
+    private Integer relationship;
+
+    /**
+     * patientCard
+     */
+    @TableField(value = "patient_card")
+    private String patientCard;
+
+    public static LambdaQueryWrapper<PatientFamily> lambdaQueryWrapper() {
+        return new LambdaQueryWrapper<>();
+    }
+
+    public static QueryWrapper<PatientFamily> queryWrapper() {
+        return new QueryWrapper<>();
+    }
+
+
+}

+ 23 - 4
src/main/java/thyyxxk/webserver/service/RedisServer.java

@@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
+import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 import java.util.function.Supplier;
 
@@ -27,6 +28,14 @@ public class RedisServer {
         redisTemplate.opsForValue().set(key, value);
     }
 
+    public void setData(String key, Object value, long timeout) {
+        redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.MINUTES);
+    }
+
+    public void setData(String key, Object value, long timeout, TimeUnit timeUnit) {
+        redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
+    }
+
     @SuppressWarnings("unchecked")
     public <T> T getData(String key) {
         Object o = redisTemplate.opsForValue().get(key);
@@ -43,15 +52,25 @@ public class RedisServer {
             if (function == null) {
                 throw new RuntimeException("function should not be null");
             }
-            T data = function.apply(key);
-            setData(key, data);
-            return data;
+            return function.apply(key);
         }
         return (T) o;
     }
 
+    public <T> T getData(String key, Supplier<T> function, long timeout, TimeUnit timeUnit) {
+        T data = getData(key, (k) -> function.get());
+        if (data != null) {
+            setData(key, data, timeout, timeUnit);
+        }
+        return data;
+    }
+
     public <T> T getData(String key, Supplier<T> function) {
-        return getData(key, (k) -> function.get());
+        T data = getData(key, (k) -> function.get());
+        if (data != null) {
+            setData(key, data);
+        }
+        return data;
     }
 
     public Boolean delData(String key) {

+ 209 - 5
src/main/java/thyyxxk/webserver/service/ca/CaServer.java

@@ -1,30 +1,38 @@
 package thyyxxk.webserver.service.ca;
 
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.IdcardUtil;
+import cn.hutool.core.util.URLUtil;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.dtflys.forest.Forest;
 import com.dtflys.forest.http.ForestRequest;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
+import com.dtflys.forest.utils.ForestDataType;
+import lombok.*;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
 import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.constants.YesOrNo;
+import thyyxxk.webserver.dao.his.zhuyuanyisheng.emr.EmrPatientDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.ca.CaData;
 import thyyxxk.webserver.entity.ca.CaReturn;
 import thyyxxk.webserver.entity.ca.CaSendParams;
 import thyyxxk.webserver.entity.ca.CaSingBizSnReturnData;
+import thyyxxk.webserver.entity.inpatient.patient.Patient;
 import thyyxxk.webserver.entity.login.UserInfo;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
+import thyyxxk.webserver.service.zhuyuanyisheng.emr.EmrServer;
+import thyyxxk.webserver.utils.DateUtil;
 import thyyxxk.webserver.utils.ResultVoUtil;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -35,10 +43,14 @@ public class CaServer {
     private final CaData caData;
     private final String SUCCRSS = "success";
     private final RedisLikeService redisLikeService;
+    private final EmrServer emrServer;
+    private final EmrPatientDao dao;
 
-    public CaServer(CaData caData, RedisLikeService redisLikeService) {
+    public CaServer(CaData caData, RedisLikeService redisLikeService, EmrServer emrServer, EmrPatientDao dao) {
         this.caData = caData;
         this.redisLikeService = redisLikeService;
+        this.emrServer = emrServer;
+        this.dao = dao;
     }
 
     @EqualsAndHashCode(callSuper = true)
@@ -81,7 +93,7 @@ public class CaServer {
         CaReturn caReturn;
         try {
             CaData.MobileApp app = caData.getMobileApp();
-            ForestRequest<?> post = Forest.post(app.getUrl() + "/v1/push/sign");
+            ForestRequest<?> post = Forest.post(app.getUrl() + "/v1/push/sign").bodyType(ForestDataType.JSON);
             send.setAppId(app.getAppId());
             send.setMsg(CaUtils.GetSHA256FormString(send.getMsg()));
             send.setMsgWrapper("0");
@@ -187,7 +199,7 @@ public class CaServer {
 
     public ResultVo<CaSingBizSnReturnData> getSignInfoByBizSn(String bizSn) {
         CaData.MobileApp app = caData.getMobileApp();
-        ForestRequest<?> post = Forest.post(app.getUrl() + "/v1/sign/info/" + bizSn);
+        ForestRequest<?> post = Forest.post(app.getUrl() + "/v1/sign/info/" + bizSn).bodyType(ForestDataType.JSON);
         CaSendParams send = new CaSendParams();
         send.setAppId(app.getAppId());
 
@@ -213,4 +225,196 @@ public class CaServer {
         return ResultVoUtil.success(ExceptionEnum.LOGICAL_ERROR, execute.getMsg());
     }
 
+    @Data
+    public static class MoreEventSignData {
+        private String content;
+        /**
+         * 签署人身份类型。例如患者本人、亲属、朋友
+         * 、伴侣。进行 URLEncode 编码的数据,并且中
+         * 文长度不得大于 8
+         */
+        private String signType;
+        /**
+         * 签署人身份:
+         * 1:患者本人
+         * 2:亲属
+         * 3:朋友
+         * 4:伴侣
+         */
+        private Integer relation;
+    }
+
+    @Data
+    public static class MoreEventSign {
+        private String documentId;
+        private String codeRs;
+        private String code;
+        private List<MoreEventSignData> data;
+    }
+
+    /**
+     * 发送签名到移动平板
+     * 这个接口没什么屌用
+     *
+     * @param moreEventSign 数据
+     * @return 暂无
+     */
+    public ResultVo<JSONObject> sendMoreEventSign(MoreEventSign moreEventSign) {
+        JSONObject data = getMoreEventSignData(moreEventSign);
+        String execute = Forest.post(caData.getHBoardSign().getUrl() + "/mobile/hBoardSign").addBody(data).bodyType(ForestDataType.JSON).execute(String.class);
+        JSONObject rst = JSONUtil.parseObj(execute);
+        String msg = rst.getByPath("ret_msg", String.class);
+        String decode = URLUtil.decode(msg);
+        log.info("入参:{}\n返回值:{},\n错误信息:{}", data, execute, decode);
+        return ResultVoUtil.success();
+    }
+
+    private JSONObject getMoreEventSignData(MoreEventSign moreEventSign) {
+        JSONObject ret = new JSONObject();
+        CaData.HBoardSign app = caData.getHBoardSign();
+        ret.set("api_key", app.getApiKey());
+        ret.set("api_secret", app.getApiSecret());
+        JSONObject data = new JSONObject();
+        data.set("document_no", IdUtil.simpleUUID());
+        data.set("pdf", emrServer.getPdfBase(moreEventSign.getDocumentId()));
+        Patient patient = dao.getPatientInfoByDocumentId(moreEventSign.getDocumentId());
+        JSONArray signature = new JSONArray();
+
+        moreEventSign.getData().forEach(item -> {
+            JSONObject entries = new JSONObject();
+            entries.set("type", "keyword");
+            entries.set("sign_type", URLUtil.encode(item.getSignType()));
+            entries.set("keyword", new JSONObject() {{
+                set("page", "0");
+                set("content", URLUtil.encode(item.getContent()));
+            }});
+            JSONObject user_info = new JSONObject() {{
+                set("name", patient.getName());
+                set("idno", patient.getSocialNo());
+                set("age", IdcardUtil.getAgeByIdCard(patient.getSocialNo()));
+            }};
+            user_info.set("relation", item.getRelation());
+            entries.set("user_info", user_info);
+            signature.put(entries);
+        });
+
+        // 签署信息
+        data.set("signature", signature);
+        data.set("doctor_info", new JSONObject() {{
+            set("doctor_no", moreEventSign.getCodeRs());
+        }});
+
+        data.set("pic_size", new JSONObject() {{
+            set("width", "120");
+            set("height", "30");
+        }});
+
+        ret.set("data", data);
+        return ret;
+    }
+
+    @Data
+    public static class H5EventSign {
+        private String documentId;
+        private String content;
+    }
+
+    @Data
+    @Builder
+    @AllArgsConstructor
+    @NoArgsConstructor
+    public static class H5Return {
+        private String id;
+        private String result;
+    }
+
+    /**
+     * h5 签名返回一个http连接
+     *
+     * @param value
+     * @return
+     */
+    public ResultVo<H5Return> h5EventSign(H5EventSign value) {
+        JSONObject ret = new JSONObject();
+        String uuid = IdUtil.simpleUUID();
+        CaData.HBoardSign app = caData.getHBoardSign();
+        ret.set("api_key", app.getApiKey());
+        ret.set("api_secret", app.getApiSecret());
+        ret.set("data", new JSONObject() {{
+            set("document_no", uuid);
+            set("pdf", emrServer.getPdfBase(value.getDocumentId()));
+            set("type", "keyword");
+            set("keyword", new JSONObject() {{
+                set("page", "0");
+                set("content", URLUtil.encode(value.getContent()));
+            }});
+        }});
+        String execute = Forest
+                .post(caData.getHBoardSign().getUrl() + "/seal/h5EventSign")
+                .addBody(ret)
+                .bodyType(ForestDataType.JSON)
+                .execute(String.class);
+
+        return getStringResultVo(execute, uuid);
+    }
+
+    public ResultVo<H5Return> hBoardSignV2(H5EventSign value) {
+        JSONObject ret = new JSONObject();
+        String uuid = IdUtil.simpleUUID();
+        ret.set("api_key", caData.getHBoardSign().getApiKey());
+        ret.set("api_secret", caData.getHBoardSign().getApiSecret());
+        ret.set("data", new JSONObject() {{
+            set("document_no", uuid);
+            set("pdf", emrServer.getPdfBase(value.getDocumentId()));
+            set("sign_way", "qrcode,face,hand_sign");
+            set("keyword", new JSONObject() {{
+                set("page", "0");
+                set("content", URLUtil.encode(value.getContent()));
+            }});
+            set("collection_source", "face_photos,hand_sign");
+        }});
+        String execute = Forest
+                .post(caData.getHBoardSign().getUrl() + "/v2/seal/hBoardSign")
+                .addBody(ret)
+                .bodyType(ForestDataType.JSON)
+                .execute(String.class);
+        return getStringResultVo(execute, uuid);
+    }
+
+    @NotNull
+    private ResultVo<H5Return> getStringResultVo(String execute, String id) {
+        JSONObject rst = JSONUtil.parseObj(URLUtil.decode(execute));
+        String msg = rst.getByPath("ret_msg", String.class);
+
+        if (0 == rst.getByPath("ret_code", Integer.class)) {
+            H5Return build = H5Return.builder()
+                    .result(rst.getByPath("sign_url", String.class))
+                    .id(id)
+                    .build();
+            return ResultVoUtil.success(build);
+        }
+        return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "签名失败" + msg);
+    }
+
+
+    public ResultVo<JSONObject> downloadSealV2(String documentId) {
+        JSONObject ret = new JSONObject();
+        ret.set("api_key", caData.getHBoardSign().getApiKey());
+        ret.set("api_secret", caData.getHBoardSign().getApiSecret());
+        ret.set("data", new JSONObject() {{
+            set("document_no", documentId);
+        }});
+        String execute = Forest
+                .post(caData.getHBoardSign().getUrl() + "/v2/seal/download")
+                .addBody(ret)
+                .bodyType(ForestDataType.JSON)
+                .execute(String.class);
+        JSONObject rst = JSONUtil.parseObj(execute);
+        String msg = URLUtil.decode(rst.getByPath("ret_msg", String.class));
+        if (0 == rst.getByPath("ret_code", Integer.class)) {
+            return ResultVoUtil.success(rst);
+        }
+        return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, msg);
+    }
+
 }

+ 8 - 0
src/main/java/thyyxxk/webserver/service/ca/MoreEventSign.java

@@ -0,0 +1,8 @@
+package thyyxxk.webserver.service.ca;
+
+public class MoreEventSign {
+    private String api_key;
+    private String api_secret;
+
+
+}

+ 0 - 5
src/main/java/thyyxxk/webserver/service/externalhttp/emr/EmrEditor.java

@@ -71,9 +71,4 @@ public interface EmrEditor {
     JSONObject getEmrBusinessByDocumentId(@Var("id") String id,
                                           @Var("codes") String codes);
 
-
-    @Post(url = "/oauth/token")
-    JSONObject getEmrToken(@Header JSONObject header, @FormBody JSONObject jsonObject);
-
-
 }

+ 1 - 1
src/main/java/thyyxxk/webserver/service/settings/MenuSettingsService.java

@@ -89,7 +89,7 @@ public class MenuSettingsService {
 
     private List<IntergrationMenu> getRedisMenuByCode(String code) {
         UserInfo userInfo = redisLikeService.getUserInfoByCode(code);
-        List<IntergrationMenu> menuList = redisServer.getData("IntergrationPlatformMenu", (key) -> dao.getAll());
+        List<IntergrationMenu> menuList = redisServer.getData("IntergrationPlatformMenu", dao::getAll);
         if (userInfo.getRoles().contains(1)) {
             return menuListByTree(menuList);
         }

+ 34 - 0
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/PatientFamilyServer.java

@@ -0,0 +1,34 @@
+package thyyxxk.webserver.service.zhuyuanyisheng;
+
+import org.springframework.stereotype.Service;
+import thyyxxk.webserver.config.exception.ExceptionEnum;
+import thyyxxk.webserver.dao.his.zhuyuanyisheng.PatientFamilyDao;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.zhuyuanyisheng.PatientFamily;
+import thyyxxk.webserver.utils.ResultVoUtil;
+
+@Service
+public class PatientFamilyServer {
+    private final PatientFamilyDao dao;
+
+    public PatientFamilyServer(PatientFamilyDao dao) {
+        this.dao = dao;
+    }
+
+    public ResultVo<Integer> insert(PatientFamily pf) {
+        dao.insert(pf);
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE);
+    }
+
+    public ResultVo<Integer> update(PatientFamily pf) {
+        dao.updateById(pf);
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE);
+    }
+
+    public ResultVo<Integer> delete(String id) {
+        dao.deleteById(id);
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE);
+    }
+
+
+}

+ 25 - 1
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/emr/EmrServer.java

@@ -1,6 +1,7 @@
 package thyyxxk.webserver.service.zhuyuanyisheng.emr;
 
 import cn.hutool.core.codec.Base64;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.http.HttpRequest;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -10,7 +11,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dtflys.forest.http.ForestRequest;
 import com.dtflys.forest.interceptor.Interceptor;
 import com.dtflys.forest.reflection.ForestMethod;
-import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.ListUtils;
 import org.jetbrains.annotations.NotNull;
@@ -46,6 +46,7 @@ import thyyxxk.webserver.utils.*;
 
 import javax.annotation.PostConstruct;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 
@@ -954,4 +955,27 @@ public class EmrServer {
     }
 
 
+    public String getPdfBase(String documentId) {
+        return redisServer.getData("emr-" + documentId, () -> {
+            String url = "http://172.16.32.125:8001/emr/archive/pdf";
+            JSONObject param = new JSONObject();
+            param.put("emrToken", true);
+            param.put("stream", true);
+            param.put("arcive", false);
+            param.put("patientId", false);
+            param.put("params", new JSONObject() {{
+                put("documentId", documentId);
+            }});
+            param.put("fileName", "病历pdf");
+            param.put("type", "document");
+            String text = HttpRequest.post(url).body(param.toJSONString()).header("emr-token", emrToken).execute().body();
+            int index = text.lastIndexOf("<br/>buffer:,");
+            if (index != -1) {
+                String[] split = text.substring(text.lastIndexOf("<br/>buffer:,") + 13).split(",");
+                return Base64.encode(Convert.toPrimitiveByteArray(split));
+            }
+            return null;
+        }, 60, TimeUnit.MINUTES);
+    }
+
 }

+ 0 - 28
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/emr/EmrWebSocketServiceV2.java

@@ -21,15 +21,8 @@ import java.util.concurrent.ConcurrentHashMap;
 @Slf4j
 @Service
 public class EmrWebSocketServiceV2 {
-    @Data
-    public static class Edit {
-        private Session session;
-        private String userCode;
-    }
-
     private final WebSocketService socketService;
     private final RedisLikeService redisLikeService;
-    private static final ConcurrentHashMap<String, Edit> EDITOR_USER = new ConcurrentHashMap<>();
 
     @Autowired
     public EmrWebSocketServiceV2(WebSocketService socketService, RedisLikeService redisLikeService) {
@@ -46,27 +39,6 @@ public class EmrWebSocketServiceV2 {
         return ResultVoUtil.success(us);
     }
 
-    public static void open(String sid, Session session) {
-        EmrSocketParam param = parameterParsing(sid);
-        Edit edit = new Edit();
-        edit.setSession(session);
-        edit.setUserCode(param.getUserCode());
-        EDITOR_USER.put(param.getId(), edit);
-    }
-
-    public static void close(String sid) {
-        EmrSocketParam param = parameterParsing(sid);
-        EDITOR_USER.remove(param.getId());
-    }
-
-    public static EmrSocketParam parameterParsing(String sid) {
-        EmrSocketParam param = new EmrSocketParam();
-        String[] sids = sid.split("_");
-        param.setSid(sid)
-                .setId(sids[1])
-                .setUserCode(sids[2]);
-        return param;
-    }
 
     public ResultVo<String> forcedKickingOutOfPersonnelByDocumentId(String documentId) {
         try {

+ 4 - 3
src/main/resources/application-cytest.yml

@@ -15,7 +15,7 @@ spring:
     cache: false
   datasource:
     dynamic:
-      primary: dev
+      primary: his
       strict: false
       datasource:
         his:
@@ -190,6 +190,7 @@ thyy:
       app-code: ywxt
       app-pwd: 12345678
     HBoard-sign:
-      api-key: 00000
-      api-secret: 00000000
+      api-key: "00000"
+      api-secret: "00000000"
+      url: http://47.100.199.230:8080/pdfsign_hw