|
@@ -621,8 +621,8 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
mzChargeDetailMapper.updatePayMakAndPrintFlag(updateMzChargeDetail);
|
|
|
List<MzReceiptSerial> mzReceiptSerials = mzReceiptSerialMapper.selectSerialForThisTime(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes());
|
|
|
if (mzReceiptSerials != null && mzReceiptSerials.size() > 0) {
|
|
|
- formatRefundReceiptSerial(mzReceiptSerials,opId);
|
|
|
- mzReceiptSerialMapper.batchInsertMzReceiptSerial(mzReceiptSerials);
|
|
|
+ List<MzReceiptSerial> newReceiptSerials = formatRefundReceiptSerial(mzReceiptSerials,opId);
|
|
|
+ mzReceiptSerialMapper.batchInsertMzReceiptSerial(newReceiptSerials);
|
|
|
}
|
|
|
MzReceiptSerial updateMzReceiptSerial = new MzReceiptSerial(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes());
|
|
|
//updateMzReceiptSerial.setPayMark(PayMarkEnum.RETURN_PREMIUM.code);
|
|
@@ -689,8 +689,19 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void formatRefundReceiptSerial(List<MzReceiptSerial> mzReceiptSerials,String opId) {
|
|
|
+ private List<MzReceiptSerial> formatRefundReceiptSerial(List<MzReceiptSerial> mzReceiptSerials,String opId) {
|
|
|
+ Set<String> tempSet = new HashSet<>();
|
|
|
+ List<MzReceiptSerial> newReceiptSerials = new ArrayList<>();
|
|
|
for (MzReceiptSerial mz : mzReceiptSerials) {
|
|
|
+ //退过费的发票表记录
|
|
|
+ if(mz.getSerialNo()<0 && mz.getReceiptNo()<0){
|
|
|
+ Integer tempSerialNo =-mz.getSerialNo();
|
|
|
+ tempSet.add(mz.getChequeType()+"_"+tempSerialNo);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(tempSet.contains(mz.getChequeType()+"_"+mz.getSerialNo())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
mz.setOperatorId(opId);
|
|
|
mz.setReceiptNo(-mz.getReceiptNo());
|
|
|
mz.setPayId(opId);
|
|
@@ -723,7 +734,9 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
mz.setChequeType(Constants.CASH);
|
|
|
mz.setChargeDcountDate(null);
|
|
|
mz.setChargeDcountNo(YesNoEnum.NO.code);
|
|
|
+ newReceiptSerials.add(mz);
|
|
|
}
|
|
|
+ return newReceiptSerials;
|
|
|
}
|
|
|
|
|
|
private void fromatRefundDetail(String opId, List<MzChargeDetail> mzChargeDetails, List<String> chargeItemCodeList, List<MzChargeDetail> oriMzChargeDetails, Date now, List<MzChargeDetail> tcMzChargeDetails, List<MzChargeDetail> removeMzChargeDetails) {
|
|
@@ -776,26 +789,29 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
private String getDeposFiles(String opId, MzDepositFileVo mzDepositFileVo, Date now, int times, int serialNo, BigDecimal totalPayable, String payWay, List<MzDepositFile> newMzDepositFiles, boolean allRefund) {
|
|
|
List<MzDepositFile> mzDepositFiles = mzDepositFileMapper.selectMzDepositFileByTimes(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(),mzDepositFileVo.getReceiptNo());
|
|
|
if (mzDepositFiles != null || mzDepositFiles.size() > 0) {
|
|
|
+ MzDepositFile temp = CloneUtil.clone(mzDepositFiles.get(0));
|
|
|
+ temp.setReceiptNo(-temp.getReceiptNo());
|
|
|
+ temp.setAmount(BigDecimal.ZERO.subtract(temp.getAmount()));
|
|
|
+ temp.setReceiptSn(-temp.getReceiptSn());
|
|
|
+ temp.setSerialNo(-temp.getSerialNo());
|
|
|
+ temp.setDeptNo(null);
|
|
|
+ temp.setChargeDate(now);
|
|
|
+ temp.setPayMark(PayMarkEnum.RETURN_PREMIUM.code);
|
|
|
+ temp.setOpId(opId);
|
|
|
+ temp.setChequeType(Constants.CASH);
|
|
|
+ temp.setDcountNo(YesNoEnum.NO.code);
|
|
|
+ temp.setDcountDate(null);
|
|
|
+ newMzDepositFiles.add(temp);
|
|
|
+ BigDecimal amount=BigDecimal.ZERO;
|
|
|
for (MzDepositFile ms : mzDepositFiles) {
|
|
|
if (ms != null) {
|
|
|
if (StringUtils.isNotBlank(ms.getChequeType())) {
|
|
|
payWay = ms.getChequeType();
|
|
|
}
|
|
|
- MzDepositFile temp = CloneUtil.clone(ms);
|
|
|
- temp.setReceiptNo(-temp.getReceiptNo());
|
|
|
- temp.setAmount(BigDecimal.ZERO.subtract(temp.getAmount()));
|
|
|
- temp.setReceiptSn(-temp.getReceiptSn());
|
|
|
- temp.setSerialNo(-temp.getSerialNo());
|
|
|
- temp.setDeptNo(null);
|
|
|
- temp.setChargeDate(now);
|
|
|
- temp.setPayMark(PayMarkEnum.RETURN_PREMIUM.code);
|
|
|
- temp.setOpId(opId);
|
|
|
- temp.setChequeType(Constants.CASH);
|
|
|
- temp.setDcountNo(YesNoEnum.NO.code);
|
|
|
- temp.setDcountDate(null);
|
|
|
- newMzDepositFiles.add(temp);
|
|
|
+ amount=amount.add(ms.getAmount());
|
|
|
}
|
|
|
}
|
|
|
+ temp.setAmount(amount);
|
|
|
if (!allRefund) {
|
|
|
MzDepositFile m = mzDepositFiles.get(0);
|
|
|
m.setTimes(times);
|