|
@@ -1,5 +1,6 @@
|
|
|
package thyyxxk.webserver.service.zygl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
@@ -14,8 +15,10 @@ import thyyxxk.webserver.config.exception.ExceptionEnum;
|
|
|
import thyyxxk.webserver.constants.BedStatusEnum;
|
|
|
import thyyxxk.webserver.constants.SettleTypeEnum;
|
|
|
import thyyxxk.webserver.constants.YesOrNo;
|
|
|
+import thyyxxk.webserver.constants.ZyDepositFileStatusEnum;
|
|
|
import thyyxxk.webserver.constants.ZyReqEnum;
|
|
|
import thyyxxk.webserver.dao.his.datamodify.ZyDetailChargeDao;
|
|
|
+import thyyxxk.webserver.dao.his.dictionary.ZdUnitCodeDao;
|
|
|
import thyyxxk.webserver.dao.his.medicaladvice.common.DictDataDao;
|
|
|
import thyyxxk.webserver.dao.his.zygl.APatientMiDao;
|
|
|
import thyyxxk.webserver.dao.his.zygl.MzZyReqDao;
|
|
@@ -24,12 +27,16 @@ import thyyxxk.webserver.dao.his.zygl.ZyAdtDao;
|
|
|
import thyyxxk.webserver.dao.his.zygl.ZyBedMiDao;
|
|
|
import thyyxxk.webserver.dao.his.zygl.ZyLedgerFileDao;
|
|
|
import thyyxxk.webserver.entity.ResultVo;
|
|
|
+import thyyxxk.webserver.entity.dictionary.ZdUnitCode;
|
|
|
import thyyxxk.webserver.entity.executeItem.NumberEnum;
|
|
|
import thyyxxk.webserver.entity.executeItem.ZyLedgerFile;
|
|
|
import thyyxxk.webserver.entity.inpatient.ZyActpatient;
|
|
|
+import thyyxxk.webserver.entity.inpatient.charge.PatientParam;
|
|
|
+import thyyxxk.webserver.entity.inpatient.charge.ZyDepositFile;
|
|
|
import thyyxxk.webserver.entity.medicaladvice.medicamanage.MzZyReq;
|
|
|
import thyyxxk.webserver.entity.medicaladvice.medicamanage.patientinfo.ZyBedMi;
|
|
|
import thyyxxk.webserver.entity.zygl.APatientMi;
|
|
|
+import thyyxxk.webserver.entity.zygl.CodeNameEntity;
|
|
|
import thyyxxk.webserver.entity.zygl.ZyAdt;
|
|
|
import thyyxxk.webserver.entity.zygl.ZyConfig;
|
|
|
import thyyxxk.webserver.entity.zygl.ZyWorkLog;
|
|
@@ -39,10 +46,12 @@ import thyyxxk.webserver.utils.TokenUtil;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @Description: 住院服务
|
|
@@ -80,6 +89,8 @@ public class ZyActpatientService {
|
|
|
private UserCache userCache;
|
|
|
@Resource
|
|
|
private DictDataDao dictDataDao;
|
|
|
+ @Resource
|
|
|
+ private ZdUnitCodeDao zdUnitCodeDao;
|
|
|
|
|
|
/**
|
|
|
* @description: 保存入院信息
|
|
@@ -404,4 +415,89 @@ public class ZyActpatientService {
|
|
|
public ZyActpatient queryByInpatientNo(String tableName, String inpatientNo, Integer admissTimes) {
|
|
|
return zyActpatientMapper.selectByInpatientNo(tableName, inpatientNo, admissTimes);
|
|
|
}
|
|
|
+ /**
|
|
|
+ * @description: 查询预交金的 和病人的信息
|
|
|
+ * @author: lihong
|
|
|
+ * @date: 2025/5/12 16:04
|
|
|
+ * @param: param
|
|
|
+ * @return: thyyxxk.webserver.entity.inpatient.ZyActpatient
|
|
|
+ **/
|
|
|
+ public ZyActpatient queryAdvancePayment(PatientParam param) {
|
|
|
+ AssertUtil.isnotBlank(param.getInpatientNo(),"住院号不能为空");
|
|
|
+ AssertUtil.isnotBlank(param.getAdmissTimes(),"住院次数不能为空");
|
|
|
+ AssertUtil.isnotBlank(param.getInOutFlag(),"请选择查询在院或出院病人");
|
|
|
+ ZyActpatient zyActpatient = queryByInpatientNo(YesOrNo.NO.getCode().equals(param.getInOutFlag()) ? ZyActpatient.ZY_ACTPATIENT : ZyActpatient.ZY_INACTPATIENT, param.getInpatientNo(), param.getAdmissTimes());
|
|
|
+ BeanUtil.trimStrFields(zyActpatient);
|
|
|
+ if(zyActpatient != null){
|
|
|
+ ZdUnitCode zdUnitCode = zdUnitCodeDao.selectDeptDictByCode(zyActpatient.getWard());
|
|
|
+ zyActpatient.setWardName(zdUnitCode != null ? zdUnitCode.getName() : "");
|
|
|
+ zyActpatient.setResponceTypeName(zyActpatientMapper.selectResponceTypeName(zyActpatient.getResponceType()));
|
|
|
+ APatientMi aPatientMi = aPatientMiMapper.selectPatientMiByInPatientNo(param.getInpatientNo());
|
|
|
+ zyActpatient.setPatientId(aPatientMi == null || StrUtil.isBlank(aPatientMi.getMzNo()) ? "" : aPatientMi.getMzNo());
|
|
|
+ ZyDepositFile tempParam = ZyDepositFile.builder()
|
|
|
+ .inpatientNo(param.getInpatientNo())
|
|
|
+ .admissTimes(param.getAdmissTimes())
|
|
|
+ .build();
|
|
|
+ List<ZyDepositFile> zyDepositFiles = zyDepositFileService.queryZyDepositFileByInpatientNoAndTimes(tempParam);
|
|
|
+ if(CollUtil.isNotEmpty(zyDepositFiles)){
|
|
|
+ List<CodeNameEntity> zdCheque = zyActpatientMapper.selectZdChequeType();
|
|
|
+ Map<String, CodeNameEntity> zdChequeMap = zdCheque.stream().collect(Collectors.toMap(CodeNameEntity::getCode, a -> a, (k1, k2) -> k1));
|
|
|
+ ZyLedgerFile lastZyLedgerFile = zyLedgerFileMapper.selectLastLedgerSn(param.getInpatientNo(), param.getAdmissTimes());
|
|
|
+ AssertUtil.isnotBlank(lastZyLedgerFile,"没有账页信息");
|
|
|
+ BigDecimal yjjHj = BigDecimal.ZERO;
|
|
|
+ BigDecimal ztYjjHj = BigDecimal.ZERO;
|
|
|
+ for(ZyDepositFile zyDepositFile :zyDepositFiles){
|
|
|
+ zyDepositFile.setOpIdName(userCache.getEmployeeName(zyDepositFile.getOpIdCode()));
|
|
|
+ CodeNameEntity codeNameEntity = zdChequeMap.get(zyDepositFile.getDepoType());
|
|
|
+ zyDepositFile.setSettleType(lastZyLedgerFile.getSettleType());
|
|
|
+ zyDepositFile.setDepoTypeName(codeNameEntity == null ? "" : codeNameEntity.getName());
|
|
|
+ if(ZyDepositFileStatusEnum.PREPAY.code.equals(zyDepositFile.getStatus())){
|
|
|
+ yjjHj = yjjHj.add(zyDepositFile.getDepoAmount().setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }
|
|
|
+ else if(ZyDepositFileStatusEnum.STRAIGHT_BACK.code.equals(zyDepositFile.getStatus())){
|
|
|
+ ztYjjHj = ztYjjHj.add(zyDepositFile.getDepoAmount().setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ zyActpatient.setYjjHj(yjjHj);
|
|
|
+ zyActpatient.setZtYjjHj(ztYjjHj.abs());
|
|
|
+ zyActpatient.setZyDepositFiles(zyDepositFiles);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return zyActpatient;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<ZyActpatient> queryAdvancePaymentPatientList(PatientParam param) {
|
|
|
+ AssertUtil.isnotBlank(param.getInpatientNo(),"请输入住院号或者门诊号进行查询");
|
|
|
+ AssertUtil.isnotBlank(param.getInOutFlag(),"请选择在院或者出院病人");
|
|
|
+ List<String> inpatientNos = aPatientMiMapper.selectInpatientNoByKeyWard(param.getInpatientNo());
|
|
|
+ List<ZyActpatient> list = new ArrayList<>();
|
|
|
+ if(CollUtil.isEmpty(inpatientNos)){
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+ for (String inpatientNo: inpatientNos){
|
|
|
+ list.addAll(zyActpatientMapper.selectByInpatientNoList(YesOrNo.NO.getCode().equals(param.getInOutFlag()) ? ZyActpatient.ZY_ACTPATIENT : ZyActpatient.ZY_INACTPATIENT, inpatientNo));
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ public ZyDepositFile queryPrintAdvancePayment(ZyDepositFile param) {
|
|
|
+ AssertUtil.isnotBlank(param.getInpatientNo(),"住院号不能为空");
|
|
|
+ AssertUtil.isnotBlank(param.getReceiptNo(),"收据号不能为空");
|
|
|
+ ZyActpatient zyActpatient = zyActpatientMapper.selectByInpatientNo(ZyActpatient.ZY_ACTPATIENT, param.getInpatientNo(), null);
|
|
|
+ AssertUtil.isnotBlank(zyActpatient,"没在在院信息");
|
|
|
+ ZyDepositFile zyDepositFile = zyDepositFileService.queryZyDepositFileByReceiptNo(param.getReceiptNo());
|
|
|
+ AssertUtil.isnotBlank(zyDepositFile,"没有收据为["+param.getReceiptNo()+"]缴费记录");
|
|
|
+ List<CodeNameEntity> zdCheque = zyActpatientMapper.selectZdChequeType();
|
|
|
+ Map<String, CodeNameEntity> zdChequeMap = zdCheque.stream().collect(Collectors.toMap(CodeNameEntity::getCode, a -> a, (k1, k2) -> k1));
|
|
|
+ CodeNameEntity codeNameEntity = zdChequeMap.get(zyDepositFile.getDepoType());
|
|
|
+ zyDepositFile.setDepoTypeName(codeNameEntity == null ? "" : codeNameEntity.getName());
|
|
|
+ zyDepositFile.setDepoAmountDx(Convert.digitToChinese(zyDepositFile.getDepoAmount()));
|
|
|
+ zyDepositFile.setDepoAmount(zyDepositFile.getDepoAmount().setScale(2,BigDecimal.ROUND_HALF_UP));
|
|
|
+ zyDepositFile.setOpIdCodeName(userCache.getEmployeeName(zyDepositFile.getOpIdCode()));
|
|
|
+ ZdUnitCode zdUnitCode = zdUnitCodeDao.selectDeptDictByCode(zyActpatient.getAdmissDept());
|
|
|
+ zyDepositFile.setAdmissDeptName(zdUnitCode == null ? "" : zdUnitCode.getName());
|
|
|
+ zyDepositFile.setPatientId(zyActpatient.getMzNo());
|
|
|
+ zyDepositFile.setName(zyActpatient.getName());
|
|
|
+ return zyDepositFile;
|
|
|
+ }
|
|
|
}
|