|
@@ -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, "操作成功 (๑*◡*๑)");
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 通过患者的住院号 确认费用
|
|
|
*
|