Browse Source

综合查询调整

v1.0
15989082884@163.com 2 years ago
parent
commit
ef1c93e85c
  1. 12
      src/main/java/com/qs/serve/modules/bir/consts/TbsVtbPayShowType.java
  2. 6
      src/main/java/com/qs/serve/modules/bir/controller/BirTbsVtbPayJoinController.java
  3. 13
      src/main/java/com/qs/serve/modules/bir/entity/so/BirTbsVtbPayJoinSo.java
  4. 2
      src/main/java/com/qs/serve/modules/bir/service/BirTbsVtbPayJoinService.java
  5. 155
      src/main/java/com/qs/serve/modules/bir/service/impl/BirTbsVtbPayJoinServiceImpl.java
  6. 22
      src/main/resources/mapper/bir/BirTbsVtbPayJoinMapper.xml

12
src/main/java/com/qs/serve/modules/bir/consts/TbsVtbPayShowType.java

@ -0,0 +1,12 @@
package com.qs.serve.modules.bir.consts;
/**
* @author YenHex
* @since 2023/10/25
*/
public interface TbsVtbPayShowType {
Integer activity = 1;
Integer activityVtb = 2;
Integer all = 3;
}

6
src/main/java/com/qs/serve/modules/bir/controller/BirTbsVtbPayJoinController.java

@ -47,6 +47,9 @@ public class BirTbsVtbPayJoinController {
@GetMapping("/page") @GetMapping("/page")
public R<Map<String,Object>> page(BirTbsVtbPayJoinSo so){ public R<Map<String,Object>> page(BirTbsVtbPayJoinSo so){
if(so.getShowType()==null){
Assert.throwEx("请选择显示方式!");
}
PageVo<BirTbsVtbPayJoinDTO> page = birTbsVtbPayJoinService.selectBirTbsVtbPayJoinDTO(so,1); PageVo<BirTbsVtbPayJoinDTO> page = birTbsVtbPayJoinService.selectBirTbsVtbPayJoinDTO(so,1);
BirTbsVtbPayJoinDTO sumData = birTbsVtbPayJoinService.getSumData(so); BirTbsVtbPayJoinDTO sumData = birTbsVtbPayJoinService.getSumData(so);
Map<String,Object> returnMap = new HashMap<>(); Map<String,Object> returnMap = new HashMap<>();
@ -59,6 +62,9 @@ public class BirTbsVtbPayJoinController {
@GetMapping("/export") @GetMapping("/export")
public R<Map<String,Object>> export(BirTbsVtbPayJoinSo so){ public R<Map<String,Object>> export(BirTbsVtbPayJoinSo so){
if(so.getShowType()==null){
Assert.throwEx("请选择显示方式!");
}
PageVo<BirTbsVtbPayJoinDTO> page = birTbsVtbPayJoinService.selectBirTbsVtbPayJoinDTO(so,0); PageVo<BirTbsVtbPayJoinDTO> page = birTbsVtbPayJoinService.selectBirTbsVtbPayJoinDTO(so,0);
BirTbsVtbPayJoinDTO sumData = birTbsVtbPayJoinService.getSumData(so); BirTbsVtbPayJoinDTO sumData = birTbsVtbPayJoinService.getSumData(so);
Map<String,Object> returnMap = new HashMap<>(); Map<String,Object> returnMap = new HashMap<>();

13
src/main/java/com/qs/serve/modules/bir/entity/so/BirTbsVtbPayJoinSo.java

@ -118,17 +118,8 @@ public class BirTbsVtbPayJoinSo {
private List<Long> actIds; private List<Long> actIds;
// a.submit_time as submit_time, private Integer showType;
// a.pass_time as pass_time,
//
// act.act_start_date as act_start_date,
// act.act_end_date as act_end_date,
//
// v.create_time as vtb_submit_date,
// v.finished_time as vtb_finish_date,
//
// p.item_pay_amount as pay_amount,
// p.pay_time as pay_date
private String orderProp; private String orderProp;
private String orderType; private String orderType;

2
src/main/java/com/qs/serve/modules/bir/service/BirTbsVtbPayJoinService.java

@ -15,8 +15,6 @@ import java.util.List;
*/ */
public interface BirTbsVtbPayJoinService extends IService<BirTbsVtbPayJoinDTO> { public interface BirTbsVtbPayJoinService extends IService<BirTbsVtbPayJoinDTO> {
List<BirTbsVtbPayJoinDTO> findPage(BirTbsVtbPayJoinSo so);
PageVo<BirTbsVtbPayJoinDTO> selectBirTbsVtbPayJoinDTO(BirTbsVtbPayJoinSo so,Integer searchPage); PageVo<BirTbsVtbPayJoinDTO> selectBirTbsVtbPayJoinDTO(BirTbsVtbPayJoinSo so,Integer searchPage);
BirTbsVtbPayJoinDTO getSumData(BirTbsVtbPayJoinSo so); BirTbsVtbPayJoinDTO getSumData(BirTbsVtbPayJoinSo so);

155
src/main/java/com/qs/serve/modules/bir/service/impl/BirTbsVtbPayJoinServiceImpl.java

@ -6,6 +6,7 @@ import com.qs.serve.common.model.dto.DateSplitDTO;
import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.bir.consts.TbsVtbPayShowType;
import com.qs.serve.modules.bir.entity.BirBaseActivity; import com.qs.serve.modules.bir.entity.BirBaseActivity;
import com.qs.serve.modules.bir.entity.dto.BirPayJoinDTO; import com.qs.serve.modules.bir.entity.dto.BirPayJoinDTO;
import com.qs.serve.modules.bir.entity.dto.BirTbsVtbPayJoinDTO; import com.qs.serve.modules.bir.entity.dto.BirTbsVtbPayJoinDTO;
@ -36,9 +37,12 @@ import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* ROI费率(活动档案) 服务实现类 * ROI费率(活动档案) 服务实现类
@ -125,6 +129,7 @@ public class BirTbsVtbPayJoinServiceImpl extends ServiceImpl<BirTbsVtbPayJoinMap
BirTbsVtbPayJoinDTO sumDto = new BirTbsVtbPayJoinDTO(); BirTbsVtbPayJoinDTO sumDto = new BirTbsVtbPayJoinDTO();
so.setOnlyAct(1); so.setOnlyAct(1);
so.setShowType(0);
List<BirTbsVtbPayJoinDTO> costApplyList = this.baseMapper.selectBirTbsVtbPayJoinDTO(so); List<BirTbsVtbPayJoinDTO> costApplyList = this.baseMapper.selectBirTbsVtbPayJoinDTO(so);
List<Long> actIds = costApplyList.stream().map(a->a.getActivityId()).collect(Collectors.toList()); List<Long> actIds = costApplyList.stream().map(a->a.getActivityId()).collect(Collectors.toList());
if(actIds.size()==0){ if(actIds.size()==0){
@ -138,11 +143,26 @@ public class BirTbsVtbPayJoinServiceImpl extends ServiceImpl<BirTbsVtbPayJoinMap
List<BirTbsVtbPayJoinDTO> sumPayAmountList = actIds.size()>0?this.baseMapper.selectSumPayAmount(actIds):new ArrayList<>(); List<BirTbsVtbPayJoinDTO> sumPayAmountList = actIds.size()>0?this.baseMapper.selectSumPayAmount(actIds):new ArrayList<>();
BigDecimal vtbAmount = sumVtbAmountList.stream().filter(a->a.getCheckedAmount()!=null)
.map(BirTbsVtbPayJoinDTO::getCheckedAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add).add(
sumVtbAmountList.stream().filter(a->a.getCheckingAmount()!=null)
.map(BirTbsVtbPayJoinDTO::getCheckingAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add)
);
BigDecimal payAmount = sumPayAmountList.stream().filter(a->a.getPayedAmount()!=null)
.map(BirTbsVtbPayJoinDTO::getPayedAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
List<BirTbsVtbPayJoinDTO> returnActDtoList = dtoList.stream() List<BirTbsVtbPayJoinDTO> returnActDtoList = dtoList.stream()
.collect(Collectors.groupingBy(BirTbsVtbPayJoinDTO::getActivityId)) .collect(Collectors.toMap(
BirTbsVtbPayJoinDTO::getActivityId,
dto -> dto,
(existing, replacement) -> existing,
LinkedHashMap::new))
.values() .values()
.stream() .stream().map(act->{
.flatMap(List::stream).map(act->{
Optional<BirTbsVtbPayJoinDTO> sumVtbAmountMatch = sumVtbAmountList.stream() Optional<BirTbsVtbPayJoinDTO> sumVtbAmountMatch = sumVtbAmountList.stream()
.filter(a->a.getActivityId().equals(act.getActivityId())) .filter(a->a.getActivityId().equals(act.getActivityId()))
@ -220,13 +240,7 @@ public class BirTbsVtbPayJoinServiceImpl extends ServiceImpl<BirTbsVtbPayJoinMap
sumDto.setUnpayAmount(unpayAmount); sumDto.setUnpayAmount(unpayAmount);
sumDto.setNotPayAmount(notPayAmount); 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.setVtbAmount(vtbAmount);
sumDto.setPayAmount(payAmount); sumDto.setPayAmount(payAmount);
@ -234,128 +248,5 @@ public class BirTbsVtbPayJoinServiceImpl extends ServiceImpl<BirTbsVtbPayJoinMap
return sumDto; return sumDto;
} }
@Override
public List<BirTbsVtbPayJoinDTO> findPage(BirTbsVtbPayJoinSo so) {
List<Long> pay4VtbIds = null;
List<Long> vtb4ActIds = null;
List<Long> act4ApplyIds = null;
List<Long> applyIds = new ArrayList<>();
if(so.getQueryStartPayTime()!=null || so.getQueryEndPayTime()!=null || so.getPayCode()!=null){
LambdaQueryWrapper<PayPayment> lqwPay = new LambdaQueryWrapper<>();
lqwPay.select(PayPayment::getId);
lqwPay.like(PayPayment::getPayCode,so.getPayCode());
lqwPay.ge(PayPayment::getPayTime,so.getQueryStartPayTime());
lqwPay.le(PayPayment::getPayTime,so.getQueryEndPayTime());
List<PayPayment> payPaymentList = payPaymentService.list(lqwPay);
List<Long> payIds = payPaymentList.stream().map(a->a.getId()).collect(Collectors.toList());
LambdaQueryWrapper<PayPaymentItem> lqwPayItem = new LambdaQueryWrapper<>();
lqwPayItem.in(PayPaymentItem::getPaymentId,payIds);
List<PayPaymentItem> payPaymentItemList = payPaymentItemService.list(lqwPayItem);
pay4VtbIds = payPaymentItemList.stream().map(a->a.getVerificationId()).distinct().collect(Collectors.toList());
}
if(so.getVerificationState()!=null || so.getVtbCode()!=null
|| so.getQueryStartCheckTime()!=null || so.getQueryEndCheckTime()!= null
|| so.getQueryStartFinishCheckTime()!=null || so.getQueryEndFinishCheckTime()!=null
|| so.getCheckUserName()!=null || so.getCheckUserCode()!= null){
LambdaQueryWrapper<VtbVerification> lqwVtb = new LambdaQueryWrapper<>();
lqwVtb.eq(VtbVerification::getVerificationState,so.getVerificationState());
lqwVtb.like(VtbVerification::getVerificationCode,so.getVtbCode());
lqwVtb.like(VtbVerification::getUserCode,so.getCheckUserCode());
lqwVtb.like(VtbVerification::getUserName,so.getCheckUserName());
lqwVtb.ge(VtbVerification::getFinishedTime,so.getQueryStartFinishCheckTime());
lqwVtb.le(VtbVerification::getFinishedTime,so.getQueryEndFinishCheckTime());
lqwVtb.ge(VtbVerification::getCreateTime,so.getQueryStartCheckTime());
lqwVtb.le(VtbVerification::getCreateTime,so.getQueryEndCheckTime());
List<VtbVerification> verificationList = verificationService.list(lqwVtb);
List<Long> vtbIds = verificationList.stream().map(a->a.getId()).collect(Collectors.toList());
if(pay4VtbIds!=null){
pay4VtbIds = CollectionUtil.intersection(pay4VtbIds,vtbIds).stream().collect(Collectors.toList());
List<Long> finalPay4VtbIds = pay4VtbIds;
verificationList = verificationList.stream().filter(a-> finalPay4VtbIds.contains(a.getId())).collect(Collectors.toList());
}
vtb4ActIds = verificationList.stream().map(a->a.getActivityId()).distinct().collect(Collectors.toList());
}else {
if(pay4VtbIds!=null){
if(pay4VtbIds.size()>0) {
LambdaQueryWrapper<VtbVerification> lqwVtb = new LambdaQueryWrapper<>();
lqwVtb.in(VtbVerification::getId, pay4VtbIds);
List<VtbVerification> verificationList = verificationService.list(lqwVtb);
vtb4ActIds = verificationList.stream().map(a -> a.getActivityId()).distinct().collect(Collectors.toList());
}else{
vtb4ActIds = new ArrayList<>();
}
}
}
if(so.getActivityTitle()!=null || so.getActivityCode()!=null
|| so.getQueryStartActivityStartTime()!=null || so.getQueryEndActivityStartTime()!=null
|| so.getQueryStartActivityEndTime()!=null || so.getQueryEndActivityEndTime()!=null){
LambdaQueryWrapper<TbsActivity> lqwAct = new LambdaQueryWrapper<>();
lqwAct.like(TbsActivity::getActTitle,so.getActivityTitle());
lqwAct.like(TbsActivity::getActivityCode,so.getActivityCode());
lqwAct.ge(TbsActivity::getActStartDate,so.getQueryStartActivityStartTime());
lqwAct.le(TbsActivity::getActStartDate,so.getQueryEndActivityStartTime());
lqwAct.ge(TbsActivity::getActEndDate,so.getQueryStartActivityEndTime());
lqwAct.le(TbsActivity::getActEndDate,so.getQueryEndActivityEndTime());
List<TbsActivity> activityList = activityService.list(lqwAct);
List<Long> actIds = activityList.stream().map(a->a.getId()).collect(Collectors.toList());
if(vtb4ActIds!=null){
vtb4ActIds = CollectionUtil.intersection(vtb4ActIds,actIds).stream().collect(Collectors.toList());
List<Long> finalVtb4ActIds = vtb4ActIds;
activityList = activityList.stream().filter(a-> finalVtb4ActIds.contains(a.getId())).collect(Collectors.toList());
}
act4ApplyIds = activityList.stream().map(a->a.getCostApplyId()).distinct().collect(Collectors.toList());
}else {
if (vtb4ActIds != null) {
if (vtb4ActIds.size()>0) {
LambdaQueryWrapper<TbsActivity> lqwAct = new LambdaQueryWrapper<>();
lqwAct.in(TbsActivity::getId, vtb4ActIds);
List<TbsActivity> activityList = activityService.list(lqwAct);
act4ApplyIds = activityList.stream().map(a -> a.getCostApplyId()).distinct().collect(Collectors.toList());
}else{
act4ApplyIds= new ArrayList<>();
}
}
}
if(so.getCostApplyCode()!=null || so.getCostTitle()!= null
|| so.getSupplierCode()!=null || so.getSupplierName()!=null
|| so.getUserCode()!=null || so.getUserName()!=null || so.getCostApplyState()!=null
|| so.getQueryStartSubmitTime()!=null || so.getQueryEndSubmitTime()!=null
|| so.getQueryStartFinishTime()!=null || so.getQueryEndFinishTime()!=null){
LambdaQueryWrapper<TbsCostApply> lqwApply = new LambdaQueryWrapper<>();
lqwApply.like(TbsCostApply::getCode,so.getCostApplyCode());
lqwApply.like(TbsCostApply::getChargeTheme,so.getCostTitle());
lqwApply.like(TbsCostApply::getSupplierCode,so.getSupplierCode());
lqwApply.like(TbsCostApply::getSupplierName,so.getSupplierName());
lqwApply.like(TbsCostApply::getUserCode,so.getUserCode());
lqwApply.like(TbsCostApply::getUserName,so.getUserName());
lqwApply.eq(TbsCostApply::getChargeState,so.getCostApplyState());
lqwApply.ge(TbsCostApply::getSubmitTime,so.getQueryStartSubmitTime());
lqwApply.le(TbsCostApply::getSubmitTime,so.getQueryEndSubmitTime());
lqwApply.ge(TbsCostApply::getPassTime,so.getQueryStartFinishTime());
lqwApply.le(TbsCostApply::getPassTime,so.getQueryEndFinishTime());
List<TbsCostApply> costApplyList = costApplyService.list(lqwApply);
applyIds = costApplyList.stream().map(a->a.getId()).collect(Collectors.toList());
if(act4ApplyIds!=null){
act4ApplyIds = CollectionUtil.intersection(act4ApplyIds,applyIds).stream().collect(Collectors.toList());
List<Long> finalAct4ApplyIds = act4ApplyIds;
costApplyList = costApplyList.stream().filter(a-> finalAct4ApplyIds.contains(a.getId())).collect(Collectors.toList());
applyIds = costApplyList.stream().map(a->a.getId()).collect(Collectors.toList());
}
}
PageUtil.startPage();
return new ArrayList<BirTbsVtbPayJoinDTO>();
}
} }

22
src/main/resources/mapper/bir/BirTbsVtbPayJoinMapper.xml

@ -48,8 +48,6 @@
<if test="query.onlyAct == null"> <if test="query.onlyAct == null">
a.id as costApply_id, a.id as costApply_id,
act.id as activity_id, act.id as activity_id,
v.id as vtb_id,
p.id as pay_id,
a.`code` as cost_apply_code, a.`code` as cost_apply_code,
a.charge_theme as cost_title, a.charge_theme as cost_title,
@ -66,19 +64,25 @@
act.act_start_date as act_start_date, act.act_start_date as act_start_date,
act.act_end_date as act_end_date, act.act_end_date as act_end_date,
act.total_amount as activity_amount, act.total_amount as activity_amount,
act.release_amount as release_amount, act.release_amount as release_amount
<if test="query.showType == 0 or query.showType == 2">
,v.id as vtb_id,
v.verification_code as vtb_code, v.verification_code as vtb_code,
v.verification_state as vtb_state, v.verification_state as vtb_state,
v.user_code as check_user_code, v.user_code as check_user_code,
v.user_name as check_user_name, v.user_name as check_user_name,
v.amount as vtb_amount, v.amount as vtb_amount,
v.create_time as vtb_submit_date, v.create_time as vtb_submit_date,
v.finished_time as vtb_finish_date, v.finished_time as vtb_finish_date
</if>
<if test="query.showType == 0">
,p.id as pay_id,
p.item_pay_amount as pay_amount, p.item_pay_amount as pay_amount,
p.pay_time as pay_date p.pay_time as pay_date
</if> </if>
</if>
FROM FROM
tbs_cost_apply a tbs_cost_apply a
LEFT JOIN tbs_activity act ON a.id = act.cost_apply_id LEFT JOIN tbs_activity act ON a.id = act.cost_apply_id
@ -180,10 +184,18 @@
</foreach> </foreach>
</if> </if>
<if test="query.onlyAct != null"> <if test="query.onlyAct != null or query.showType == 1">
group by act.id group by act.id
</if> </if>
<if test="query.showType == 2">
group by
CASE
WHEN v.id IS NULL THEN CONCAT('a-', a.id)
ELSE CONCAT('v-', v.id)
END
</if>
<if test="query.orderProp != null and query.orderType != null"> <if test="query.orderProp != null and query.orderType != null">
order by #{query.orderProp} #{query.orderType} order by #{query.orderProp} #{query.orderType}
</if> </if>

Loading…
Cancel
Save