ソースを参照

Merge branch 'master' into 淮海科技

lighter 3 ヶ月 前
コミット
2723cef46b
18 ファイル変更194 行追加68 行削除
  1. 1 1
      pom.xml
  2. 3 1
      src/main/java/thyyxxk/webserver/controller/autocreateemr/AutoCreateEmrController.java
  3. 6 0
      src/main/java/thyyxxk/webserver/controller/inpatient/xmlr/XiangMuLuRuController.java
  4. 33 3
      src/main/java/thyyxxk/webserver/dao/his/inpatient/xmlr/XiangMuLuRuDao.java
  5. 2 2
      src/main/java/thyyxxk/webserver/dao/his/medicaladvice/medicamanage/MedicalManagementDao.java
  6. 1 1
      src/main/java/thyyxxk/webserver/dao/his/medicaladvice/patientinfo/AdjustBedDao.java
  7. 3 17
      src/main/java/thyyxxk/webserver/dao/his/socketmessage/SocketMessageDao.java
  8. 1 1
      src/main/java/thyyxxk/webserver/dao/his/zygl/ZyBedMiDao.java
  9. 3 0
      src/main/java/thyyxxk/webserver/entity/medicaladvice/medicamanage/YzPrintVO.java
  10. 2 0
      src/main/java/thyyxxk/webserver/service/autocreateemr/AutoCreateEmrParams.java
  11. 33 20
      src/main/java/thyyxxk/webserver/service/autocreateemr/AutoCreateEmrServer.java
  12. 1 0
      src/main/java/thyyxxk/webserver/service/autocreateemr/imp/ZhuYuanZheng.java
  13. 25 1
      src/main/java/thyyxxk/webserver/service/inpatient/xmlr/XiangMuLuRuService.java
  14. 13 0
      src/main/java/thyyxxk/webserver/service/medicaladvice/medicamanage/MedicalManagementService.java
  15. 36 13
      src/main/java/thyyxxk/webserver/service/medicaladvice/patientinfo/AdjustBedService.java
  16. 1 1
      src/main/java/thyyxxk/webserver/service/medicaladvice/patientinfo/ZkManageService.java
  17. 1 4
      src/main/java/thyyxxk/webserver/service/zhuyuanyiji/YiJiFeiYongLuRuServer.java
  18. 29 3
      src/main/java/thyyxxk/webserver/utils/RestTemplateUtils.java

+ 1 - 1
pom.xml

@@ -10,7 +10,7 @@
     </parent>
     <groupId>thyyxxk</groupId>
     <artifactId>web-server</artifactId>
-    <version>13.8.3</version>
+    <version>13.8.5</version>
     <name>web-server</name>
     <description>server for yibao-web</description>
     <properties>

+ 3 - 1
src/main/java/thyyxxk/webserver/controller/autocreateemr/AutoCreateEmrController.java

@@ -9,6 +9,8 @@ import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.service.autocreateemr.AutoCreateEmrParams;
 import thyyxxk.webserver.service.autocreateemr.AutoCreateEmrServer;
 
+import java.util.Map;
+
 @RequiredArgsConstructor
 @RequestMapping("/autoCreateEmr")
 @RestController
@@ -17,7 +19,7 @@ public class AutoCreateEmrController {
     private final AutoCreateEmrServer service;
 
     @PostMapping("/createEmr")
-    public ResultVo<String> createEmr(@RequestBody AutoCreateEmrParams.Params params) {
+    public ResultVo<Map<String, String>> createEmr(@RequestBody AutoCreateEmrParams.Params params) {
         return service.createEmr(params);
     }
 }

+ 6 - 0
src/main/java/thyyxxk/webserver/controller/inpatient/xmlr/XiangMuLuRuController.java

@@ -223,5 +223,11 @@ public class XiangMuLuRuController {
         return service.delOrder(orderNo);
     }
 
+    @GetMapping("/queryByQrcode")
+    public ResultVo<JSONObject> queryByQrcode(@RequestParam("qrCode") String qrCode,
+                                          @RequestParam("execUnit") String execUnit) {
+        return service.queryByQrcode(qrCode, execUnit);
+    }
+
 }
 

+ 33 - 3
src/main/java/thyyxxk/webserver/dao/his/inpatient/xmlr/XiangMuLuRuDao.java

@@ -925,17 +925,47 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
             "                          drug_specification, mini_unit, drug_weight, drug_weight_unit,\n" +
             "                          self_buy, drug_volume, drug_vol_unit, dose, dose_unit, drug_occ,\n" +
             "                          serial, group_no, ward_code,\n" +
-            "                          doctor_flag /*1*/, dept_code, exec_unit)\n" +
+            "                          doctor_flag /*1*/, dept_code, exec_unit,performance_time)\n" +
             "values (#{item.actOrderNo},#{info.inpatientNo},#{info.admissTimes},#{item.code},#{item.name},#{item.chargeDate},'ONCE', " +
             "#{item.chargeDate}," +
             "#{doctorCode},#{item.chargeDate},#{item.chargeDate},#{info.infantFlag},#{item.orderDrugFlag},#{item.supplyCode}," +
             "#{doctorCode},#{item.chargeDate},#{doctorCode},#{userCode},'5',#{item.chargeDate},#{item.drugQuan},#{item.instruction,jdbcType=CHAR}," +
             "#{item.specification},#{item.miniUnit},#{item.weight},#{item.weighUnit},'6',#{item.volum,jdbcType=DECIMAL},#{item.volUnit,jdbcType=CHAR},#{item.dose,jdbcType=DECIMAL},#{item.doseUnit,jdbcType=CHAR},#{item.dose,jdbcType=DECIMAL}," +
-            "#{item.serial},'73',#{info.wardCode},'1',#{info.wardCode},#{item.execUnit})")
+            "#{item.serial},'73',#{info.wardCode},'1',#{info.wardCode},#{item.execUnit},#{item.chargeDate})")
     void addOrder(XinZhenYiZhu info, SaveOrderReq.OrderData item, String doctorCode, String userCode);
 
-
     @Delete("delete yz_act_order where act_order_no = #{order} and isnull(self_buy,'0') = '6'")
     int delOrder(BigDecimal order);
 
+
+    @Select("SELECT a.code charge_code," +
+            "       a.code charge_code_mx, " +
+            "       a.exec_unit dept_code," +
+            "       rtrim(a.yb_comment) as  yb_comment," +
+            "       rtrim(a.yb_comment) as manu_name," +
+            "       RTRIM(a.name) charge_name, " +
+            "       a.charge_amount," +
+            "       amount = 1, " +
+            "       bill_item_code=a.bill_item_zy, " +
+            "       bill_item_name=(select name from zy_bill_item where code = a.bill_item_zy)," +
+            "       a.py_code, " +
+            "       a.d_code, " +
+            "       a.suppress_flag, " +
+            "       a.bill_item_out, " +
+            "       a.n_code, " +
+            "       self_flag =isnull(a.self_flag,'0'), " +
+            "       a.separate_flag , " +
+            "       spec=charge_unit, " +
+            "       exec_unit_name=b.name, " +
+            "       serial='00', " +
+            "       group_no='00'," +
+            "       national_code," +
+            "       national_name," +
+            "       descriptions " +
+            "FROM zd_charge_item a left join zd_unit_code b on (a.exec_unit = b.code) " +
+            "where    isnull(a.del_flag,'') <> '1' and " +
+            "         isnull(a.in_out_flag,'') <> '1' and " +
+            "         a.code = #{code} ")
+    ZyDetailCharge queryXiangMuByCode(String code);
+
 }

+ 2 - 2
src/main/java/thyyxxk/webserver/dao/his/medicaladvice/medicamanage/MedicalManagementDao.java

@@ -72,7 +72,7 @@ public interface MedicalManagementDao {
             " WHERE       a.inpatient_no = #{patNo} and\n" +
             "        a.admiss_times = #{times} AND\n" +
             "    ${pageCondition} and \n" +
-            "    (a.frequ_code <> 'ONCE' or isnull(b.frequ_type,'')='1') and\n" +
+            "    a.frequ_code <> 'ONCE' and\n" +
             "        a.status_flag > '1'   and\n" +
             "        a.inpatient_no = c.inpatient_no  and\n" +
             "        a.admiss_times = c.admiss_times  and\n" +
@@ -375,7 +375,7 @@ public interface MedicalManagementDao {
             "  and a.admiss_times = #{times}" +
             "  AND a.dept_code = #{wardCode}" +
             "<if test=\" yzType == '0'.toString \">"+
-            "  AND  (a.frequ_code != 'ONCE' or isnull(frequ_type, '0') = '1')" +
+            "  AND  a.frequ_code != 'ONCE' " +
             "</if>"+
             "<if test=\" yzType == '1'.toString \">"+
             "  AND (a.frequ_code = 'ONCE' )" +

+ 1 - 1
src/main/java/thyyxxk/webserver/dao/his/medicaladvice/patientinfo/AdjustBedDao.java

@@ -73,7 +73,7 @@ public interface AdjustBedDao {
     @Select(" select top 1 rtrim(name) name  from mz_patient_mi where patient_id =#{patientId}  ")
     String selectPatientMi(@Param("patientId") String patientId);
 
-    @Select("select rtrim(inpatient_no) as inpatientNo, " +
+    @Select("select rtrim(inpatient_no) as inpatientNo,rtrim(ward) as ward, " +
             "admiss_times,rtrim(name) as name,admiss_date,rtrim(bed_no) as bedNo, " +
             "gender=case when sex='1' then N'男' when sex='2' then N'女' else N'未知' end, " +
             "wardName=(select rtrim(d.name) from zd_unit_code d where d.code=ward), " +

+ 3 - 17
src/main/java/thyyxxk/webserver/dao/his/socketmessage/SocketMessageDao.java

@@ -62,31 +62,17 @@ public interface SocketMessageDao {
             "    UnreadCounts uc ON uc.sender = a.sender;")
     List<MessageIndex> selectMessageIndex(@Param("receiver") String receiver);
 
-    @Select("select * from t_socket_message where sender='00000'")
+    @Select("select * from t_socket_message where sender='00000' order by send_datetime desc")
     List<SocketMessage> selectAllSystemMessages();
 
-    @Select("select a.* , t.status " +
-            "from t_socket_message_consumer t " +
-            "         left join t_socket_message a on (a.id = t.msg_id) " +
-            "where t.sender = #{sender} " +
-            "  and t.receiver = #{receiver} " +
-            "order by a.id desc;")
-    List<SocketMessage> selectNeededMessages(@Param("sender") String sender, @Param("receiver") String receiver);
-
-    @Select("select count(1) " +
-            "from t_socket_message_consumer t " +
-            "         left join t_socket_message a on (a.id = t.msg_id) " +
-            "where t.sender = #{sender} " +
-            "  and t.receiver = #{receiver};")
-    int selectNeededMessagesTotal(@Param("sender") String sender, @Param("receiver") String receiver);
-
     @Select("select top ${pageSize} *\n" +
             "from (select row_number() over (order by send_datetime desc ) row_index, a.*, t.status\n" +
             "      from t_socket_message_consumer t\n" +
             "               left join t_socket_message a on (a.id = t.msg_id)\n" +
             "      where t.sender = #{sender}\n" +
             "        and t.receiver = #{receiver}) as table1\n" +
-            "where row_index > ${pageSize} * (#{currentPage} - 1)")
+            "where row_index > ${pageSize} * (#{currentPage} - 1) " +
+            "order by send_datetime desc")
     List<SocketMessage> selectNeededMessagesPage(@Param("sender") String sender,
                                                  @Param("receiver") String receiver,
                                                  @Param("currentPage") long currentPage,

+ 1 - 1
src/main/java/thyyxxk/webserver/dao/his/zygl/ZyBedMiDao.java

@@ -38,7 +38,7 @@ public interface ZyBedMiDao {
      * @param bedNo
      * @return
      */
-    @Select("SELECT bed_status,bed_no FROM zy_bed_mi WHERE  dept_code =#{deptCode} AND ward_code =#{wardCode} AND bed_no =#{bedNo}")
+    @Select("SELECT ward_code,dept_code,bed_status,bed_no,inpatient_no,admiss_times FROM zy_bed_mi WHERE  dept_code =#{deptCode} AND ward_code =#{wardCode} AND bed_no =#{bedNo}")
     ZyBedMi selectZyBedMi(@Param("deptCode") String deptCode, @Param("wardCode") String wardCode, @Param("bedNo") String bedNo);
 
     /**

+ 3 - 0
src/main/java/thyyxxk/webserver/entity/medicaladvice/medicamanage/YzPrintVO.java

@@ -4,6 +4,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -44,6 +45,8 @@ public class YzPrintVO extends  YzOrderbase  implements Serializable {
     private String newOrderName;
     /** 医嘱*/
     private String newOrderNameCode;
+    private BigDecimal drugQuan;
+    private String groupNo;
     /** 医师签名*/
     private String doctorCode;
     private String doctorName;

+ 2 - 0
src/main/java/thyyxxk/webserver/service/autocreateemr/AutoCreateEmrParams.java

@@ -43,6 +43,8 @@ public class AutoCreateEmrParams {
         private String name;
         // 放在什么文件夹下面
         private String parentId;
+        // 创建人,非必填
+        private String createCode;
     }
 
 }

+ 33 - 20
src/main/java/thyyxxk/webserver/service/autocreateemr/AutoCreateEmrServer.java

@@ -6,7 +6,6 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
-import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.dao.his.zhuyuanyisheng.emr.EmrPatientDao;
 import thyyxxk.webserver.entity.ResultVo;
@@ -18,6 +17,7 @@ import thyyxxk.webserver.utils.SnowFlakeId;
 import thyyxxk.webserver.utils.TokenUtil;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Map;
 
 @Slf4j
@@ -28,21 +28,12 @@ public class AutoCreateEmrServer {
     private final EmrPatientDao dao;
     private final EmrEditor editor;
 
-    public ResultVo<String> createEmr(AutoCreateEmrParams.Params params) {
-        createEmrAsync(params);
-        return R.ok(ExceptionEnum.SUCCESS_AND_EL_MESSAGE, "创建成功。");
-    }
-
-    /**
-     * 异步执行次方法
-     *
-     * @param params
-     */
-    @Async
-    public void createEmrAsync(AutoCreateEmrParams.Params params) {
+    public ResultVo<Map<String, String>> createEmr(AutoCreateEmrParams.Params params) {
         if (StrUtil.isBlank(params.getCreateCode())) {
             params.setCreateCode(TokenUtil.getInstance().getTokenUserId());
         }
+        Map<String, String> messageMap = new HashMap<>();
+        String currentKey = "";
         for (Map.Entry<String, AutoCreateEmr> item : autoCreateEmrList.entrySet()) {
             if (ListUtil.notBlank(params.getTaskName())) {
                 if (!params.getTaskName().contains(item.getKey())) {
@@ -50,6 +41,7 @@ public class AutoCreateEmrServer {
                     continue;
                 }
             }
+            currentKey = item.getKey();
             try {
                 String documentId = SnowFlakeId.instance().nextId();
                 AutoCreateEmrParams.AutoCreateEmrVo rst = item.getValue().create(params);
@@ -67,20 +59,41 @@ public class AutoCreateEmrServer {
                         .emrName(rst.getName())
                         .name(rst.getName())
                         .build();
+                if (StrUtil.isNotBlank(rst.getCreateCode())) {
+                    build.setCreateId(rst.getCreateCode());
+                }
                 // 调用接口
-                postEmrApi(rst);
-                // 插入数据
-                dao.insert(build);
+                String errMessage = postEmrApi(rst);
+                if (StrUtil.isNotBlank(errMessage)) {
+                    messageMap.put(item.getKey(), errMessage);
+                } else {
+                    // 插入数据
+                    dao.insert(build);
+                }
             } catch (Exception e) {
                 log.error("入参:{}", JSONObject.toJSONString(params));
                 log.error("生成病历错误", e);
-                throw new BizException(ExceptionEnum.ERROR_EL_MESSAGE, StrUtil.format("生成:【{}】任务错误,错误如下:{}", item.getKey(), e.getMessage()));
+                messageMap.put(currentKey, StrUtil.format("生成:【{}】任务错误,错误如下:{}", item.getKey(), e.getMessage()));
             }
         }
+        if (!messageMap.isEmpty()) {
+            return R.fail(ExceptionEnum.ERROR_EL_MESSAGE, messageMap);
+        }
+        return R.ok();
+    }
+
+    /**
+     * 异步执行次方法
+     *
+     * @param params
+     */
+    @Async
+    public void createEmrAsync(AutoCreateEmrParams.Params params) {
+        createEmr(params);
     }
 
 
-    public void postEmrApi(AutoCreateEmrParams.AutoCreateEmrVo rst) {
+    public String postEmrApi(AutoCreateEmrParams.AutoCreateEmrVo rst) {
         AutoCreateEmrParams.EmrParams emrParams = new AutoCreateEmrParams.EmrParams();
         emrParams.setDocumentId(rst.getDocumentId());
         emrParams.setCategoryId(rst.getCategoryId());
@@ -89,9 +102,9 @@ public class AutoCreateEmrServer {
         log.info("上传数据:{}", emrParams);
         JSONObject jsonObject = editor.dataFill(emrParams);
         if (rst.getDocumentId().equals(jsonObject.getString("documentId"))) {
-            return;
+            return "";
         }
-        throw new RuntimeException(StrUtil.format("文档id,不一致:{}", jsonObject.toString()));
+        return StrUtil.format("文档id,不一致:{}", jsonObject.toString());
     }
 
 

+ 1 - 0
src/main/java/thyyxxk/webserver/service/autocreateemr/imp/ZhuYuanZheng.java

@@ -52,6 +52,7 @@ public class ZhuYuanZheng implements AutoCreateEmr {
             }});
         }});
         rst.setData(data);
+        rst.setCreateCode(data.getString("doctorCode"));
         return rst;
     }
 

+ 25 - 1
src/main/java/thyyxxk/webserver/service/inpatient/xmlr/XiangMuLuRuService.java

@@ -3,6 +3,7 @@ package thyyxxk.webserver.service.inpatient.xmlr;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
+import cn.hutool.extra.template.TemplateUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -17,6 +18,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.support.TransactionTemplate;
 import org.springframework.web.bind.annotation.RequestParam;
+import thyyxxk.webserver.config.envionment.ApiUrl;
 import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.dao.his.inpatient.xmlr.XiangMuLuRuDao;
@@ -72,7 +74,8 @@ public class XiangMuLuRuService {
     private final EmrServer emrServer;
     private final YiZhuLuRuDao yiZhuLuRuDao;
     private final TransactionTemplate transactionTemplate;
-
+    private final ApiUrl apiUrl;
+    private final RestTemplateUtils templateUtil;
 
     private XiangMuLuRuService getThis() {
         return SpringUtil.getBean(this.getClass());
@@ -1061,6 +1064,27 @@ public class XiangMuLuRuService {
         return R.ok(ExceptionEnum.SUCCESS_AND_EL_MESSAGE);
     }
 
+    public ResultVo<JSONObject> queryByQrcode(String qrCode, String execUnit) {
+        JSONObject data = new JSONObject();
+
+        String thirdpartApi = apiUrl.getThirdpartApi() + "/spd/findByUdi";
+        ResultVo<JSONObject> rst = templateUtil.get(thirdpartApi, new HashMap<String, Object>() {{
+            put("uid", qrCode);
+            put("dept", execUnit);
+        }}, JSONObject.class, "耗材管理");
+
+        if (rst.getCode().equals(200)) {
+            ZyDetailCharge chargeData = dao.queryXiangMuByCode(rst.getData().getString("charge_code"));
+            if (chargeData == null) {
+                return R.fail(ExceptionEnum.NULL_POINTER, "未找到对应的项目。");
+            }
+            data.put("spdData", rst.getData());
+            data.put("chargeData", chargeData);
+            return R.ok(data);
+        }
+        return R.fail(ExceptionEnum.LOGICAL_ERROR, rst.getMessage());
+    }
+
 
 }
 

+ 13 - 0
src/main/java/thyyxxk/webserver/service/medicaladvice/medicamanage/MedicalManagementService.java

@@ -107,6 +107,19 @@ public class MedicalManagementService {
                 obj.setModifierName(getUserName(obj.getModifier()));
                 obj.setExecId2Name(getUserName(obj.getExecId2()
                 ));
+                //项目需要加显示数量
+                if("00".equals(obj.getGroupNo()) && Convert.toBigDecimal(obj.getDrugQuan(),BigDecimal.ZERO).compareTo(BigDecimal.ONE) > 0){
+                    String quan ;
+                    Integer drugQuan = Convert.toInt(obj.getDrugQuan());
+                    if(drugQuan == null){
+                        quan = Convert.toStr(obj.getDrugQuan());
+                    }else {
+                        quan = Convert.toStr(drugQuan);
+                    }
+                    if(StrUtil.isNotBlank(quan)){
+                        obj.setNewOrderName(obj.getNewOrderName()+" 共"+ quan);
+                    }
+                }
                 obj.setExecName(getUserName(obj.getExecId()));
                 obj.setFrequCode(StrUtil.replace(obj.getFrequCode(), "Always", "").replace("Once", ""));
                 obj.setDoctorName(getUserName(obj.getDoctorCode()));

+ 36 - 13
src/main/java/thyyxxk/webserver/service/medicaladvice/patientinfo/AdjustBedService.java

@@ -16,9 +16,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
+import thyyxxk.webserver.constants.BedStatusEnum;
 import thyyxxk.webserver.constants.Message;
 import thyyxxk.webserver.dao.his.medicaladvice.patientinfo.AdjustBedDao;
 import thyyxxk.webserver.dao.his.medicaladvice.patientinfo.ZyBedPreMsgDao;
+import thyyxxk.webserver.dao.his.zygl.ZyBedMiDao;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.inpatient.ZyActpatient;
@@ -30,19 +32,14 @@ import thyyxxk.webserver.entity.medicaladvice.medicamanage.patientinfo.ZyBedMiPa
 import thyyxxk.webserver.entity.medicaladvice.medicamanage.weixin.WeiXinPreBedMsgParam;
 import thyyxxk.webserver.http.websocket.SocketV2;
 import thyyxxk.webserver.http.websocket.dto.WebSocketByListUserCode;
+import thyyxxk.webserver.service.autocreateemr.AutoCreateEmrParams;
+import thyyxxk.webserver.service.autocreateemr.AutoCreateEmrServer;
 import thyyxxk.webserver.service.externalhttp.WxServer;
 import thyyxxk.webserver.service.hutoolcache.DeptCache;
 import thyyxxk.webserver.service.hutoolcache.UserCache;
-import thyyxxk.webserver.utils.AssertUtil;
-import thyyxxk.webserver.utils.CommonUtil;
-import thyyxxk.webserver.utils.ResultVoUtil;
-import thyyxxk.webserver.utils.SocketMsg;
+import thyyxxk.webserver.utils.*;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Description:
@@ -59,6 +56,9 @@ public class AdjustBedService {
     private final SocketV2 intergrationPlatformSocket;
     private final UserCache userCache;
     private final DeptCache deptCache;
+    private final AutoCreateEmrServer autoCreateEmrServer;
+    private final ZyBedMiDao zyBedMiDao;
+
 
     public ResultVo<String> preAllocationBed(MzZyReq mzZyReq) {
         mzZyReq.setVisitDateStr(DateUtil.formatDateTime(mzZyReq.getVisitDate()));
@@ -167,8 +167,27 @@ public class AdjustBedService {
         return dao.getPreAdmPatients(ward);
     }
 
-    public void receivePatient(ZyActpatient actpatient) {
-        dao.updateBedStatus(actpatient.getInpatientNo(), actpatient.getPhry());
+    public void receivePatient(ZyActpatient act) {
+        ZyBedMi zyBedMi = zyBedMiDao.selectZyBedMi(act.getWard(), act.getWard(), act.getBedNo());
+        if (StringUtil.notBlank(zyBedMi.getInpatientNo()) &&
+                !Objects.equals(zyBedMi.getInpatientNo(), act.getInpatientNo())) {
+            String freeBedNo = zyBedMiDao.selectMaxFreeBedNo(act.getWard(), act.getWard());
+            if (StringUtil.isBlank(freeBedNo)) {
+                throw new BizException(ExceptionEnum.LOGICAL_ERROR, "接收失败,没有空闲床位!");
+            }
+            zyBedMi.setBedNo(freeBedNo);
+        }
+        zyBedMi.setInpatientNo(act.getInpatientNo());
+        zyBedMi.setAdmissTimes(act.getAdmissTimes());
+        zyBedMi.setBedStatus(BedStatusEnum.ARRANGE.code);
+        zyBedMiDao.updateZyBedMi(zyBedMi);
+
+        AutoCreateEmrParams.Params params = new AutoCreateEmrParams.Params();
+        params.setPatNo(act.getInpatientNo());
+        params.setTimes(act.getAdmissTimes());
+        // 自动创建病程记录
+        autoCreateEmrServer.createEmrAsync(params);
+        dao.updateBedStatus(act.getInpatientNo(), act.getPhry());
     }
 
     public ResultVo<List<Map>> getIdleBedNoList(ZyBedPreMsg msg) {
@@ -229,8 +248,12 @@ public class AdjustBedService {
         if (zyBedMi == null || StrUtil.isBlank(zyBedMi.getInpatientNo())) {
             throw new BizException(ExceptionEnum.INTERNAL_SERVER_ERROR, "此床位不存在病人信息,不能添加");
         }
-        zyBedMi.setBedStatus("2");
-        dao.updatePatientByBed(zyBedMi);
+        BeanUtil.trimStrFields(zyBedMi);
+        //占床
+        param.setBedStatus("2");
+        param.setInpatientNo(zyBedMi.getInpatientNo());
+        param.setAdmissTimes(zyBedMi.getAdmissTimes());
+        dao.updatePatientByBed(param);
         String message = StrUtil.format("添加{}床信息成功", param.getBedNo());
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE, message);
     }

+ 1 - 1
src/main/java/thyyxxk/webserver/service/medicaladvice/patientinfo/ZkManageService.java

@@ -172,7 +172,7 @@ public class ZkManageService {
                 paramMap.put("patNo", StrUtil.trim(zkBedVo.getInpatientNo()));
                 template.postForObject("http://172.16.32.167:20923/thyy/api/haikang/door/createPatient", paramMap, ResultVo.class);
             } catch (Exception e) {
-                log.error("住院号=" + zkBedVo.getInpatientNo() + "创建门禁报错,{}", e);
+                log.error("住院号={}创建门禁报错", zkBedVo.getInpatientNo(), e);
             }
         }
         return ResultVoUtil.success();

+ 1 - 4
src/main/java/thyyxxk/webserver/service/zhuyuanyiji/YiJiFeiYongLuRuServer.java

@@ -21,9 +21,7 @@ import thyyxxk.webserver.utils.StringUtil;
 @Service
 @Slf4j
 public class YiJiFeiYongLuRuServer {
-
     private final YiJiFeiYongLuRuDao dao;
-
     private final PublicServer publicServer;
 
     public YiJiFeiYongLuRuServer(YiJiFeiYongLuRuDao dao, PublicServer publicServer) {
@@ -37,7 +35,6 @@ public class YiJiFeiYongLuRuServer {
      * @return 返回患者信息
      */
     public ResultVo<ZyActpatient> getHuanZheXinXi(String inpatientNo, Integer zaiYuanChuYuan, Integer admissTimes) {
-        log.info("医技查询患者信息:住院号{},是否在院{},住院次数:{}", inpatientNo, zaiYuanChuYuan, admissTimes);
         if (StringUtil.isBlank(inpatientNo)) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "住院号不能为空。");
         }
@@ -55,7 +52,7 @@ public class YiJiFeiYongLuRuServer {
             return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
         }
         if (zaiYuanChuYuan == 0) {
-            Integer jieSuan = dao.getHuanZheSFJieSuan(publicServer.getInpatientNo(inpatientNo), zyActpatient.getAdmissTimes());
+            Integer jieSuan = dao.getHuanZheSFJieSuan(PublicServer.getInpatientNo(inpatientNo), zyActpatient.getAdmissTimes());
             if (jieSuan == null || jieSuan != 0) {
                 return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "患者已经结算。");
             }

+ 29 - 3
src/main/java/thyyxxk/webserver/utils/RestTemplateUtils.java

@@ -1,24 +1,50 @@
 package thyyxxk.webserver.utils;
 
 import cn.hutool.json.JSONUtil;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
 import thyyxxk.webserver.entity.ResultVo;
 
+import java.util.Map;
+
 @Slf4j
 @Component
 @RequiredArgsConstructor
 public class RestTemplateUtils {
     private final RestTemplate template;
+    private final ObjectMapper objectMapper;
 
-    public <T> ResultVo<T> get(String url, Object req, Class<T> clazz) {
-        return template.exchange(url, HttpMethod.GET, new HttpEntity<>(req), new ParameterizedTypeReference<ResultVo<T>>() {
-        }).getBody();
+    public <T> ResultVo<T> get(String url, Map<String, Object> params, Class<T> clazz, String logName) {
+        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
+        if (params != null) {
+            params.forEach(builder::queryParam);
+        }
+
+        ResponseEntity<ResultVo> response = template.exchange(
+                builder.build().toUriString(),
+                HttpMethod.GET,
+                null,
+                ResultVo.class
+        );
+
+        ResultVo<T> result = response.getBody();
+        if (result != null && result.getData() != null) {
+            // 手动转换data字段到目标类型
+            T convertedData = objectMapper.convertValue(result.getData(), clazz);
+            result.setData(convertedData);
+        }
+
+        log.info("{}--------------->\n参数:{}\n返回值:{}", logName,
+                JSONUtil.toJsonStr(params), JSONUtil.toJsonStr(result));
+        return result;
     }
 
     public <T> ResultVo<T> post(String url, Object req, Class<T> clazz, String logName) {