‘chenzhilei’ 2 周之前
父节点
当前提交
dbf598f297

+ 5 - 0
src/main/java/thyyxxk/webserver/controller/zhuyuanyiji/QueRenYiZhuShouFeiController.java

@@ -47,5 +47,10 @@ public class QueRenYiZhuShouFeiController {
         return server.baoCunYiZhuQueFeiShuJu(param);
     }
 
+    @PostMapping("/orderYiZhuQueFeiShuJuOne")
+    public ResultVo<Object> orderYiZhuQueFeiShuJuOne(@RequestBody List<Integer> reqNo) {
+        return server.orderYiZhuQueFeiShuJuOne(reqNo);
+    }
+
 
 }

+ 4 - 0
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyiji/QueRenYiZhuShouFeiDao.java

@@ -1,5 +1,6 @@
 package thyyxxk.webserver.dao.his.zhuyuanyiji;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -169,6 +170,9 @@ public interface QueRenYiZhuShouFeiDao {
                                              @Param("startTime") String startTime,
                                              @Param("endTime") String endTime);
 
+    @Select("select * from yz_zy_patient_fee with (NOLOCK) ${ew.customSqlSegment}")
+    List<YzActOrder> getXuQueFeiXiangXiByOrderList(@Param("ew") QueryWrapper<YzActOrder> actOrderNo);
+
 
     @Select("<script>" +
             "select a.charge_status,e.name doctorName,a.act_order_no,c.name charge_name,a.charge_code,a.charge_fee, " +

+ 9 - 0
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/YiZhuLuRuDao.java

@@ -19,6 +19,7 @@ import thyyxxk.webserver.entity.zhuyuanyisheng.DoctorSOrderFee;
 import thyyxxk.webserver.entity.zhuyuanyisheng.OneClickOrder;
 import thyyxxk.webserver.entity.zhuyuanyisheng.ZyOrderZk;
 import thyyxxk.webserver.entity.zhuyuanyisheng.dto.doctorAuth.DoctorAuthParams;
+import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.YshYjReq;
 import thyyxxk.webserver.entity.zhuyuanyisheng.vo.doctorAuth.DoctorAuthRest;
 import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.*;
 import thyyxxk.webserver.utils.WrapperUtils;
@@ -116,6 +117,14 @@ public interface YiZhuLuRuDao {
                                 @Param("admissTimes") Integer admissTimes,
                                 @Param("ledgerSn") Integer ledgerSn);
 
+    @Select("select * from yz_act_order with (NOLOCK) ${ew.customSqlSegment}")
+    List<YzActOrder> getYiZhuShuJuByOrderNo(@Param("ew") QueryWrapper<YzActOrder> actOrderNo);
+
+    @Select("select max(ledger_sn) from zy_ledger_file a left join zy_actpatient b on a.inpatient_no = b.inpatient_no and a.admiss_times = b.admiss_times"+
+            " where a.inpatient_no = #{inpatientNo} and a.admiss_times = #{admissTimes}")
+    Integer getledgerSnFromYiZhu(@Param("inpatientNo") String inpatientNo,
+                                 @Param("admissTimes") Integer admissTimes);
+
     default List<XinZhenYzActOrder> selectOrderNo(@Param(Constants.WRAPPER) QueryWrapper<?> wq) {
         String fullSql = WrapperUtils.getFullSql(wq);
         List<XinZhenYzActOrder> xinZhenYzActOrders = this.selectOrderNoByOld(fullSql);

+ 1 - 1
src/main/java/thyyxxk/webserver/service/inpatient/PatientService.java

@@ -548,7 +548,7 @@ public class PatientService {
         int times = p.getAdmissTimes();
         int infant = zyh.startsWith("$") ? 1 : 0;
         int ledger = p.getLedgerSn();
-        dao.correctFeeChargeTimeBeforeAdmiss(zyh, times, p.getAdmissDate(), DateUtil.timePlusSecond(p.getAdmissDate(), 60));
+//        dao.correctFeeChargeTimeBeforeAdmiss(zyh, times, p.getAdmissDate(), DateUtil.timePlusSecond(p.getAdmissDate(), 60));
         Date disdate = dao.selectActOrderDisDate(zyh, times);
         if (null != disdate) {
             // 如果费用发生时间小于入院时间那么就加一分钟。

+ 92 - 1
src/main/java/thyyxxk/webserver/service/zhuyuanyiji/QueRenYiZhuShouFeiServer.java

@@ -3,8 +3,10 @@ package thyyxxk.webserver.service.zhuyuanyiji;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -15,10 +17,17 @@ import thyyxxk.webserver.dao.his.zhuyuanyiji.QueRenYiZhuShouFeiDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.YzActOrder;
 import thyyxxk.webserver.entity.inpatient.patient.Patient;
+import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.YshYjReq;
+import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.XinZhenYzActOrder;
 import thyyxxk.webserver.service.PublicServer;
 import thyyxxk.webserver.service.inpatient.PatientService;
+import thyyxxk.webserver.service.zhuyuanyisheng.JianYanJianChaShenQingService;
+import thyyxxk.webserver.service.zhuyuanyisheng.YiZhuLuRuServer;
 import thyyxxk.webserver.utils.*;
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -34,13 +43,18 @@ import java.util.stream.Collectors;
 @Slf4j
 public class QueRenYiZhuShouFeiServer {
     private final QueRenYiZhuShouFeiDao dao;
+    private final JianYanJianChaShenQingService jianYanJianChaShenQingService;
+    private final YiZhuLuRuServer yiZhuLuRuServer;
     private final PublicServer publicServer;
     private final PatientService patientService;
 
-    public QueRenYiZhuShouFeiServer(QueRenYiZhuShouFeiDao dao, PublicServer server, PatientService patientService) {
+    public QueRenYiZhuShouFeiServer(QueRenYiZhuShouFeiDao dao, PublicServer server, PatientService patientService,JianYanJianChaShenQingService jianYanJianChaShenQingService,YiZhuLuRuServer yiZhuLuRuServer) {
         this.dao = dao;
         this.publicServer = server;
         this.patientService = patientService;
+        this.jianYanJianChaShenQingService = jianYanJianChaShenQingService;
+        this.yiZhuLuRuServer = yiZhuLuRuServer;
+
     }
 
     public QueRenYiZhuShouFeiServer getThis() {
@@ -173,6 +187,83 @@ public class QueRenYiZhuShouFeiServer {
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE, "操作成功 (๑*◡*๑)");
     }
 
+    /**
+     * @param reqNo 申请单号
+     * @return 返回提示
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public ResultVo<Object> orderYiZhuQueFeiShuJuOne(List<Integer> reqNo) {
+        List<Patient> xuYaoFeiYongJieShou = new ArrayList<>();
+        List<YzActOrder> xuYaoQueFei = new ArrayList<>();
+//        if (ListUtil.isBlank(param.getList())) {
+//            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请选择需要确费的数据 ヽ(ー_ー)ノ");
+//        }
+        List<YshYjReq> yshYjReqList = jianYanJianChaShenQingService.huoQuShengQingXiangQingDemo(reqNo);
+        List<String> yjReqIdList = yshYjReqList.stream().map(e->String.valueOf(e.getActOrderNo())).collect(Collectors.toList());
+        List<YzActOrder> yzActOrderList = dao.getXuQueFeiXiangXiByOrderList(new QueryWrapper<YzActOrder>().in("act_order_no", yjReqIdList));
+        List<YzActOrder> yzActOrderFormatList = yzActOrderList.stream().map(e->{
+
+            long timeInMillis = e.getOccTime().getTime();
+            // 除以1000取整,再乘以1000,相当于去掉毫秒
+            long truncatedTime = (timeInMillis / 1000) * 1000;
+            e.setOccTime(new Date(truncatedTime));
+            return e;
+        }).collect(Collectors.toList());
+                // 转换为 LocalDateTime
+
+//        List<YzActOrder> yzActOrderList = yiZhuLuRuServer.getYiZhuShuJuByOrderNo(yjReqIdList);
+        Integer ledgerSn = yiZhuLuRuServer.getledgerSnFromYiZhu(yshYjReqList.get(0).getInpatientNo(),yshYjReqList.get(0).getAdmissTimes());
+//        return ResultVoUtil.success(yshYjReq);
+        //变更为病人所属科室
+        for (YzActOrder actOrder : yzActOrderFormatList) {
+            if ("3".equals(actOrder.getChargeStatus())) {
+                actOrder.setChargeStatus("1");
+                actOrder.setActOrderNo(BigDecimal.valueOf(actOrder.getActOrderNo().intValue()));
+                xuYaoQueFei.add(actOrder);
+                Patient xuQueFei = new Patient();
+                xuQueFei.setInpatientNo(actOrder.getInpatientNo());
+                xuQueFei.setAdmissTimes(actOrder.getAdmissTimes());
+                xuQueFei.setName(actOrder.getName());
+                xuQueFei.setLedgerSn(ledgerSn);
+                if (!xuYaoFeiYongJieShou.contains(xuQueFei)) {
+                    xuYaoFeiYongJieShou.add(xuQueFei);
+                }
+            } else if ("2".equals(actOrder.getChargeStatus())) {
+                xuYaoQueFei.add(actOrder);
+            }
+        }
+        if (xuYaoQueFei.isEmpty()) {
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "没有进行确认操作请勿点击。 ψ(*`ー´)ψ");
+        } else {
+            //  这个查询是否有重复操作的 sql 需要重新写
+            List<YzActOrder> yiQueFei = dao.huoQuLiShiQueFeiXinXi(publicServer.getKeShiLieBiaoList(yshYjReqList.get(0).getExecDept().replaceAll("\\s+$", "")), xuYaoFeiYongJieShou);
+            Map<String, YzActOrder> yiQueFeiMap = yiQueFei.stream().collect(
+                    Collectors.toMap(L -> L.getInpatientNo() + L.getAdmissTimes() + DateUtil.formatDatetime(L.getOccTime()) + L.getChargeCode() + L.getChargeFee() + L.getOrderCount() + L.getActOrderNo(), a -> a, (k1, k2) -> k2));
+            for (YzActOrder yzActOrder : xuYaoQueFei) {
+                String key = yzActOrder.getInpatientNo() + yzActOrder.getAdmissTimes() + DateUtil.formatDatetime(yzActOrder.getOccTime()) +
+                        yzActOrder.getChargeCode() + yzActOrder.getChargeFee() + yzActOrder.getOrderCount() + yzActOrder.getActOrderNo();
+                if (yiQueFeiMap.containsKey(key)) {
+                    YzActOrder queRenTiShi = yiQueFeiMap.get(key);
+                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("存在已被确费的项目,请对该项目选择不操作或刷新数据重新加载。 !!!∑(゚Д゚ノ)ノ <br>患者姓名:【%s】<br>项目:【%s】<br> 医嘱号:【%s】<br> 医嘱时间:【%s】<br>执行人:【%s】<br> 操作时间:【%s】", queRenTiShi.getPatientName(),
+                            queRenTiShi.getOrderName(), queRenTiShi.getActOrderNo(), DateUtil.formatDatetime(queRenTiShi.getOccTime()), queRenTiShi.getOpIdName(), DateUtil.formatDatetime(queRenTiShi.getOpDate())));
+                }
+            }
+        }
+        dao.baoCunYiZhuQueFei(xuYaoQueFei, TokenUtil.getInstance().getTokenUserId());
+        // 患者要去重
+        Set<Patient> huanZhe = new HashSet<>();
+        for (Patient patient : xuYaoFeiYongJieShou) {
+            Patient pa = new Patient();
+            pa.setInpatientNo(patient.getInpatientNo());
+            pa.setAdmissTimes(patient.getAdmissTimes());
+            pa.setLedgerSn(patient.getLedgerSn());
+            huanZhe.add(pa);
+        }
+        getThis().acceptFees(huanZhe);
+        log.info("医嘱确费保存==》操作人:{},数据:{}", TokenUtil.getInstance().getTokenUserId(), JSON.toJSONStringWithDateFormat(xuYaoQueFei, GetDateFormat.DATE_TIME));
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE, "操作成功 (๑*◡*๑)");
+    }
+
     /**
      * 通过患者的住院号 确认费用
      *

+ 56 - 0
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/JianYanJianChaShenQingService.java

@@ -146,6 +146,62 @@ public class JianYanJianChaShenQingService {
         return ResultVoUtil.success(map);
     }
 
+    public List<YshYjReq> huoQuShengQingXiangQingDemo(List<Integer> reqNo) {
+        return dao.huoQuShengQingXiangQing(new QueryWrapper<YshYjReq>().in("req_no", reqNo));
+//        if (ListUtil.isBlank(reqList)huoQuShengQingXiangQing) {
+//            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_HTML_ERROR, "没有查询到有效信息,可能已经被删除了。");
+//        }
+//
+//        YshYjReq req = reqList.get(0);
+//
+//        Map<String, Object> map = new HashMap<>();
+//        StringBuilder zhuYiShiXiang = new StringBuilder();
+//
+//        JcZdClass jc = dao.daYingXiangQing(req.getOrderType());
+//
+//        if (jc == null) {
+//            jc = new JcZdClass();
+//            jc.setComm("检查申请单");
+//        }
+//        if (StringUtil.isBlank(jc.getComm())) {
+//            jc.setComm("检查申请单");
+//        }
+//
+//        if (req.getReqType().trim().equals("2") && req.getClasses() != null && req.getClasses().equals("038")) {
+//            jc = new JcZdClass();
+//            jc.setComm("病理检验申请单");
+//        } else if (req.getReqType().trim().equals("2")) {
+//            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "非病理无需打印");
+//        }
+//
+//        // 获取患者的住址和性别
+//        PatientTemp patient = dao.huoQuHuanZheXinXi(req.getInpatientNo());
+//        req.setSex(patient.getSex());
+//        // 地址
+//        req.setHomeStreet(patient.getHomeStreet());
+//        //联系电话
+//        req.setHomeTel(patient.getHomeTel());
+//        map.put("title", jc.getComm());
+//
+//        Field[] fields = jc.getClass().getDeclaredFields();
+//        for (Field field : fields) {
+//            field.setAccessible(true);
+//            // 输出属性名和属性值
+//            try {
+//                String key = field.getName();
+//                Object value = EntityStringTrim.getFieldValue(jc, key);
+//                if (key.startsWith("comment") && StringUtil.notBlank((String) value)) {
+//                    zhuYiShiXiang.append(((String) value).trim()).append("\n");
+//                }
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//            }
+//        }
+//        map.put("mattersNeedingAttention", zhuYiShiXiang.toString());
+//        map.put("data", req);
+//        return ResultVoUtil.success(map);
+    }
+
     public ResultVo<Object> printListReqNo(List<Integer> reqNo) {
         List<YshYjReq> reqList = dao.huoQuShengQingXiangQing(new QueryWrapper<YshYjReq>().in("req_no", reqNo));
         if (ListUtil.isBlank(reqList)) {

+ 22 - 0
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/YiZhuLuRuServer.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
@@ -35,6 +36,7 @@ import thyyxxk.webserver.entity.medicine.vo.YpZdGroupNameVo;
 import thyyxxk.webserver.entity.zhuyuanyisheng.OneClickOrder;
 import thyyxxk.webserver.entity.zhuyuanyisheng.ZyOrderZk;
 import thyyxxk.webserver.entity.zhuyuanyisheng.dto.doctorAuth.DoctorAuthParams;
+import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.YshYjReq;
 import thyyxxk.webserver.entity.zhuyuanyisheng.vo.doctorAuth.DoctorAuthRest;
 import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.*;
 import thyyxxk.webserver.http.drg.DrgWebApi;
@@ -98,6 +100,26 @@ public class YiZhuLuRuServer {
         return ResultVoUtil.success(xinZhenYzActOrders);
     }
 
+    /**
+     * 获取患者的医嘱
+     *
+     * @param actOrderNo 医嘱id
+     * @return 返回医嘱数据
+     */
+    public List<YzActOrder> getYiZhuShuJuByOrderNo(List<String> actOrderNo) {
+        List<YzActOrder> xinZhenYzActOrder = dao.getYiZhuShuJuByOrderNo(new QueryWrapper<YzActOrder>().in("act_order_no", actOrderNo));
+        return xinZhenYzActOrder;
+    }
+
+    /**
+     * 获取患者的待确费医嘱数
+     * @return 返回医嘱数据
+     */
+    public Integer getledgerSnFromYiZhu(String inpatientNo, Integer admissTimes) {
+        Integer  ledgerSn = dao.getledgerSnFromYiZhu(inpatientNo,admissTimes);
+        return ledgerSn;
+    }
+
     /**
      * 设置医嘱号的数状图
      *