|  | @@ -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());
 |