diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirTbsVtbPayJoinController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirTbsVtbPayJoinController.java index c8772caa..ab3d9351 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirTbsVtbPayJoinController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirTbsVtbPayJoinController.java @@ -28,7 +28,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * BI报表 ROI费率 @@ -44,10 +46,26 @@ public class BirTbsVtbPayJoinController { private BirTbsVtbPayJoinService birTbsVtbPayJoinService; @GetMapping("/page") - public R> page(BirTbsVtbPayJoinSo so){ - List list = birTbsVtbPayJoinService.selectBirTbsVtbPayJoinDTO(so); - return R.byPageHelperList(list); + public R> page(BirTbsVtbPayJoinSo so){ + PageVo page = birTbsVtbPayJoinService.selectBirTbsVtbPayJoinDTO(so,1); + BirTbsVtbPayJoinDTO sumData = birTbsVtbPayJoinService.getSumData(so); + Map returnMap = new HashMap<>(); + returnMap.put("page",page); + returnMap.put("sumData",sumData); + + + return R.ok(returnMap); } + @GetMapping("/export") + public R> export(BirTbsVtbPayJoinSo so){ + PageVo page = birTbsVtbPayJoinService.selectBirTbsVtbPayJoinDTO(so,0); + BirTbsVtbPayJoinDTO sumData = birTbsVtbPayJoinService.getSumData(so); + Map returnMap = new HashMap<>(); + returnMap.put("list",page.getList()); + returnMap.put("sumData",sumData); + + return R.ok(returnMap); + } } diff --git a/src/main/java/com/qs/serve/modules/bir/entity/dto/BirTbsVtbPayJoinDTO.java b/src/main/java/com/qs/serve/modules/bir/entity/dto/BirTbsVtbPayJoinDTO.java index 6feb55e9..8be86f23 100644 --- a/src/main/java/com/qs/serve/modules/bir/entity/dto/BirTbsVtbPayJoinDTO.java +++ b/src/main/java/com/qs/serve/modules/bir/entity/dto/BirTbsVtbPayJoinDTO.java @@ -86,6 +86,8 @@ public class BirTbsVtbPayJoinDTO { private String vtbCode; + private Integer vtbState; + private String checkUserCode; private String checkUserName; diff --git a/src/main/java/com/qs/serve/modules/bir/service/BirTbsVtbPayJoinService.java b/src/main/java/com/qs/serve/modules/bir/service/BirTbsVtbPayJoinService.java index d4f5561c..d455abc0 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/BirTbsVtbPayJoinService.java +++ b/src/main/java/com/qs/serve/modules/bir/service/BirTbsVtbPayJoinService.java @@ -1,6 +1,7 @@ package com.qs.serve.modules.bir.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.modules.bir.entity.BirBaseActivity; import com.qs.serve.modules.bir.entity.dto.BirTbsVtbPayJoinDTO; import com.qs.serve.modules.bir.entity.so.BirTbsVtbPayJoinSo; @@ -16,6 +17,8 @@ public interface BirTbsVtbPayJoinService extends IService { List findPage(BirTbsVtbPayJoinSo so); - List selectBirTbsVtbPayJoinDTO(BirTbsVtbPayJoinSo so); + PageVo selectBirTbsVtbPayJoinDTO(BirTbsVtbPayJoinSo so,Integer searchPage); + + BirTbsVtbPayJoinDTO getSumData(BirTbsVtbPayJoinSo so); } diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirTbsVtbPayJoinServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirTbsVtbPayJoinServiceImpl.java index 9da4d605..ec59521a 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirTbsVtbPayJoinServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirTbsVtbPayJoinServiceImpl.java @@ -61,59 +61,25 @@ public class BirTbsVtbPayJoinServiceImpl extends ServiceImpl selectBirTbsVtbPayJoinDTO(BirTbsVtbPayJoinSo so){ - PageUtil.startPage(); - so.setOnlyAct(1); - List costApplyList = this.baseMapper.selectBirTbsVtbPayJoinDTO(so); - List actIds = costApplyList.stream().map(a->a.getActivityId()).collect(Collectors.toList()); - if(actIds.size()==0){ - return new ArrayList<>(); + public PageVo selectBirTbsVtbPayJoinDTO(BirTbsVtbPayJoinSo so,Integer searchPage){ + if(searchPage==1) { + PageUtil.startPage(); } - so.setOnlyAct(null); - so.setActIds(actIds); List dtoList = this.baseMapper.selectBirTbsVtbPayJoinDTO(so); - List actDtoList = dtoList.stream().collect(Collectors.groupingBy(BirTbsVtbPayJoinDTO::getActivityId)) - .values() - .stream() - .flatMap(List::stream) - .collect(Collectors.toList()); - - List vtbDtoList = dtoList.stream().filter(a->a.getVtbId()!=null).collect(Collectors.groupingBy(BirTbsVtbPayJoinDTO::getVtbId)) - .values() - .stream() - .flatMap(List::stream).map(a->{ - BirVtbPayJoinDTO dto = new BirVtbPayJoinDTO(); - CopierUtil.copy(a,dto); - return dto; - }) - .collect(Collectors.toList()); - - - List payDtoList = dtoList.stream().filter(a->a.getPayId()!=null).collect(Collectors.groupingBy(BirTbsVtbPayJoinDTO::getPayId)) - .values() - .stream() - .flatMap(List::stream).map(a->{ - BirPayJoinDTO dto = new BirPayJoinDTO(); - CopierUtil.copy(a,dto); - return dto; - }) - .collect(Collectors.toList()); - - List vtbDtoChirlList = vtbDtoList.stream().map(vtb->{ - List payList = payDtoList.stream().filter(pay->pay.getVtbId().equals(vtb.getVtbId())).collect(Collectors.toList()); - vtb.setPayJoinDTOList(payList); - return vtb; - }).collect(Collectors.toList()); + PageVo pageVo = new PageVo<>(); + if(searchPage==1) { + pageVo = R.buildPageHelperList(dtoList); + } + + List actIds = dtoList.stream().map(a->a.getActivityId()).distinct().collect(Collectors.toList()); + List sumVtbAmountList = actIds.size()>0?this.baseMapper.selectSumVtbAmount(actIds):new ArrayList<>(); List sumPayAmountList = actIds.size()>0?this.baseMapper.selectSumPayAmount(actIds):new ArrayList<>(); - List returnActDtoList = actDtoList.stream().map(act->{ - List vtbList = vtbDtoChirlList.stream().filter(vtb->vtb.getActivityId().equals(act.getActivityId())).collect(Collectors.toList()); - act.setBirVtbPayJoinDTOList(vtbList); - + List returnActDtoList = dtoList.stream().map(act->{ Optional sumVtbAmountMatch = sumVtbAmountList.stream() .filter(a->a.getActivityId().equals(act.getActivityId())) @@ -149,7 +115,123 @@ public class BirTbsVtbPayJoinServiceImpl extends ServiceImpl costApplyList = this.baseMapper.selectBirTbsVtbPayJoinDTO(so); + List actIds = costApplyList.stream().map(a->a.getActivityId()).collect(Collectors.toList()); + if(actIds.size()==0){ + return sumDto; + } + so.setOnlyAct(null); + so.setActIds(actIds); + List dtoList = this.baseMapper.selectBirTbsVtbPayJoinDTO(so); + + List sumVtbAmountList = actIds.size()>0?this.baseMapper.selectSumVtbAmount(actIds):new ArrayList<>(); + + List sumPayAmountList = actIds.size()>0?this.baseMapper.selectSumPayAmount(actIds):new ArrayList<>(); + + List returnActDtoList = dtoList.stream() + .collect(Collectors.groupingBy(BirTbsVtbPayJoinDTO::getActivityId)) + .values() + .stream() + .flatMap(List::stream).map(act->{ + + Optional sumVtbAmountMatch = sumVtbAmountList.stream() + .filter(a->a.getActivityId().equals(act.getActivityId())) + .findFirst(); + + if (sumVtbAmountMatch.isPresent()) { + act.setCheckedAmount(sumVtbAmountMatch.get().getCheckedAmount()); + act.setCheckingAmount(sumVtbAmountMatch.get().getCheckingAmount()); + }else{ + act.setCheckedAmount(BigDecimal.ZERO); + act.setCheckingAmount(BigDecimal.ZERO); + } + + Optional sumPayAmountMatch = sumPayAmountList.stream() + .filter(a->a.getActivityId().equals(act.getActivityId())) + .findFirst(); + + if (sumPayAmountMatch.isPresent()) { + act.setPayedAmount(sumPayAmountMatch.get().getPayedAmount()); + act.setNotPayAmount(sumPayAmountMatch.get().getNotPayAmount()); + }else{ + act.setPayedAmount(BigDecimal.ZERO); + act.setNotPayAmount(BigDecimal.ZERO); + } + + if(act.getReleaseAmount()==null){ + act.setReleaseAmount(BigDecimal.ZERO); + } + + act.setUnCheckAmount(act.getActivityAmount().subtract(act.getCheckedAmount()).subtract(act.getCheckingAmount()).subtract(act.getReleaseAmount())); + act.setUnpayAmount(act.getCheckedAmount().subtract(act.getPayedAmount())); + + return act; + }).collect(Collectors.toList()); + + + BigDecimal activityAmount = returnActDtoList.stream() + .map(BirTbsVtbPayJoinDTO::getActivityAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + BigDecimal checkedAmount = returnActDtoList.stream() + .map(BirTbsVtbPayJoinDTO::getCheckedAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + BigDecimal checkingAmount = returnActDtoList.stream() + .map(BirTbsVtbPayJoinDTO::getCheckingAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + BigDecimal releaseAmount = returnActDtoList.stream() + .map(BirTbsVtbPayJoinDTO::getReleaseAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + BigDecimal unCheckAmount = returnActDtoList.stream() + .map(BirTbsVtbPayJoinDTO::getUnCheckAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + BigDecimal payedAmount = returnActDtoList.stream() + .map(BirTbsVtbPayJoinDTO::getPayedAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + BigDecimal unpayAmount = returnActDtoList.stream() + .map(BirTbsVtbPayJoinDTO::getUnpayAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + BigDecimal notPayAmount = returnActDtoList.stream() + .map(BirTbsVtbPayJoinDTO::getNotPayAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + sumDto.setActivityAmount(activityAmount); + sumDto.setCheckedAmount(checkedAmount); + sumDto.setCheckingAmount(checkingAmount); + sumDto.setReleaseAmount(releaseAmount); + sumDto.setUnCheckAmount(unCheckAmount); + sumDto.setPayedAmount(payedAmount); + sumDto.setUnpayAmount(unpayAmount); + sumDto.setNotPayAmount(notPayAmount); + + BigDecimal vtbAmount = dtoList.stream().filter(a->a.getVtbAmount()!=null) + .map(BirTbsVtbPayJoinDTO::getVtbAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + BigDecimal payAmount = dtoList.stream().filter(a->a.getPayAmount()!=null) + .map(BirTbsVtbPayJoinDTO::getPayAmount) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + sumDto.setVtbAmount(vtbAmount); + sumDto.setPayAmount(payAmount); + + return sumDto; } @Override diff --git a/src/main/resources/mapper/bir/BirTbsVtbPayJoinMapper.xml b/src/main/resources/mapper/bir/BirTbsVtbPayJoinMapper.xml index f1a9c39e..29b9ddd5 100644 --- a/src/main/resources/mapper/bir/BirTbsVtbPayJoinMapper.xml +++ b/src/main/resources/mapper/bir/BirTbsVtbPayJoinMapper.xml @@ -69,6 +69,7 @@ act.release_amount as release_amount, v.verification_code as vtb_code, + v.verification_state as vtb_state, v.user_code as check_user_code, v.user_name as check_user_name, v.amount as vtb_amount, @@ -86,6 +87,8 @@ WHERE 1=1 and a.del_flag = 0 + and a.charge_state in (2,3) + and v.verification_state in (0,1) and (act.del_flag = 0 or act.id is null ) and (v.del_flag = 0 or v.id is null ) and (p.del_flag = 0 or p.id is null )