|  | @@ -41,6 +41,7 @@ import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Value;
 | 
	
		
			
				|  |  |  import org.springframework.context.annotation.Lazy;
 | 
	
		
			
				|  |  | +import org.springframework.dao.DuplicateKeyException;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Isolation;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Propagation;
 | 
	
	
		
			
				|  | @@ -720,7 +721,19 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
 | 
	
		
			
				|  |  |          clinic.setTimes(mzDepositFileVo.getTimes());
 | 
	
		
			
				|  |  |          clinic.setReceiptNo(receiptNo);
 | 
	
		
			
				|  |  |          clinic.setClinicStatus(ClinicStatusEnum.CHARGED.code);
 | 
	
		
			
				|  |  | -        clinicMapper.updateClinicByPatientIdAndTimes(clinic);
 | 
	
		
			
				|  |  | +        try{
 | 
	
		
			
				|  |  | +            clinicMapper.updateClinicByPatientIdAndTimes(clinic);
 | 
	
		
			
				|  |  | +        }catch (DuplicateKeyException e){
 | 
	
		
			
				|  |  | +            //可能会有同一就诊次数不同缴费次数的数据,老医生系统产生,导致更新的时候索引重复,无法缴费
 | 
	
		
			
				|  |  | +            List<Clinic> clinicList=clinicMapper.selectByPatientIdAndTimes(mzDepositFileVo.getPatientId(),mzDepositFileVo.getTimes());
 | 
	
		
			
				|  |  | +            if(clinicList!=null && clinicList.size()>0){
 | 
	
		
			
				|  |  | +                clinicMapper.deleteById(clinicList.get(0).getId());
 | 
	
		
			
				|  |  | +                clinicMapper.updateClinicByPatientIdAndTimes(clinic);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +            log.error(e.getLocalizedMessage());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          //发送缴费成功MQ
 | 
	
		
			
				|  |  |          orderStatusChangeService.orderStatusChange(mzDepositFileVo.getPatientId() + "_" + mzDepositFileVo.getTimes() + "_" + receiptNo + "," + OrderStatusEnum.SUCCESSFUL_PRESCRIPTION_PAYMENT.code);
 | 
	
		
			
				|  |  |          return receiptNo;
 |