Sfoglia il codice sorgente

修复手机与门诊同时缴费的问题

hurugang 5 anni fa
parent
commit
c4005067cc

+ 3 - 0
src/main/java/cn/hnthyy/thmz/mapper/his/MzVisitTableMapper.java

@@ -51,6 +51,9 @@ public interface MzVisitTableMapper {
             "<when test='orderNo!=null'>",
             ",order_no =#{orderNo,jdbcType=TINYINT}",
             "</when>",
+            "<when test='receiptNo!=null'>",
+            ",receipt_no =#{receiptNo,jdbcType=TINYINT}",
+            "</when>",
             "<when test='receiveFlag!=null'>",
             ",receive_flag =#{receiveFlag,jdbcType=CHAR}",
             "</when>",

+ 46 - 29
src/main/java/cn/hnthyy/thmz/service/impl/his/MzChargeDetailServiceImpl.java

@@ -167,7 +167,12 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
      */
     @Override
     public MzChargeDetail unPaidToFullChargeDetail(MzChargeDetail mzChargeDetail) throws MzException {
-        List<MzChargeDetail> mzChargeDetails = getMzChargeDetails(mzChargeDetail, YesNoEnum.YES);
+        MzVisitTable mzVisitTable=mzVisitTableMapper.selectByPatientIdAndTimes(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes());
+        if(mzVisitTable==null){
+            throw new MzException("当前病人就诊基础资料【MzVisitTable】不存在,请检查");
+        }
+        Integer receiptNo =mzVisitTable.getReceiptNo()+1;
+        List<MzChargeDetail> mzChargeDetails = getMzChargeDetails(mzChargeDetail, YesNoEnum.YES,receiptNo);
         if (mzChargeDetails == null || mzChargeDetails.size() == 0) {
             return null;
         }
@@ -205,7 +210,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
      * @return
      * @throws MzException
      */
-    private List<MzChargeDetail> getMzChargeDetails(MzChargeDetail mzChargeDetail, YesNoEnum yesNo) throws MzException {
+    private List<MzChargeDetail> getMzChargeDetails(MzChargeDetail mzChargeDetail, YesNoEnum yesNo,Integer receiptNo) throws MzException {
         if (mzChargeDetail == null || mzChargeDetail.getPatientId() == null || mzChargeDetail.getTimes() == null) {
             throw new MzException("病人编号和就诊次数不能为空!");
         }
@@ -222,7 +227,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             maxOrderNo = firstMzChargeDetail.getOrderNo();
             priceId = firstMzChargeDetail.getPriceId();
             priceTime = firstMzChargeDetail.getPriceTime();
-            itemNo = formatSupplyFee(mzChargeDetails, mzChargeDetailList, itemNo);
+            itemNo = formatSupplyFee(mzChargeDetails, mzChargeDetailList, itemNo,receiptNo);
         }
         maxOrderNo++;
         Map<String, MzYjReq> mzYjReqMap = new HashMap<>();
@@ -236,14 +241,14 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
                 if (mzYjReq != null && mzYjReq.getPercentFt() == null) {
                     String temp = maxOrderNo.toString();
                     temp = temp + index++;
-                    itemNo = formatYjChargeDetail(mzChargeDetail, mzChargeDetails, maxOrderNo, mzPatientMi, itemNo, jianYans, jianChas, mzYjReq, temp, priceId, priceTime, tcNoMap);
+                    itemNo = formatYjChargeDetail(mzChargeDetail, mzChargeDetails, maxOrderNo, mzPatientMi, itemNo, jianYans, jianChas, mzYjReq, temp, priceId, priceTime, tcNoMap,receiptNo);
                     mzYjReqMap.put(mzYjReq.getOrderCode(), mzYjReq);
                 }
             }
             List<JcJyItemCharge> jcJyItemCharges = null;
             if (jianYans.size() > 0) {
                 jcJyItemCharges = jcJyItemChargeService.queryJcItemChargeByCodeList(jianYans, ReqTypeEnum.JIAN_YAN.code);
-                itemNo = formatCxFeeItem(mzChargeDetail, mzChargeDetails, mzPatientMi, maxOrderNo, itemNo, mzYjReqMap, jianYans, tcNoMap, priceId, priceTime);
+                itemNo = formatCxFeeItem(mzChargeDetail, mzChargeDetails, mzPatientMi, maxOrderNo, itemNo, mzYjReqMap, jianYans, tcNoMap, priceId, priceTime,receiptNo);
             }
             if (jianChas.size() > 0) {
                 List<JcJyItemCharge> temps = jcJyItemChargeService.queryJcItemChargeByCodeList(jianChas, ReqTypeEnum.JIAN_CHA.code);
@@ -255,11 +260,11 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             }
             if (jcJyItemCharges != null && jcJyItemCharges.size() > 0) {
                 for (JcJyItemCharge jcJyItemCharge : jcJyItemCharges) {
-                    itemNo = formatYjDetailChargeDetail(mzChargeDetail, mzChargeDetails, maxOrderNo, mzPatientMi, itemNo, mzYjReqMap, jcJyItemCharge, tcNoMap, priceId, priceTime);
+                    itemNo = formatYjDetailChargeDetail(mzChargeDetail, mzChargeDetails, maxOrderNo, mzPatientMi, itemNo, mzYjReqMap, jcJyItemCharge, tcNoMap, priceId, priceTime,receiptNo);
                 }
             }
         }
-        formatPriceRoundDetail(mzChargeDetail, mzChargeDetails, mzPatientMi, mzChargeDetailList, maxOrderNo, itemNo, 1);
+        formatPriceRoundDetail(mzChargeDetail, mzChargeDetails, mzPatientMi, mzChargeDetailList, maxOrderNo, itemNo, receiptNo);
         //yes 预览需要将原数据库中已存在的明细与临时生成的一起返回
         if (YesNoEnum.YES.equals(yesNo)) {
             mzChargeDetails.addAll(mzChargeDetailList);
@@ -315,12 +320,17 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         if (windows == null) {
             throw new MzException("当前操作人未设置窗口号,请先设置!");
         }
+        MzVisitTable mzVisitTable=mzVisitTableMapper.selectByPatientIdAndTimes(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes());
+        if(mzVisitTable==null){
+            throw new MzException("当前病人就诊基础资料【MzVisitTable】不存在,请检查");
+        }
+        Integer receiptNo =mzVisitTable.getReceiptNo()+1;
         //入库收费明细数据开始
         MzChargeDetail mzChargeDetail = new MzChargeDetail(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes());
-        List<MzChargeDetail> mzChargeDetails = getMzChargeDetails(mzChargeDetail, YesNoEnum.NO);
+        List<MzChargeDetail> mzChargeDetails = getMzChargeDetails(mzChargeDetail, YesNoEnum.NO,receiptNo);
         getMzChargeDetailService().saveMzChargeDetail(mzChargeDetails);
         mzChargeDetail.setPrintFlag(YesNoEnum.NO.code.toString());
-        mzChargeDetail.setReceiptNo(1);
+        mzChargeDetail.setReceiptNo(receiptNo);
         mzChargeDetailMapper.updatePayMakAndPrintFlag(mzChargeDetail);
         //入库收费明细数据结束
 
@@ -334,7 +344,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         int serialNo = mzSerialNoService.getSerialNo();
         MzReceiptSerial mzReceiptSerial = new MzReceiptSerial();
         //实际支付金额 收银员收的钱
-        BigDecimal hadPayable = getHadPayable(opId, mzDepositFileVo, windows, mzPatientMi, feeMap, now, serialNo, mzReceiptSerial);
+        BigDecimal hadPayable = getHadPayable(opId, mzDepositFileVo, windows, mzPatientMi, feeMap, now, serialNo, mzReceiptSerial,receiptNo);
         if (hadPayable.compareTo(totalPayable) == -1) {
             throw new MzException("收款金额不足,实际应支付" + totalPayable.toString() + "元,但是实际只收了" + hadPayable.toString() + "元");
         }
@@ -366,7 +376,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         MzYjReq updateMzYjReq = new MzYjReq(patientId, times);
         updateMzYjReq.setSerialNo(serialNo);
         updateMzYjReq.setPayMark(PayMarkEnum.CHARGED.code);
-        updateMzYjReq.setReceiptNo(1);
+        updateMzYjReq.setReceiptNo(mzReceiptSerial.getReceiptNo());
         mzYjReqService.modifyMzYjReq(updateMzYjReq);
         //新增收费方式记录
         mzDepositFileMapper.batchInsertMzDepositFile(mzDepositFiles);
@@ -404,6 +414,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         newMzVisitTable.setPatientId(patientId);
         newMzVisitTable.setTimes(times);
         newMzVisitTable.setOrderNo(1);
+        newMzVisitTable.setReceiptNo(mzReceiptSerial.getReceiptNo());
         newMzVisitTable.setReceiveFlag(YesNoEnum.YES.code);
         mzVisitTableMapper.updateMzVisitTable(newMzVisitTable);
     }
@@ -427,6 +438,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         MzChargeDetail mzChargeDetail = new MzChargeDetail(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes());
         mzChargeDetail.setSerialNo(serialNo);
         mzChargeDetail.setRealNo(serialNo);
+        mzChargeDetail.setReceiptNo(newMzDepositFileList.get(0).getReceiptNo());
         //如果有发药队列,修改发药统计的流水号
         MzYpFydl mzYpFydl = new MzYpFydl();
         mzYpFydl.setSerialNo(serialNo);
@@ -440,7 +452,6 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         ypMzFytj.setTimes(mzDepositFileVo.getTimes());
         ypMzFytjMapper.updateSeralNoForByjz(ypMzFytj);
         mzChargeDetailMapper.updatePayMakAndPrintFlag(mzChargeDetail);
-
         return newMzDepositFileList.get(0).getReceiptNo();
     }
 
@@ -639,7 +650,12 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
 
     @Override
     public List<MzChargeDetail> getTempMzChargeDetailListForUnPaid(MzChargeDetail mzChargeDetail) throws MzException {
-        List<MzChargeDetail> mzChargeDetails = getMzChargeDetails(mzChargeDetail, YesNoEnum.YES);
+        MzVisitTable mzVisitTable=mzVisitTableMapper.selectByPatientIdAndTimes(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes());
+        if(mzVisitTable==null){
+            throw new MzException("当前病人就诊基础资料【MzVisitTable】不存在,请检查");
+        }
+        Integer receiptNo =mzVisitTable.getReceiptNo()+1;
+        List<MzChargeDetail> mzChargeDetails = getMzChargeDetails(mzChargeDetail, YesNoEnum.YES,receiptNo);
         if (mzChargeDetails == null || mzChargeDetails.size() == 0) {
             return null;
         }
@@ -729,7 +745,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             MzReceiptSerial mzReceiptSerial = new MzReceiptSerial();
             String payWay = Constants.CASH;
             payWay = getDeposFiles(opId, mzDepositFileVo, now, times, serialNo, totalPayable, payWay, newMzDepositFiles, allRefund);
-            setMzReceiptSerial(opId, mzDepositFileVo.getPatientId(), times, windows, mzChargeDetails.get(0).getResponceType(), feeMap, now, serialNo, mzReceiptSerial, payWay, totalPayable);
+            setMzReceiptSerial(opId, mzDepositFileVo.getPatientId(), times, windows, mzChargeDetails.get(0).getResponceType(), feeMap, now, serialNo, mzReceiptSerial, payWay, totalPayable,1);
             getMzChargeDetailService().updateChargeFlag(opId, mzDepositFileVo.getPatientId(), times, mzChargeDetails.get(0).getName(), mzChargeDetails, now, serialNo, payWay, mzDepositFileVo.getTimes());
             getMzChargeDetailService().afterChargeFee(mzDepositFileVo.getPatientId(), times, newMzDepositFiles, now, serialNo, mzReceiptSerial, totalPayable);
             MzPatientMi updateMzPatientMi = new MzPatientMi();
@@ -1222,7 +1238,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
      * @param mzReceiptSerial
      * @return
      */
-    private BigDecimal getHadPayable(String opId, MzDepositFileVo mzDepositFileVo, Windows windows, MzPatientMi mzPatientMi, Map<String, BigDecimal> feeMap, Date now, int serialNo, MzReceiptSerial mzReceiptSerial) {
+    private BigDecimal getHadPayable(String opId, MzDepositFileVo mzDepositFileVo, Windows windows, MzPatientMi mzPatientMi, Map<String, BigDecimal> feeMap, Date now, int serialNo, MzReceiptSerial mzReceiptSerial,Integer receiptNo) {
         boolean isBenYuanJiZhang = true;
         String chequeType = null;
         //总收款金额
@@ -1232,7 +1248,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         for (MzDepositFile m : mzDepositFileVo.getMzDepositFiles()) {
             m.setPatientId(mzDepositFileVo.getPatientId());
             m.setTimes(mzDepositFileVo.getTimes());
-            m.setReceiptNo(1);
+            m.setReceiptNo(receiptNo);
             m.setPayMark(PayMarkEnum.CHARGED.code);
             m.setChargeDate(now);
             m.setDcountNo(YesNoEnum.NO.code);
@@ -1254,7 +1270,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             }
         }
         hadPayable.setScale(2, BigDecimal.ROUND_FLOOR);
-        setMzReceiptSerial(opId, mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), windows, mzPatientMi.getResponseType(), feeMap, now, serialNo, mzReceiptSerial, chequeType, isBenYuanJiZhang ? hadPayable : excludeByjzPay);
+        setMzReceiptSerial(opId, mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), windows, mzPatientMi.getResponseType(), feeMap, now, serialNo, mzReceiptSerial, chequeType, isBenYuanJiZhang ? hadPayable : excludeByjzPay,receiptNo);
         return hadPayable;
     }
 
@@ -1273,10 +1289,10 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
      * @param chequeType
      * @param hadPayable
      */
-    private void setMzReceiptSerial(String opId, String patientId, Integer times, Windows windows, String responseType, Map<String, BigDecimal> feeMap, Date now, int serialNo, MzReceiptSerial mzReceiptSerial, String chequeType, BigDecimal hadPayable) {
+    private void setMzReceiptSerial(String opId, String patientId, Integer times, Windows windows, String responseType, Map<String, BigDecimal> feeMap, Date now, int serialNo, MzReceiptSerial mzReceiptSerial, String chequeType, BigDecimal hadPayable,Integer receiptNo) {
         mzReceiptSerial.setPatientId(patientId);
         mzReceiptSerial.setTimes(times);
-        mzReceiptSerial.setReceiptNo(1);
+        mzReceiptSerial.setReceiptNo(receiptNo);
         mzReceiptSerial.setSerialNo(serialNo);
         mzReceiptSerial.setOperatorId(opId);
         mzReceiptSerial.setPayId(opId);
@@ -1607,7 +1623,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
      * @param jianYans
      * @return
      */
-    private Integer formatCxFeeItem(MzChargeDetail mzChargeDetail, List<MzChargeDetail> mzChargeDetails, MzPatientMi mzPatientMi, Integer maxOrderNo, Integer itemNo, Map<String, MzYjReq> mzYjReqMap, List<String> jianYans, Map<String, MzChargeDetail> tcNoMap, String priceId, Date priceTime) throws MzException {
+    private Integer formatCxFeeItem(MzChargeDetail mzChargeDetail, List<MzChargeDetail> mzChargeDetails, MzPatientMi mzPatientMi, Integer maxOrderNo, Integer itemNo, Map<String, MzYjReq> mzYjReqMap, List<String> jianYans, Map<String, MzChargeDetail> tcNoMap, String priceId, Date priceTime,Integer receiptNo) throws MzException {
         List<JyZdItem> jyZdItems = jyZdItemService.queryCxTimesByCodeList(jianYans);
         MzYjReq mzYjReq = mzYjReqMap.get(jianYans.get(0));
         if (jyZdItems != null && jyZdItems.size() > 0) {
@@ -1615,7 +1631,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             for (JyZdItem jyZdItem : jyZdItems) {
                 if (jyZdItem != null) {
                     if (StringUtils.isNotBlank(jyZdItem.getVessel()) && !vesselSets.contains(jyZdItem.getVessel())) {
-                        itemNo = formatVesselFee(mzChargeDetail, mzChargeDetails, mzPatientMi, maxOrderNo, itemNo, mzYjReq, vesselSets, jyZdItem, tcNoMap, priceId, priceTime);
+                        itemNo = formatVesselFee(mzChargeDetail, mzChargeDetails, mzPatientMi, maxOrderNo, itemNo, mzYjReq, vesselSets, jyZdItem, tcNoMap, priceId, priceTime,receiptNo);
                     }
                 }
             }
@@ -1630,7 +1646,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             MzChargeDetail newMzChargeDetail = new MzChargeDetail();
             newMzChargeDetail.setPatientId(mzChargeDetail.getPatientId());
             newMzChargeDetail.setTimes(mzChargeDetail.getTimes());
-            newMzChargeDetail.setReceiptNo(1);
+            newMzChargeDetail.setReceiptNo(receiptNo);
             newMzChargeDetail.setOrderNo(maxOrderNo);
             newMzChargeDetail.setItemNo(itemNo++);
             newMzChargeDetail.setChargeItemCode(Constants.JM_CAI_XUE_CODE);
@@ -1691,7 +1707,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
      * @param jyZdItem
      * @return
      */
-    private Integer formatVesselFee(MzChargeDetail mzChargeDetail, List<MzChargeDetail> mzChargeDetails, MzPatientMi mzPatientMi, Integer maxOrderNo, Integer itemNo, MzYjReq mzYjReq, Set<String> vesselSets, JyZdItem jyZdItem, Map<String, MzChargeDetail> tcNoMap, String priceId, Date priceTime) throws MzException {
+    private Integer formatVesselFee(MzChargeDetail mzChargeDetail, List<MzChargeDetail> mzChargeDetails, MzPatientMi mzPatientMi, Integer maxOrderNo, Integer itemNo, MzYjReq mzYjReq, Set<String> vesselSets, JyZdItem jyZdItem, Map<String, MzChargeDetail> tcNoMap, String priceId, Date priceTime,Integer receiptNo) throws MzException {
         JyZdTubeCharge jyZdTubeCharge = jyZdTubeChargeService.queryJyZdTubeChargeByCode(jyZdItem.getVessel());
         if (jyZdTubeCharge != null) {
             ZdChargeItem zdChargeItem = zdChargeItemService.queryZdChargeItemByCode(jyZdTubeCharge.getChargeCode());
@@ -1705,7 +1721,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             MzChargeDetail newMzChargeDetail = new MzChargeDetail();
             newMzChargeDetail.setPatientId(mzChargeDetail.getPatientId());
             newMzChargeDetail.setTimes(mzChargeDetail.getTimes());
-            newMzChargeDetail.setReceiptNo(1);
+            newMzChargeDetail.setReceiptNo(receiptNo);
             newMzChargeDetail.setOrderNo(maxOrderNo);
             newMzChargeDetail.setItemNo(itemNo++);
             newMzChargeDetail.setChargeItemCode(jyZdTubeCharge.getChargeCode());
@@ -1763,7 +1779,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
      * @return
      * @throws Exception
      */
-    private Integer formatSupplyFee(List<MzChargeDetail> mzChargeDetails, List<MzChargeDetail> mzChargeDetailList, Integer itemNo) {
+    private Integer formatSupplyFee(List<MzChargeDetail> mzChargeDetails, List<MzChargeDetail> mzChargeDetailList, Integer itemNo,Integer receiptNo) {
         for (MzChargeDetail mcd : mzChargeDetailList) {
             //非口服用药方式,需要写入收费记录
             if (StringUtils.isNotBlank(mcd.getSupplyCode()) && !Constants.KOU_FU_SUPPLY_CODE.equals(mcd.getSupplyCode())) {
@@ -1782,6 +1798,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
                             } else {
                                 newMzChargeDetail.setUnitPrice(zdChargeItem.getChargeAmount().multiply(zdChargeItem.getPercentag1()));
                             }
+                            newMzChargeDetail.setReceiptNo(receiptNo);
                             newMzChargeDetail.setSerial("");
                             newMzChargeDetail.setPayMark(PayMarkEnum.NO_CHARGE.code);
                             newMzChargeDetail.setGroupNo(Constants.YJ_GROUP_NO);
@@ -1829,11 +1846,11 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
      * @param tcNo
      * @return
      */
-    private Integer formatYjChargeDetail(MzChargeDetail mzChargeDetail, List<MzChargeDetail> mzChargeDetails, Integer maxOrderNo, MzPatientMi mzPatientMi, Integer itemNo, List<String> jianYans, List<String> jianChas, MzYjReq mzYjReq, String tcNo, String priceId, Date priceTime, Map<String, MzChargeDetail> tcNoMap) {
+    private Integer formatYjChargeDetail(MzChargeDetail mzChargeDetail, List<MzChargeDetail> mzChargeDetails, Integer maxOrderNo, MzPatientMi mzPatientMi, Integer itemNo, List<String> jianYans, List<String> jianChas, MzYjReq mzYjReq, String tcNo, String priceId, Date priceTime, Map<String, MzChargeDetail> tcNoMap,Integer receiptNo) {
         MzChargeDetail newMzChargeDetail = new MzChargeDetail();
         newMzChargeDetail.setPatientId(mzChargeDetail.getPatientId());
         newMzChargeDetail.setTimes(mzChargeDetail.getTimes());
-        newMzChargeDetail.setReceiptNo(1);
+        newMzChargeDetail.setReceiptNo(receiptNo);
         newMzChargeDetail.setOrderNo(maxOrderNo);
         newMzChargeDetail.setItemNo(itemNo++);
         newMzChargeDetail.setChargeItemCode(tcNo);
@@ -1898,7 +1915,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
      * @param jcJyItemCharge
      * @return
      */
-    private Integer formatYjDetailChargeDetail(MzChargeDetail mzChargeDetail, List<MzChargeDetail> mzChargeDetails, Integer maxOrderNo, MzPatientMi mzPatientMi, Integer itemNo, Map<String, MzYjReq> mzYjReqMap, JcJyItemCharge jcJyItemCharge, Map<String, MzChargeDetail> tcNoMap, String priceId, Date priceTime) throws MzException {
+    private Integer formatYjDetailChargeDetail(MzChargeDetail mzChargeDetail, List<MzChargeDetail> mzChargeDetails, Integer maxOrderNo, MzPatientMi mzPatientMi, Integer itemNo, Map<String, MzYjReq> mzYjReqMap, JcJyItemCharge jcJyItemCharge, Map<String, MzChargeDetail> tcNoMap, String priceId, Date priceTime,Integer receiptNo) throws MzException {
         MzYjReq mzYjReq = mzYjReqMap.get(jcJyItemCharge.getCode());
         ZdChargeItem zdChargeItem = zdChargeItemService.queryZdChargeItemByCode(jcJyItemCharge.getChargeCode());
         if (zdChargeItem == null) {
@@ -1911,7 +1928,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         MzChargeDetail newMzChargeDetail = new MzChargeDetail();
         newMzChargeDetail.setPatientId(mzChargeDetail.getPatientId());
         newMzChargeDetail.setTimes(mzChargeDetail.getTimes());
-        newMzChargeDetail.setReceiptNo(1);
+        newMzChargeDetail.setReceiptNo(receiptNo);
         newMzChargeDetail.setOrderNo(maxOrderNo);
         newMzChargeDetail.setItemNo(itemNo++);
         newMzChargeDetail.setChargeItemCode(jcJyItemCharge.getChargeCode());