|
|
@@ -24,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.MathContext;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
@@ -65,7 +66,11 @@ public class CorpsDescPartsController extends BladeController {
|
|
|
for (CorpsDescDto corpsDescDto1 : pages.getRecords()) {
|
|
|
Order order = new Order();
|
|
|
order.setCorpId(corpsDescDto1.getId());
|
|
|
- order.setBillType("XS");
|
|
|
+ if (corpsDescDto1.getCorpType().equals("KH")) {
|
|
|
+ order.setBillType("XS");
|
|
|
+ } else {
|
|
|
+ order.setBillType("XS");
|
|
|
+ }
|
|
|
order.setTradeType("YPJ");
|
|
|
order.setStartTime(corpsDescDto.getStartTime());
|
|
|
order.setEndTime(corpsDescDto.getEndTime());
|
|
|
@@ -115,8 +120,11 @@ public class CorpsDescPartsController extends BladeController {
|
|
|
for (CorpsDescDto corpsDescDto1 : corpsDescDtoList) {
|
|
|
Order order = new Order();
|
|
|
order.setCorpId(corpsDescDto1.getId());
|
|
|
- order.setBillType("XS");
|
|
|
- order.setTradeType("JXS");
|
|
|
+ if (corpsDescDto1.getCorpType().equals("KH")) {
|
|
|
+ order.setBillType("XS");
|
|
|
+ } else {
|
|
|
+ order.setBillType("XS");
|
|
|
+ }
|
|
|
order.setStartTime(corpsDescDto.getStartTime());
|
|
|
order.setEndTime(corpsDescDto.getEndTime());
|
|
|
List<Order> orderList = orderDescClient.getByBillNo(order);
|
|
|
@@ -129,15 +137,6 @@ public class CorpsDescPartsController extends BladeController {
|
|
|
settlmentAmount = settlmentAmount.add(orderList.stream().map(Order::getSettlmentAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
//预(收)付款
|
|
|
advancePayment = advancePayment.add(orderList.stream().map(Order::getAdvancePayment).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- } else {
|
|
|
- //未收账款
|
|
|
- corpsDescDto1.setBalanceAmount(new BigDecimal(0));
|
|
|
- //应收账款
|
|
|
- corpsDescDto1.setDebitAmount(new BigDecimal(0));
|
|
|
- //已收账款
|
|
|
- corpsDescDto1.setSettlmentAmount(new BigDecimal(0));
|
|
|
- //预(收)付款
|
|
|
- corpsDescDto1.setAdvancePayment(new BigDecimal(0));
|
|
|
}
|
|
|
}
|
|
|
//未收账款
|
|
|
@@ -198,17 +197,51 @@ public class CorpsDescPartsController extends BladeController {
|
|
|
public R<Map<String, Object>> corpAnalysis() {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
//核心客户
|
|
|
- BigDecimal coreCorp = new BigDecimal("0");
|
|
|
+ int coreCorp = 0;
|
|
|
+ //半年内没有销售记录客户
|
|
|
+ int unsales = 0;
|
|
|
//流失率
|
|
|
BigDecimal lossRate = new BigDecimal("0.00");
|
|
|
//平均客单产值
|
|
|
BigDecimal averageAmount = new BigDecimal("0.00");
|
|
|
+ //应收账款
|
|
|
+ BigDecimal debitAmount = new BigDecimal("0.00");
|
|
|
+
|
|
|
LambdaQueryWrapper<CorpsDesc> corpsDescQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
corpsDescQueryWrapper.eq(CorpsDesc::getIsDeleted, 0).eq(CorpsDesc::getTenantId, AuthUtil.getTenantId()).eq(CorpsDesc::getCorpType, "KH");
|
|
|
//客户总数量
|
|
|
- int sumNumber = corpsDescService.count(corpsDescQueryWrapper);
|
|
|
+ List<CorpsDesc> corpsDescList = corpsDescService.list(corpsDescQueryWrapper);
|
|
|
+ for (CorpsDesc corpsDesc : corpsDescList) {
|
|
|
+ Order order = new Order();
|
|
|
+ order.setCorpId(corpsDesc.getId());
|
|
|
+ order.setBillType("XS");
|
|
|
+ order.setTradeType("JXS");
|
|
|
+ order.setCorpType("1");
|
|
|
+ int count = orderDescClient.corpAnalysis(order);
|
|
|
+ if (count == 0 ){
|
|
|
+ unsales ++;
|
|
|
+ }
|
|
|
+ order.setCorpType("2");
|
|
|
+ int count1 = orderDescClient.corpAnalysis(order);
|
|
|
+ if (count1 > 0 ){
|
|
|
+ coreCorp ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (unsales > 0){
|
|
|
+ lossRate = lossRate.add(new BigDecimal(unsales).divide(new BigDecimal(corpsDescList.size()),MathContext.DECIMAL32));
|
|
|
+ }
|
|
|
+ Order order = new Order();
|
|
|
+ order.setBillType("XS");
|
|
|
+ order.setTradeType("JXS");
|
|
|
+ List<Order> orderList = orderDescClient.getByBillNo(order);
|
|
|
+ if (ObjectUtils.isNotNull(orderList)) {
|
|
|
+ //应收账款
|
|
|
+ debitAmount = debitAmount.add(orderList.stream().map(Order::getDebitAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ }
|
|
|
+ //平均客单产值
|
|
|
+ averageAmount = averageAmount.add(debitAmount.divide(new BigDecimal(corpsDescList.size()), MathContext.DECIMAL32));
|
|
|
|
|
|
- map.put("sumNumber", sumNumber);
|
|
|
+ map.put("sumNumber", corpsDescList.size());
|
|
|
map.put("coreCorp", coreCorp);
|
|
|
map.put("lossRate", lossRate);
|
|
|
map.put("averageAmount", averageAmount);
|