SettleService.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package thyyxxk.webserver.service.yibao;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import thyyxxk.webserver.dao.his.yibao.Routines;
  6. import thyyxxk.webserver.entity.yibao.patient.FeeCounteract;
  7. import thyyxxk.webserver.entity.yibao.patient.Overview;
  8. import java.util.*;
  9. import java.util.concurrent.atomic.AtomicInteger;
  10. /**
  11. * @author dj
  12. */
  13. @Slf4j
  14. @Service
  15. public class SettleService {
  16. private final Routines routines;
  17. @Autowired
  18. public SettleService(Routines routines) {
  19. this.routines = routines;
  20. }
  21. public void beforeUpload(Overview o) {
  22. List<FeeCounteract> negative = routines.selectNegativeFeesWithOriDetlSn(
  23. o.getInpatientNo(), o.getAdmissTimes(), o.getLedgerSn());
  24. if (null == negative || negative.isEmpty()) {
  25. log.info("正负相抵完成,抵消费用总条目:0");
  26. return;
  27. }
  28. List<Integer> positive = new ArrayList<>();
  29. List<Integer> tempSn = new ArrayList<>();
  30. for (FeeCounteract feeCounteract : negative) {
  31. tempSn.add(feeCounteract.getOriDetailSn());
  32. if (tempSn.size() == 20) {
  33. positive.addAll(routines.selectPositiveFeesByDetlSn(
  34. o.getInpatientNo(), o.getAdmissTimes(), o.getLedgerSn(), tempSn));
  35. tempSn.clear();
  36. }
  37. }
  38. if (tempSn.size() > 0) {
  39. positive.addAll(routines.selectPositiveFeesByDetlSn(
  40. o.getInpatientNo(), o.getAdmissTimes(), o.getLedgerSn(), tempSn));
  41. }
  42. AtomicInteger count = new AtomicInteger();
  43. negative.forEach(itm -> {
  44. if (positive.contains(itm.getOriDetailSn())) {
  45. routines.updateYbTransFlagInPair(o.getInpatientNo(),
  46. o.getAdmissTimes(), itm.getDetailSn(), itm.getOriDetailSn());
  47. count.addAndGet(2);
  48. }
  49. });
  50. log.info("正负相抵完成,抵消费用总条目:{}", count.get());
  51. }
  52. }