|
@@ -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"})
|