|  | @@ -6,14 +6,18 @@ import org.springframework.http.*;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.web.client.RestTemplate;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.config.exception.ExceptionEnum;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.dao.his.yibao.Routines;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.entity.ResultVo;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.entity.yibao.dismiss.YbSettleFee;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.entity.yibao.patient.FeeCounteract;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.entity.yibao.patient.Overview;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.entity.yibao.patient.Patient;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.FilterUtil;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.ResultVoUtil;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.YbLinksUtil;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  | +import java.util.concurrent.atomic.AtomicInteger;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @author dj
 | 
	
	
		
			
				|  | @@ -22,10 +26,44 @@ import java.util.*;
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class SettleService {
 | 
	
		
			
				|  |  |      private final DismissService service;
 | 
	
		
			
				|  |  | +    private final Routines routines;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    public SettleService(DismissService service) {
 | 
	
		
			
				|  |  | +    public SettleService(DismissService service, Routines routines) {
 | 
	
		
			
				|  |  |          this.service = service;
 | 
	
		
			
				|  |  | +        this.routines = routines;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void beforeUpload(Overview o) {
 | 
	
		
			
				|  |  | +        List<FeeCounteract> negative = routines.selectNegativeFeesWithOriDetlSn(
 | 
	
		
			
				|  |  | +                o.getInpatientNo(), o.getAdmissTimes(), o.getLedgerSn());
 | 
	
		
			
				|  |  | +        if (null == negative || negative.isEmpty()) {
 | 
	
		
			
				|  |  | +            log.info("正负相抵完成,抵消费用总条目:0");
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        List<Integer> positive = new ArrayList<>();
 | 
	
		
			
				|  |  | +        List<Integer> tempSn = new ArrayList<>();
 | 
	
		
			
				|  |  | +        for (FeeCounteract feeCounteract : negative) {
 | 
	
		
			
				|  |  | +            tempSn.add(feeCounteract.getOriDetailSn());
 | 
	
		
			
				|  |  | +            if (tempSn.size() == 20) {
 | 
	
		
			
				|  |  | +                positive.addAll(routines.selectPositiveFeesByDetlSn(
 | 
	
		
			
				|  |  | +                        o.getInpatientNo(), o.getAdmissTimes(), o.getLedgerSn(), tempSn));
 | 
	
		
			
				|  |  | +                tempSn.clear();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (tempSn.size() > 0) {
 | 
	
		
			
				|  |  | +            positive.addAll(routines.selectPositiveFeesByDetlSn(
 | 
	
		
			
				|  |  | +                    o.getInpatientNo(), o.getAdmissTimes(), o.getLedgerSn(), tempSn));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        AtomicInteger count = new AtomicInteger();
 | 
	
		
			
				|  |  | +        negative.forEach(itm -> {
 | 
	
		
			
				|  |  | +            if (positive.contains(itm.getOriDetailSn())) {
 | 
	
		
			
				|  |  | +                routines.updateYbTransFlagInPair(o.getInpatientNo(),
 | 
	
		
			
				|  |  | +                        o.getAdmissTimes(), itm.getDetailSn(), itm.getOriDetailSn());
 | 
	
		
			
				|  |  | +                count.addAndGet(2);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        log.info("正负相抵完成,抵消费用总条目:{}", count.get());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @SuppressWarnings({"rawtypes", "unchecked"})
 |