Browse Source

调整 客户金额 和客户明细帐总帐的导出功能

contract
15989082884@163.com 2 years ago
parent
commit
0d3fc29c88
  1. 1
      src/main/java/com/qs/serve/common/model/consts/SysConfigKey.java
  2. 1
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  3. 2
      src/main/java/com/qs/serve/modules/excel/common/DataSupplierSo.java
  4. 16
      src/main/java/com/qs/serve/modules/excel/controller/DateCheckApplyController.java
  5. 1
      src/main/java/com/qs/serve/modules/excel/entity/DataCheckApplyDetailItem.java
  6. 293
      src/main/java/com/qs/serve/modules/excel/service/impl/DateCheckApplyServiceImpl.java
  7. 93
      src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java
  8. 3
      src/main/java/com/qs/serve/modules/pay/entity/PayPaymentItem.java
  9. 65
      src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsCostApplySumAmountVo.java
  10. 23
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityMapper.java
  11. 27
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostApplySumAmountMapper.java
  12. 6
      src/main/resources/mapper/pay/PayPaymentItemMapper.xml
  13. 158
      src/main/resources/mapper/tbs/TbsCostApplySumAmountMapper.xml

1
src/main/java/com/qs/serve/common/model/consts/SysConfigKey.java

@ -13,4 +13,5 @@ public interface SysConfigKey {
/** 活动预计核销日期 */ /** 活动预计核销日期 */
String ActivityPreCheckDays = "ActivityPreCheckDays"; String ActivityPreCheckDays = "ActivityPreCheckDays";
String DateCheckApplyExcelYear = "DateCheckApplyExcelYear";
} }

1
src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java

@ -106,6 +106,7 @@ public class BmsRegionController {
} }
List<HisUserSupplier> hisUserSuppliers = hisUserSupplierService.selectHisSupplier(null,false); List<HisUserSupplier> hisUserSuppliers = hisUserSupplierService.selectHisSupplier(null,false);
List<Long> supplierIds = hisUserSuppliers.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList()); List<Long> supplierIds = hisUserSuppliers.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList());
supplierIds.add(0L);
List<BmsSupplier> supplierList = bmsSupplierService.listByIds(supplierIds); List<BmsSupplier> supplierList = bmsSupplierService.listByIds(supplierIds);
List<String> firstRegionIds = supplierList.stream().map(a->a.getRegionFirst()).collect(Collectors.toList()); List<String> firstRegionIds = supplierList.stream().map(a->a.getRegionFirst()).collect(Collectors.toList());
List<String> secondRegionIds = supplierList.stream().map(a->a.getRegionSecond()).collect(Collectors.toList()); List<String> secondRegionIds = supplierList.stream().map(a->a.getRegionSecond()).collect(Collectors.toList());

2
src/main/java/com/qs/serve/modules/excel/common/DataSupplierSo.java

@ -29,4 +29,6 @@ public class DataSupplierSo {
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate endDate; private LocalDate endDate;
private Integer saFlag;
} }

16
src/main/java/com/qs/serve/modules/excel/controller/DateCheckApplyController.java

@ -2,13 +2,17 @@ package com.qs.serve.modules.excel.controller;
import com.qs.serve.common.model.annotation.RepeatSubmit; import com.qs.serve.common.model.annotation.RepeatSubmit;
import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.consts.SysConfigKey;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.Assert;
import com.qs.serve.modules.excel.common.DataSupplierSo; import com.qs.serve.modules.excel.common.DataSupplierSo;
import com.qs.serve.modules.excel.entity.DataCheckApplyDetailInfo; import com.qs.serve.modules.excel.entity.DataCheckApplyDetailInfo;
import com.qs.serve.modules.excel.entity.DataCheckApplyMainInfo; import com.qs.serve.modules.excel.entity.DataCheckApplyMainInfo;
import com.qs.serve.modules.excel.service.DateCheckApplyService; import com.qs.serve.modules.excel.service.DateCheckApplyService;
import com.qs.serve.modules.sys.entity.SysConfig;
import com.qs.serve.modules.sys.service.SysConfigService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -29,6 +33,7 @@ import java.time.LocalDate;
public class DateCheckApplyController { public class DateCheckApplyController {
private DateCheckApplyService dateCheckApplyService; private DateCheckApplyService dateCheckApplyService;
private SysConfigService configService;
/** /**
* 汇总账单 * 汇总账单
@ -52,6 +57,17 @@ public class DateCheckApplyController {
@SysLog(module = SystemModule.Verification, title = "客户明细帐", biz = BizType.EXPORT) @SysLog(module = SystemModule.Verification, title = "客户明细帐", biz = BizType.EXPORT)
public R<DataCheckApplyDetailInfo> getItemized(DataSupplierSo param){ public R<DataCheckApplyDetailInfo> getItemized(DataSupplierSo param){
param.setEndDate(LocalDate.now()); param.setEndDate(LocalDate.now());
if(param.getSaFlag().equals(0)){
SysConfig config = configService.getByKey(SysConfigKey.DateCheckApplyExcelYear);
if(config==null){
Assert.throwEx("没有设置全局变量【导出明细时间段】");
}
String year = config.getConfigValue();
Integer yearNum = Integer.parseInt(year)-1;
LocalDate startDate = LocalDate.of(LocalDate.now().getYear()-yearNum,1,1);
param.setStartDate(startDate);
}
DataCheckApplyDetailInfo detailInfo = dateCheckApplyService.getDataCheckApplyDetailInfo(param); DataCheckApplyDetailInfo detailInfo = dateCheckApplyService.getDataCheckApplyDetailInfo(param);
return R.ok(detailInfo); return R.ok(detailInfo);
} }

1
src/main/java/com/qs/serve/modules/excel/entity/DataCheckApplyDetailItem.java

@ -12,6 +12,7 @@ import java.math.BigDecimal;
@Data @Data
public class DataCheckApplyDetailItem { public class DataCheckApplyDetailItem {
private String costApplyId;
/** /**
* 活动编号 * 活动编号
*/ */

293
src/main/java/com/qs/serve/modules/excel/service/impl/DateCheckApplyServiceImpl.java

@ -17,8 +17,10 @@ import com.qs.serve.modules.pay.mapper.PayPaymentItemMapper;
import com.qs.serve.modules.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.entity.vo.TbsCostApplySumAmountVo;
import com.qs.serve.modules.tbs.mapper.TbsActivityMapper; import com.qs.serve.modules.tbs.mapper.TbsActivityMapper;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper; import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper;
import com.qs.serve.modules.tbs.mapper.TbsCostApplySumAmountMapper;
import com.qs.serve.modules.vtb.common.VtbVerificationState; import com.qs.serve.modules.vtb.common.VtbVerificationState;
import com.qs.serve.modules.vtb.entity.VtbVerification; import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper;
@ -29,6 +31,8 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -48,6 +52,7 @@ public class DateCheckApplyServiceImpl implements DateCheckApplyService {
private final PayPaymentItemMapper payPaymentItemMapper; private final PayPaymentItemMapper payPaymentItemMapper;
private final BmsSupplierMapper supplierMapper; private final BmsSupplierMapper supplierMapper;
private final BmsSupplierContactsService supplierContactsService; private final BmsSupplierContactsService supplierContactsService;
private final TbsCostApplySumAmountMapper tbsCostApplySumAmountMapper;
@Override @Override
public DataCheckApplyDetailInfo getDataCheckApplyDetailInfo(DataSupplierSo param) { public DataCheckApplyDetailInfo getDataCheckApplyDetailInfo(DataSupplierSo param) {
@ -76,86 +81,13 @@ public class DateCheckApplyServiceImpl implements DateCheckApplyService {
costApplyLambdaQueryWrapper.in(TbsCostApply::getChargeState,TbsCostApplyState.getPassCode()); costApplyLambdaQueryWrapper.in(TbsCostApply::getChargeState,TbsCostApplyState.getPassCode());
List<TbsCostApply> costApplyList = costApplyMapper.selectList(costApplyLambdaQueryWrapper); List<TbsCostApply> costApplyList = costApplyMapper.selectList(costApplyLambdaQueryWrapper);
LambdaQueryWrapper<TbsActivity> actLqw = new LambdaQueryWrapper<>();
actLqw.in(TbsActivity::getCostApplyId,costApplyList.stream().map(a->a.getId()).collect(Collectors.toList()));
//暂未定义时间区间
List<TbsActivity> activityList = activityMapper.selectList(actLqw);
List<DataCheckApplyDetailItem> detailItemList = new ArrayList<>(); List<DataCheckApplyDetailItem> detailItemList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(activityList)){ if(CollectionUtil.isNotEmpty(costApplyList)){
for (TbsActivity activity : activityList) {
TbsCostApply costApply = costApplyMapper.selectById(activity.getCostApplyId());
DataCheckApplyDetailItem detailItem = new DataCheckApplyDetailItem();
detailItem.setActivityCode(activity.getActivityCode());
if(costApply.getSubmitTime()!=null){
detailItem.setActivityDate(costApply.getSubmitTime().toLocalDate().toString());
}
detailItem.setActivityTheme(activity.getActTitle());
detailItem.setCostApplyAmt(activity.getTotalAmount());
LambdaQueryWrapper<VtbVerification> veriLqw = new LambdaQueryWrapper<>();
veriLqw.select(VtbVerification::getVerificationState,VtbVerification::getAmount);
veriLqw.eq(VtbVerification::getActivityId,activity.getId());
veriLqw.in(VtbVerification::getVerificationState,
VtbVerificationState.Finished.getCode(),
VtbVerificationState.Rollback.getCode(),
VtbVerificationState.Commiting.getCode());
List<VtbVerification> vtbVerificationList = verificationMapper.selectList(veriLqw);
List<VtbVerification> finishedVeriList= vtbVerificationList.stream()
.filter(a->a.getVerificationState().equals(VtbVerificationState.Finished.getCode())).collect(Collectors.toList());
List<VtbVerification> unFinishVeriList= vtbVerificationList.stream()
.filter(a->!a.getVerificationState().equals(VtbVerificationState.Finished.getCode())).collect(Collectors.toList());
BigDecimal checkedAmt = BigDecimal.ZERO;
for (VtbVerification verification : finishedVeriList) {
checkedAmt = checkedAmt.add(verification.getAmount());
}
BigDecimal notCheckAmt = BigDecimal.ZERO;
for (VtbVerification verification : unFinishVeriList) {
notCheckAmt = notCheckAmt.add(verification.getAmount());
}
BigDecimal releaseAmt = activity.getReleaseAmount()==null?BigDecimal.ZERO:activity.getReleaseAmount();
detailItem.setCheckedAmt(checkedAmt);
detailItem.setCheckingAmt(notCheckAmt);
detailItem.setDontCheckAmt(releaseAmt);
BigDecimal notCheckedAmt = activity.getTotalAmount().subtract(detailItem.getCheckedAmt())
.subtract(detailItem.getCheckingAmt())
.subtract(detailItem.getDontCheckAmt());
detailItem.setNotCheckAmt(notCheckedAmt);
if(checkedAmt.compareTo(BigDecimal.ZERO)==0){
detailItem.setPayAmt(BigDecimal.ZERO);
detailItem.setUnPayAmt(BigDecimal.ZERO);
detailItem.setNotPayAmt(BigDecimal.ZERO);
}else {
//已支付
PayPaymentItem payItemQuery = new PayPaymentItem();
payItemQuery.setCancelFlag(0);
payItemQuery.setActivityId(activity.getId());
List<PayPaymentItem> allPayList = payPaymentItemMapper.selectPayPaymentItemList(payItemQuery);
List<PayPaymentItem> payList = allPayList.stream().filter(a->a.getPayType().equals(PaymentType.PAYMENT)).collect(Collectors.toList());
List<PayPaymentItem> unPayList = allPayList.stream().filter(a->a.getPayType().equals(PaymentType.UN_PAYMENT)).collect(Collectors.toList());
//不再支付 List<DataCheckApplyDetailItem> dataCheckApplyDetailItems = tbsCostApplySumAmountMapper.selectDataCheckApplyDetailItem(null,costApplyList.stream().map(a->a.getId()).collect(Collectors.toList()));
BigDecimal notPayAmt = BigDecimal.ZERO;
for (PayPaymentItem paymentItem : unPayList) {
notPayAmt = notPayAmt.add(paymentItem.getItemPayAmount());
}
BigDecimal payAmt = BigDecimal.ZERO;
for (PayPaymentItem paymentItem : payList) {
payAmt = payAmt.add(paymentItem.getItemPayAmount());
}
//未支付
BigDecimal unPayAmt = checkedAmt.subtract(payAmt).subtract(notPayAmt);
detailItem.setPayAmt(payAmt); detailItemList.addAll(dataCheckApplyDetailItems);
detailItem.setUnPayAmt(unPayAmt);
detailItem.setNotPayAmt(notPayAmt);
}
detailItemList.add(detailItem);
}
}else { }else {
DataCheckApplyDetailItem detailItem = new DataCheckApplyDetailItem(); DataCheckApplyDetailItem detailItem = new DataCheckApplyDetailItem();
detailItem.setActivityCode(""); detailItem.setActivityCode("");
@ -171,6 +103,7 @@ public class DateCheckApplyServiceImpl implements DateCheckApplyService {
detailItem.setNotPayAmt(BigDecimal.ZERO); detailItem.setNotPayAmt(BigDecimal.ZERO);
detailItemList.add(detailItem); detailItemList.add(detailItem);
} }
detailInfo.setDetailList(detailItemList); detailInfo.setDetailList(detailItemList);
return detailInfo; return detailInfo;
} }
@ -182,7 +115,7 @@ public class DateCheckApplyServiceImpl implements DateCheckApplyService {
LambdaQueryWrapper<BmsSupplierContacts> conLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsSupplierContacts> conLqw = new LambdaQueryWrapper<>();
conLqw.eq(BmsSupplierContacts::getSupplierId,supplierId); conLqw.eq(BmsSupplierContacts::getSupplierId,supplierId);
BmsSupplierContacts contacts = supplierContactsService.getOne(conLqw,false); BmsSupplierContacts contacts = supplierContactsService.getOne(conLqw,false);
DataCheckApplyMainInfo mainInfo = new DataCheckApplyMainInfo(); DataCheckApplyMainInfo mainInfo = tbsCostApplySumAmountMapper.selectDataCheckApplyMainInfo(param.getSupplierId());
mainInfo.setCusName(supplier.getName()); mainInfo.setCusName(supplier.getName());
mainInfo.setCusAddress(supplier.getAddress()); mainInfo.setCusAddress(supplier.getAddress());
mainInfo.setCusCode(supplier.getCode()); mainInfo.setCusCode(supplier.getCode());
@ -190,108 +123,118 @@ public class DateCheckApplyServiceImpl implements DateCheckApplyService {
mainInfo.setContactUser(contacts.getContactsName()); mainInfo.setContactUser(contacts.getContactsName());
mainInfo.setContactMobile(contacts.getContactsNumber()); mainInfo.setContactMobile(contacts.getContactsNumber());
} }
mainInfo.setStartDate(param.getStartDate()); // mainInfo.setStartDate(param.getStartDate());
mainInfo.setEndDate(param.getEndDate()); mainInfo.setEndDate(param.getEndDate());
LambdaQueryWrapper<TbsCostApply> costApplyLambdaQueryWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<TbsCostApply> costApplyLambdaQueryWrapper = new LambdaQueryWrapper<>();
costApplyLambdaQueryWrapper.eq(TbsCostApply::getSupplierId,supplierId); // costApplyLambdaQueryWrapper.eq(TbsCostApply::getSupplierId,supplierId);
if(param.getStartDate()!=null){ // if(param.getStartDate()!=null){
costApplyLambdaQueryWrapper.ge(TbsCostApply::getSubmitTime,param.getStartDate()); // costApplyLambdaQueryWrapper.ge(TbsCostApply::getSubmitTime,param.getStartDate());
} // }
costApplyLambdaQueryWrapper.le(TbsCostApply::getSubmitTime,param.getEndDate().atTime(23,59,59)); // costApplyLambdaQueryWrapper.le(TbsCostApply::getSubmitTime,param.getEndDate().atTime(23,59,59));
costApplyLambdaQueryWrapper.in(TbsCostApply::getChargeState,TbsCostApplyState.getPassCode()); // costApplyLambdaQueryWrapper.in(TbsCostApply::getChargeState,TbsCostApplyState.getPassCode());
List<TbsCostApply> costApplyList = costApplyMapper.selectList(costApplyLambdaQueryWrapper); // List<TbsCostApply> costApplyList = costApplyMapper.selectList(costApplyLambdaQueryWrapper);
//申请总金额 // List<DataCheckApplyDetailItem> dataCheckApplyDetailItems = tbsCostApplySumAmountMapper.selectDataCheckApplyDetailItem(param.getSupplierId(),null);
BigDecimal totalAmount = activityMapper.sumSupplierActivityCost(supplierId); //
if(totalAmount==null){ // //申请总金额
totalAmount = BigDecimal.ZERO; // BigDecimal totalAmount = null;
} // if(costApplyList!=null && costApplyList.size()>0) {
mainInfo.setCostApplyAmt(totalAmount); // activityMapper.sumSupplierActivityCost(supplierId, costApplyList.stream().map(a -> a.getId()).collect(Collectors.toList()));
if(totalAmount.compareTo(BigDecimal.ZERO)==0){ // }
mainInfo.setCostApplyAmt(totalAmount); // if(totalAmount==null){
mainInfo.setCheckedAmt(totalAmount); // totalAmount = BigDecimal.ZERO;
mainInfo.setCheckingAmt(totalAmount); // }
mainInfo.setNotCheckAmt(totalAmount); // mainInfo.setCostApplyAmt(totalAmount);
mainInfo.setDontCheckAmt(totalAmount); // if(totalAmount.compareTo(BigDecimal.ZERO)==0){
mainInfo.setPayAmt(totalAmount); // mainInfo.setCostApplyAmt(totalAmount);
mainInfo.setUnPayAmt(totalAmount); // mainInfo.setCheckedAmt(totalAmount);
mainInfo.setNotPayAmt(totalAmount); // mainInfo.setCheckingAmt(totalAmount);
}else { // mainInfo.setNotCheckAmt(totalAmount);
LambdaQueryWrapper<VtbVerification> veriLqw = new LambdaQueryWrapper<>(); // mainInfo.setDontCheckAmt(totalAmount);
veriLqw.select(VtbVerification::getVerificationState,VtbVerification::getAmount); // mainInfo.setPayAmt(totalAmount);
veriLqw.eq(VtbVerification::getSupplierId,supplierId); // mainInfo.setUnPayAmt(totalAmount);
veriLqw.in(VtbVerification::getVerificationState, // mainInfo.setNotPayAmt(totalAmount);
VtbVerificationState.Finished.getCode(), // }else {
VtbVerificationState.Rollback.getCode(), // LambdaQueryWrapper<VtbVerification> veriLqw = new LambdaQueryWrapper<>();
VtbVerificationState.Commiting.getCode()); // veriLqw.select(VtbVerification::getVerificationState,VtbVerification::getAmount);
veriLqw.in(VtbVerification::getCostApplyId,costApplyList.stream().map(a->a.getId()).collect(Collectors.toList())); // veriLqw.eq(VtbVerification::getSupplierId,supplierId);
// veriLqw.in(VtbVerification::getVerificationState,
List<VtbVerification> vtbVerificationList = verificationMapper.selectList(veriLqw); // VtbVerificationState.Finished.getCode(),
List<VtbVerification> finishedVeriList= vtbVerificationList.stream() // VtbVerificationState.Rollback.getCode(),
.filter(a->a.getVerificationState().equals(VtbVerificationState.Finished.getCode())).collect(Collectors.toList()); // VtbVerificationState.Commiting.getCode());
List<VtbVerification> unFinishVeriList= vtbVerificationList.stream() // veriLqw.in(VtbVerification::getCostApplyId,costApplyList.stream().map(a->a.getId()).collect(Collectors.toList()));
.filter(a->!a.getVerificationState().equals(VtbVerificationState.Finished.getCode())).collect(Collectors.toList()); //
// List<VtbVerification> vtbVerificationList = verificationMapper.selectList(veriLqw);
BigDecimal checkedAmt = BigDecimal.ZERO; // List<VtbVerification> finishedVeriList= vtbVerificationList.stream()
for (VtbVerification verification : finishedVeriList) { // .filter(a->a.getVerificationState().equals(VtbVerificationState.Finished.getCode())).collect(Collectors.toList());
checkedAmt = checkedAmt.add(verification.getAmount()); // List<VtbVerification> unFinishVeriList= vtbVerificationList.stream()
} // .filter(a->!a.getVerificationState().equals(VtbVerificationState.Finished.getCode())).collect(Collectors.toList());
//
BigDecimal notCheckAmt = BigDecimal.ZERO; // BigDecimal checkedAmt = BigDecimal.ZERO;
for (VtbVerification verification : unFinishVeriList) { // for (VtbVerification verification : finishedVeriList) {
notCheckAmt = notCheckAmt.add(verification.getAmount()); // checkedAmt = checkedAmt.add(verification.getAmount());
} // }
//不再支付统计 //
BigDecimal dontCheckAmt = activityMapper.sumSupplierNotCheckCost(supplierId); // BigDecimal notCheckAmt = BigDecimal.ZERO;
if(dontCheckAmt==null){ // for (VtbVerification verification : unFinishVeriList) {
dontCheckAmt = BigDecimal.ZERO; // notCheckAmt = notCheckAmt.add(verification.getAmount());
} // }
mainInfo.setCheckedAmt(checkedAmt); // //不再支付统计
mainInfo.setCheckingAmt(notCheckAmt); // BigDecimal dontCheckAmt = null;
mainInfo.setDontCheckAmt(dontCheckAmt); // if(costApplyList!=null && costApplyList.size()>0) {
BigDecimal notCheckedAmt = mainInfo.getCostApplyAmt().subtract(mainInfo.getCheckedAmt()) // activityMapper.sumSupplierNotCheckCost(supplierId, costApplyList.stream().map(a -> a.getId()).collect(Collectors.toList()));
.subtract(mainInfo.getCheckingAmt()) // }
.subtract(mainInfo.getDontCheckAmt()); //// BigDecimal dontCheckAmt = activityMapper.sumSupplierNotCheckCost(supplierId);
mainInfo.setNotCheckAmt(notCheckedAmt); // if(dontCheckAmt==null){
// dontCheckAmt = BigDecimal.ZERO;
if(checkedAmt.compareTo(BigDecimal.ZERO)>0){ // }
// mainInfo.setCheckedAmt(checkedAmt);
//已支付 // mainInfo.setCheckingAmt(notCheckAmt);
// mainInfo.setDontCheckAmt(dontCheckAmt);
// BigDecimal notCheckedAmt = mainInfo.getCostApplyAmt().subtract(mainInfo.getCheckedAmt())
// .subtract(mainInfo.getCheckingAmt())
// .subtract(mainInfo.getDontCheckAmt());
// mainInfo.setNotCheckAmt(notCheckedAmt);
//
// if(checkedAmt.compareTo(BigDecimal.ZERO)>0){
//
// //已支付
// PayPaymentItem payItemQuery = new PayPaymentItem(); // PayPaymentItem payItemQuery = new PayPaymentItem();
// payItemQuery.setCancelFlag(0); // payItemQuery.setCancelFlag(0);
// payItemQuery.setSupplierId(Long.parseLong(supplierId)); //// payItemQuery.setSupplierId(Long.parseLong(supplierId));
LambdaQueryWrapper<PayPaymentItem> payLqw = new LambdaQueryWrapper<>(); // payItemQuery.setCostApplyIds(costApplyList.stream().map(a->a.getId()).collect(Collectors.toList()));
payLqw.in(PayPaymentItem::getCostApplyId,costApplyList.stream().map(a->a.getId()).collect(Collectors.toList())); //// LambdaQueryWrapper<PayPaymentItem> payLqw = new LambdaQueryWrapper<>();
payLqw.eq(PayPaymentItem::getCancelFlag,0); //// payLqw.in(PayPaymentItem::getCostApplyId,costApplyList.stream().map(a->a.getId()).collect(Collectors.toList()));
//// payLqw.eq(PayPaymentItem::getCancelFlag,0);
List<PayPaymentItem> allPayList = payPaymentItemMapper.selectList(payLqw); //
List<PayPaymentItem> payList = allPayList.stream().filter(a->a.getPayType().equals(PaymentType.PAYMENT)).collect(Collectors.toList()); // List<PayPaymentItem> allPayList = payPaymentItemMapper.selectPayPaymentItemList(payItemQuery);
List<PayPaymentItem> unPayList = allPayList.stream().filter(a->a.getPayType().equals(PaymentType.UN_PAYMENT)).collect(Collectors.toList()); // List<PayPaymentItem> payList = allPayList.stream().filter(a->a.getPayType().equals(PaymentType.PAYMENT)).collect(Collectors.toList());
// List<PayPaymentItem> unPayList = allPayList.stream().filter(a->a.getPayType().equals(PaymentType.UN_PAYMENT)).collect(Collectors.toList());
//不再支付 //
BigDecimal notPayAmt = BigDecimal.ZERO; // //不再支付
for (PayPaymentItem paymentItem : unPayList) { // BigDecimal notPayAmt = BigDecimal.ZERO;
notPayAmt = notPayAmt.add(paymentItem.getItemPayAmount()); // for (PayPaymentItem paymentItem : unPayList) {
} // notPayAmt = notPayAmt.add(paymentItem.getItemPayAmount());
// }
BigDecimal payAmt = BigDecimal.ZERO; //
for (PayPaymentItem paymentItem : payList) { // BigDecimal payAmt = BigDecimal.ZERO;
payAmt = payAmt.add(paymentItem.getItemPayAmount()); // for (PayPaymentItem paymentItem : payList) {
} // payAmt = payAmt.add(paymentItem.getItemPayAmount());
//未支付 // }
BigDecimal unPayAmt = checkedAmt.subtract(payAmt).subtract(notPayAmt); // //未支付
// BigDecimal unPayAmt = checkedAmt.subtract(payAmt).subtract(notPayAmt);
mainInfo.setPayAmt(payAmt); //
mainInfo.setUnPayAmt(unPayAmt); // mainInfo.setPayAmt(payAmt);
mainInfo.setNotPayAmt(notPayAmt); // mainInfo.setUnPayAmt(unPayAmt);
}else { // mainInfo.setNotPayAmt(notPayAmt);
mainInfo.setPayAmt(BigDecimal.ZERO); // }else {
mainInfo.setUnPayAmt(BigDecimal.ZERO); // mainInfo.setPayAmt(BigDecimal.ZERO);
mainInfo.setNotPayAmt(BigDecimal.ZERO); // mainInfo.setUnPayAmt(BigDecimal.ZERO);
} // mainInfo.setNotPayAmt(BigDecimal.ZERO);
// }
} //
// }
return mainInfo; return mainInfo;
} }
} }

93
src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java

@ -14,6 +14,7 @@ import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.so.BmsSupplierSo; import com.qs.serve.modules.bms.entity.so.BmsSupplierSo;
import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.excel.entity.DataCheckApplyMainInfo;
import com.qs.serve.modules.his.service.HisUserSupplierService; import com.qs.serve.modules.his.service.HisUserSupplierService;
import com.qs.serve.modules.pay.common.PaymentType; import com.qs.serve.modules.pay.common.PaymentType;
import com.qs.serve.modules.pay.entity.PayPaymentItem; import com.qs.serve.modules.pay.entity.PayPaymentItem;
@ -24,6 +25,7 @@ import com.qs.serve.modules.pay.entity.vo.PaySupplierVo;
import com.qs.serve.modules.pay.mapper.PaySupplierMapper; import com.qs.serve.modules.pay.mapper.PaySupplierMapper;
import com.qs.serve.modules.pay.service.PayPaymentItemService; import com.qs.serve.modules.pay.service.PayPaymentItemService;
import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.tbs.mapper.TbsCostApplySumAmountMapper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -37,6 +39,7 @@ import com.qs.serve.modules.pay.service.PayPaymentService;
import javax.validation.Valid; import javax.validation.Valid;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -55,6 +58,7 @@ public class PayPaymentController {
private PayPaymentItemService paymentItemService; private PayPaymentItemService paymentItemService;
private BmsSupplierService bmsSupplierService; private BmsSupplierService bmsSupplierService;
private PaySupplierMapper paySupplierMapper; private PaySupplierMapper paySupplierMapper;
private TbsCostApplySumAmountMapper tbsCostApplySumAmountMapper;
/** /**
* 客户费用列表 * 客户费用列表
@ -75,47 +79,60 @@ public class PayPaymentController {
@NotNull @NotNull
public List<PaySupplierVo> getPaySupplierVos(BmsSupplierSo paramSo, List<BmsSupplier> list) { public List<PaySupplierVo> getPaySupplierVos(BmsSupplierSo paramSo, List<BmsSupplier> list) {
List<String> supplierIds = list.stream().map(BmsSupplier::getId).collect(Collectors.toList()); List<PaySupplierVo> supplierVoList = new ArrayList<>();
List<PaySupplierAmountDto> costAmountList = paySupplierMapper.sumCostAmount(supplierIds, paramSo.getQueryStartTime(), paramSo.getQueryEndTime()); list.forEach(supplier->{
List<PaySupplierAmountDto> payAmountList = paySupplierMapper.sumPayAmount(supplierIds, paramSo.getQueryStartTime(), paramSo.getQueryEndTime()); DataCheckApplyMainInfo mainInfo = tbsCostApplySumAmountMapper.selectDataCheckApplyMainInfo(supplier.getId());
List<PaySupplierAmountDto> unPayAmountList = paySupplierMapper.sumUnPayAmount(supplierIds, paramSo.getQueryStartTime(), paramSo.getQueryEndTime());
List<PaySupplierAmountDto> checkAmountList = paySupplierMapper.sumCheckAmount(supplierIds, paramSo.getQueryStartTime(), paramSo.getQueryEndTime());
List<PaySupplierVo> supplierVoList = list.stream().map(supplier -> {
Long supplierId = Long.parseLong(supplier.getId());
PaySupplierVo supplierVo = new PaySupplierVo(); PaySupplierVo supplierVo = new PaySupplierVo();
supplierVo.setSupplierId(supplierId); supplierVo.setSupplierId(Long.parseLong(supplier.getId()));
supplierVo.setSupplierCode(supplier.getCode()); supplierVo.setSupplierCode(supplier.getCode());
supplierVo.setSupplierName(supplier.getName()); supplierVo.setSupplierName(supplier.getName());
supplierVo.setSumAmountOfPay(BigDecimal.ZERO); supplierVo.setSumAmountOfPay(mainInfo.getPayAmt());
supplierVo.setSumAmountOfCost(BigDecimal.ZERO); supplierVo.setSumAmountOfCost(mainInfo.getCostApplyAmt());
supplierVo.setSumAmountOfCheck(BigDecimal.ZERO); supplierVo.setSumAmountOfCheck(mainInfo.getCheckedAmt());
supplierVo.setSumAmountOfUnPay(BigDecimal.ZERO); supplierVo.setSumAmountOfUnPay(mainInfo.getNotPayAmt());
for (PaySupplierAmountDto amountDto : costAmountList) { supplierVoList.add(supplierVo);
if(amountDto.getSupplierId().equals(supplierId)){ });
supplierVo.setSumAmountOfCost(amountDto.getSumAmount()); // List<String> supplierIds = list.stream().map(BmsSupplier::getId).collect(Collectors.toList());
break; // List<PaySupplierAmountDto> costAmountList = paySupplierMapper.sumCostAmount(supplierIds, paramSo.getQueryStartTime(), paramSo.getQueryEndTime());
} // List<PaySupplierAmountDto> payAmountList = paySupplierMapper.sumPayAmount(supplierIds, paramSo.getQueryStartTime(), paramSo.getQueryEndTime());
} // List<PaySupplierAmountDto> unPayAmountList = paySupplierMapper.sumUnPayAmount(supplierIds, paramSo.getQueryStartTime(), paramSo.getQueryEndTime());
for (PaySupplierAmountDto amountDto : checkAmountList) { // List<PaySupplierAmountDto> checkAmountList = paySupplierMapper.sumCheckAmount(supplierIds, paramSo.getQueryStartTime(), paramSo.getQueryEndTime());
if(amountDto.getSupplierId().equals(supplierId)){ // List<PaySupplierVo> supplierVoList = list.stream().map(supplier -> {
supplierVo.setSumAmountOfCheck(amountDto.getSumAmount()); // Long supplierId = Long.parseLong(supplier.getId());
break; // PaySupplierVo supplierVo = new PaySupplierVo();
} // supplierVo.setSupplierId(supplierId);
} // supplierVo.setSupplierCode(supplier.getCode());
for (PaySupplierAmountDto amountDto : payAmountList) { // supplierVo.setSupplierName(supplier.getName());
if(amountDto.getSupplierId().equals(supplierId)){ // supplierVo.setSumAmountOfPay(BigDecimal.ZERO);
supplierVo.setSumAmountOfPay(amountDto.getSumAmount()); // supplierVo.setSumAmountOfCost(BigDecimal.ZERO);
break; // supplierVo.setSumAmountOfCheck(BigDecimal.ZERO);
} // supplierVo.setSumAmountOfUnPay(BigDecimal.ZERO);
} // for (PaySupplierAmountDto amountDto : costAmountList) {
for (PaySupplierAmountDto amountDto : unPayAmountList) { // if(amountDto.getSupplierId().equals(supplierId)){
if(amountDto.getSupplierId().equals(supplierId)){ // supplierVo.setSumAmountOfCost(amountDto.getSumAmount());
supplierVo.setSumAmountOfUnPay(amountDto.getSumAmount()); // break;
break; // }
} // }
} // for (PaySupplierAmountDto amountDto : checkAmountList) {
return supplierVo; // if(amountDto.getSupplierId().equals(supplierId)){
}).collect(Collectors.toList()); // supplierVo.setSumAmountOfCheck(amountDto.getSumAmount());
// break;
// }
// }
// for (PaySupplierAmountDto amountDto : payAmountList) {
// if(amountDto.getSupplierId().equals(supplierId)){
// supplierVo.setSumAmountOfPay(amountDto.getSumAmount());
// break;
// }
// }
// for (PaySupplierAmountDto amountDto : unPayAmountList) {
// if(amountDto.getSupplierId().equals(supplierId)){
// supplierVo.setSumAmountOfUnPay(amountDto.getSumAmount());
// break;
// }
// }
// return supplierVo;
// }).collect(Collectors.toList());
return supplierVoList; return supplierVoList;
} }

3
src/main/java/com/qs/serve/modules/pay/entity/PayPaymentItem.java

@ -4,6 +4,7 @@ import java.time.LocalDate;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -135,5 +136,7 @@ public class PayPaymentItem implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private Integer cancelFlag; private Integer cancelFlag;
@TableField(exist = false)
private List<Long> costApplyIds;
} }

65
src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsCostApplySumAmountVo.java

@ -0,0 +1,65 @@
package com.qs.serve.modules.tbs.entity.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 费用申请 VO
* @author YenHex
* @since 2022-11-09
*/
@Data
public class TbsCostApplySumAmountVo implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
private Long id;
/**
* 已批准(费用申请)
*/
private BigDecimal costApplyAmt;
/**
* 已核销
*/
private BigDecimal checkedAmt;
/**
* 申请中
*/
private BigDecimal checkingAmt;
/**
* 未申请
*/
private BigDecimal notCheckAmt;
/**
* 不予核销
*/
private BigDecimal dontCheckAmt;
/**
* 已支付
*/
private BigDecimal payAmt;
/**
* 待支付
*/
private BigDecimal unPayAmt;
/**
* 不再支付
*/
private BigDecimal notPayAmt;
}

23
src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityMapper.java

@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* 费用活动 Mapper * 费用活动 Mapper
@ -19,16 +20,30 @@ public interface TbsActivityMapper extends BaseMapper<TbsActivity> {
* @param supplierId * @param supplierId
* @return * @return
*/ */
@Select("select sum(total_amount) from tbs_activity where supplier_id = #{supplierId} and cost_pass_flag = 1") @Select({"<script>" ,
BigDecimal sumSupplierActivityCost(@Param("supplierId")String supplierId); " select id,sum(total_amount) from tbs_activity where supplier_id = #{supplierId} and cost_pass_flag = 1 ",
" and cost_apply_id in ",
" <foreach collection='costApplyIds' item='id' open='(' separator=',' close=')'>",
" #{id} ",
" </foreach> group by id",
"</script>"
})
BigDecimal sumSupplierActivityCost(@Param("supplierId")String supplierId, @Param("costApplyIds") List<Long> costApplyIds);
/** /**
* 不予核销金额 * 不予核销金额
* @param supplierId * @param supplierId
* @return * @return
*/ */
@Select("select sum(release_amount) from tbs_activity where supplier_id = #{supplierId} and cost_pass_flag = 1 and release_flag = 1") @Select({"<script>" ,
BigDecimal sumSupplierNotCheckCost(@Param("supplierId")String supplierId); " select sum(release_amount) from tbs_activity where supplier_id = #{supplierId} and cost_pass_flag = 1 and release_flag = 1 ",
" and cost_apply_id in ",
" <foreach collection='costApplyIds' item='id' open='(' separator=',' close=')'>",
" #{id} ",
" </foreach> ",
"</script>"
})
BigDecimal sumSupplierNotCheckCost(@Param("supplierId")String supplierId, @Param("costApplyIds") List<Long> costApplyIds);
} }

27
src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostApplySumAmountMapper.java

@ -0,0 +1,27 @@
package com.qs.serve.modules.tbs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.excel.entity.DataCheckApplyDetailItem;
import com.qs.serve.modules.excel.entity.DataCheckApplyMainInfo;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.vo.TbsCostApplySumAmountVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.security.core.parameters.P;
import java.math.BigDecimal;
import java.util.List;
/**
* 费用活动 Mapper
* @author YenHex
* @date 2022-11-08
*/
public interface TbsCostApplySumAmountMapper {
List<DataCheckApplyDetailItem> selectDataCheckApplyDetailItem(@Param("supplierId")String supplierId,
@Param("costApplyIds")List<Long> costApplyIds);
DataCheckApplyMainInfo selectDataCheckApplyMainInfo(@Param("supplierId")String supplierId);
}

6
src/main/resources/mapper/pay/PayPaymentItemMapper.xml

@ -79,6 +79,12 @@
<if test="query.delFlag != null and query.delFlag != ''"> and `pay_payment_item`.`del_flag` = #{query.delFlag}</if> <if test="query.delFlag != null and query.delFlag != ''"> and `pay_payment_item`.`del_flag` = #{query.delFlag}</if>
<if test="query.policyItemId != null"> and `pay_payment_item`.`policy_item_id` = #{query.policyItemId}</if> <if test="query.policyItemId != null"> and `pay_payment_item`.`policy_item_id` = #{query.policyItemId}</if>
<if test="query.policyItemCode != null and query.policyItemCode != ''"> and `pay_payment_item`.`policy_item_code` = #{query.policyItemCode}</if> <if test="query.policyItemCode != null and query.policyItemCode != ''"> and `pay_payment_item`.`policy_item_code` = #{query.policyItemCode}</if>
<if test="query.costApplyIds!=null and query.costApplyIds.size > 0">
and `pay_payment_item`.`cost_apply_id` in
<foreach collection="query.costApplyIds" item="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
</where> </where>
</select> </select>

158
src/main/resources/mapper/tbs/TbsCostApplySumAmountMapper.xml

@ -0,0 +1,158 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qs.serve.modules.tbs.mapper.TbsCostApplySumAmountMapper">
<resultMap id="dataCheckApplyDetailItem" type="com.qs.serve.modules.excel.entity.DataCheckApplyDetailItem" >
<result property="costApplyId" column="id"/>
<result property="activityCode" column="activity_code"/>
<result property="activityDate" column="activity_date"/>
<result property="activityTheme" column="activity_theme"/>
<result property="costApplyAmt" column="cost_apply_amt"/>
<result property="checkedAmt" column="checked_amt"/>
<result property="checkingAmt" column="checking_amt"/>
<result property="notCheckAmt" column="not_check_amt"/>
<result property="dontCheckAmt" column="dont_check_amt"/>
<result property="payAmt" column="pay_amt"/>
<result property="unPayAmt" column="not_pay_amt"/>
<result property="notPayAmt" column="un_pay_amt"/>
</resultMap>
<select id="selectDataCheckApplyDetailItem" resultMap="dataCheckApplyDetailItem">
SELECT
c.id AS id,
c.code as activity_code,
DATE_FORMAT(c.submit_time,'%Y%m%d') as activity_date,
c.charge_theme as activity_theme,
IFNULL(activity_totals.cost_apply_amt, 0) AS cost_apply_amt,
IFNULL(verification_totals.checked_amt, 0) AS checked_amt,
IFNULL(verification_totals.checking_amt, 0) AS checking_amt,
IFNULL(activity_totals.dont_check_amt, 0) AS dont_check_amt,
IFNULL(payment_totals.pay_amt, 0) AS pay_amt,
IFNULL(payment_totals.not_pay_amt, 0) AS not_pay_amt,
IFNULL(activity_totals.cost_apply_amt - verification_totals.checked_amt - verification_totals.checking_amt - activity_totals.dont_check_amt,0) as not_check_amt,
IFNULL(verification_totals.checked_amt - payment_totals.pay_amt - payment_totals.not_pay_amt,0) as un_pay_amt
FROM
tbs_cost_apply c
LEFT JOIN (
SELECT
cost_apply_id,
SUM(total_amount) AS cost_apply_amt,
SUM(release_amount) AS dont_check_amt
FROM
tbs_activity
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) activity_totals ON activity_totals.cost_apply_id = c.id
LEFT JOIN (
SELECT
cost_apply_id,
SUM(CASE WHEN verification_state = 1 THEN amount ELSE 0 END) AS checked_amt,
SUM(CASE WHEN verification_state IN (0, 3) THEN amount ELSE 0 END) AS checking_amt
FROM
vtb_verification
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) verification_totals ON verification_totals.cost_apply_id = c.id
LEFT JOIN (
SELECT
cost_apply_id,
SUM(CASE WHEN pay_type = 'pay' THEN item_pay_amount ELSE 0 END) AS pay_amt,
SUM(CASE WHEN pay_type = 'unPay' THEN item_pay_amount ELSE 0 END) AS not_pay_amt
FROM
pay_payment_item
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) payment_totals ON payment_totals.cost_apply_id = c.id
WHERE
c.del_flag = 0
AND c.charge_state IN (2, 3)
<if test="costApplyIds !=null and costApplyIds.size > 0">
and c.id in
<foreach collection="costApplyIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
<if test="supplierId !=null">
AND c.supplier_id = #{supplierId};
</if>
order by c.submit_time
</select>
<resultMap id="dataCheckApplyMainInfo" type="com.qs.serve.modules.excel.entity.DataCheckApplyMainInfo" >
<result property="costApplyId" column="id"/>
<result property="activityCode" column="activity_code"/>
<result property="activityDate" column="activity_date"/>
<result property="activityTheme" column="activity_theme"/>
<result property="costApplyAmt" column="cost_apply_amt"/>
<result property="checkedAmt" column="checked_amt"/>
<result property="checkingAmt" column="checking_amt"/>
<result property="notCheckAmt" column="not_check_amt"/>
<result property="dontCheckAmt" column="dont_check_amt"/>
<result property="payAmt" column="pay_amt"/>
<result property="unPayAmt" column="not_pay_amt"/>
<result property="notPayAmt" column="un_pay_amt"/>
</resultMap>
<select id="selectDataCheckApplyMainInfo" resultMap="dataCheckApplyMainInfo">
SELECT
IFNULL(SUM(activity_totals.cost_apply_amt), 0) AS cost_apply_amt,
IFNULL(SUM(verification_totals.checked_amt), 0) AS checked_amt,
IFNULL(SUM(verification_totals.checking_amt), 0) AS checking_amt,
IFNULL(SUM(activity_totals.dont_check_amt), 0) AS dont_check_amt,
IFNULL(SUM(payment_totals.pay_amt), 0) AS pay_amt,
IFNULL(SUM(payment_totals.not_pay_amt), 0) AS not_pay_amt,
IFNULL(SUM(activity_totals.cost_apply_amt - verification_totals.checked_amt - verification_totals.checking_amt - activity_totals.dont_check_amt),0) as not_check_amt,
IFNULL(SUM(verification_totals.checked_amt - payment_totals.pay_amt - payment_totals.not_pay_amt),0) as un_pay_amt
FROM
tbs_cost_apply c
LEFT JOIN (
SELECT
cost_apply_id,
SUM(total_amount) AS cost_apply_amt,
SUM(release_amount) AS dont_check_amt
FROM
tbs_activity
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) activity_totals ON activity_totals.cost_apply_id = c.id
LEFT JOIN (
SELECT
cost_apply_id,
SUM(CASE WHEN verification_state = 1 THEN amount ELSE 0 END) AS checked_amt,
SUM(CASE WHEN verification_state IN (0, 3) THEN amount ELSE 0 END) AS checking_amt
FROM
vtb_verification
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) verification_totals ON verification_totals.cost_apply_id = c.id
LEFT JOIN (
SELECT
cost_apply_id,
SUM(CASE WHEN pay_type = 'pay' THEN item_pay_amount ELSE 0 END) AS pay_amt,
SUM(CASE WHEN pay_type = 'unPay' THEN item_pay_amount ELSE 0 END) AS not_pay_amt
FROM
pay_payment_item
WHERE
del_flag = 0
GROUP BY
cost_apply_id
) payment_totals ON payment_totals.cost_apply_id = c.id
WHERE
c.del_flag = 0
AND c.charge_state IN (2, 3)
<if test="supplierId !=null">
AND c.supplier_id = #{supplierId};
</if>
</select>
</mapper>
Loading…
Cancel
Save