|
@@ -89,7 +89,7 @@ public class WorkbenchServiceImpl implements IWorkbenchService {
|
|
|
long newMonth = customerInfoMapper.selectCount(new LambdaQueryWrapper<CustomerInfo>()
|
|
long newMonth = customerInfoMapper.selectCount(new LambdaQueryWrapper<CustomerInfo>()
|
|
|
.ge(CustomerInfo::getCreateTime, monthStart).eq(CustomerInfo::getDelFlag, "0"));
|
|
.ge(CustomerInfo::getCreateTime, monthStart).eq(CustomerInfo::getDelFlag, "0"));
|
|
|
long dealMonth = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
long dealMonth = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
|
- .eq(SalesResultAnalyze::getDealResult, 1).ge(SalesResultAnalyze::getCreateTime, monthStart).eq(SalesResultAnalyze::getIsDelete, 0));
|
|
|
|
|
|
|
+ .eq(SalesResultAnalyze::getDealResult, 1).ge(SalesResultAnalyze::getCreateTime, monthStart).and(w -> w.eq(SalesResultAnalyze::getIsDelete, 0).or().isNull(SalesResultAnalyze::getIsDelete)));
|
|
|
|
|
|
|
|
// 7天前值
|
|
// 7天前值
|
|
|
long totalOld = countBefore(weekAgo, "0", false);
|
|
long totalOld = countBefore(weekAgo, "0", false);
|
|
@@ -151,11 +151,11 @@ public class WorkbenchServiceImpl implements IWorkbenchService {
|
|
|
win = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
win = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
|
.eq(SalesResultAnalyze::getDealResult, 1)
|
|
.eq(SalesResultAnalyze::getDealResult, 1)
|
|
|
.in(SalesResultAnalyze::getObjectNo, oppNos)
|
|
.in(SalesResultAnalyze::getObjectNo, oppNos)
|
|
|
- .eq(SalesResultAnalyze::getIsDelete, 0));
|
|
|
|
|
|
|
+ .and(w -> w.eq(SalesResultAnalyze::getIsDelete, 0).or().isNull(SalesResultAnalyze::getIsDelete)));
|
|
|
lose = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
lose = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
|
.eq(SalesResultAnalyze::getDealResult, 2)
|
|
.eq(SalesResultAnalyze::getDealResult, 2)
|
|
|
.in(SalesResultAnalyze::getObjectNo, oppNos)
|
|
.in(SalesResultAnalyze::getObjectNo, oppNos)
|
|
|
- .eq(SalesResultAnalyze::getIsDelete, 0));
|
|
|
|
|
|
|
+ .and(w -> w.eq(SalesResultAnalyze::getIsDelete, 0).or().isNull(SalesResultAnalyze::getIsDelete)));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 7天前
|
|
// 7天前
|
|
@@ -167,12 +167,12 @@ public class WorkbenchServiceImpl implements IWorkbenchService {
|
|
|
oldWin = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
oldWin = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
|
.eq(SalesResultAnalyze::getDealResult, 1)
|
|
.eq(SalesResultAnalyze::getDealResult, 1)
|
|
|
.in(SalesResultAnalyze::getObjectNo, oppNos)
|
|
.in(SalesResultAnalyze::getObjectNo, oppNos)
|
|
|
- .eq(SalesResultAnalyze::getIsDelete, 0)
|
|
|
|
|
|
|
+ .and(w -> w.eq(SalesResultAnalyze::getIsDelete, 0).or().isNull(SalesResultAnalyze::getIsDelete))
|
|
|
.le(SalesResultAnalyze::getCreateTime, weekAgo));
|
|
.le(SalesResultAnalyze::getCreateTime, weekAgo));
|
|
|
oldLose = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
oldLose = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
|
.eq(SalesResultAnalyze::getDealResult, 2)
|
|
.eq(SalesResultAnalyze::getDealResult, 2)
|
|
|
.in(SalesResultAnalyze::getObjectNo, oppNos)
|
|
.in(SalesResultAnalyze::getObjectNo, oppNos)
|
|
|
- .eq(SalesResultAnalyze::getIsDelete, 0)
|
|
|
|
|
|
|
+ .and(w -> w.eq(SalesResultAnalyze::getIsDelete, 0).or().isNull(SalesResultAnalyze::getIsDelete))
|
|
|
.le(SalesResultAnalyze::getCreateTime, weekAgo));
|
|
.le(SalesResultAnalyze::getCreateTime, weekAgo));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -219,11 +219,11 @@ public class WorkbenchServiceImpl implements IWorkbenchService {
|
|
|
win = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
win = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
|
.eq(SalesResultAnalyze::getDealResult, 1)
|
|
.eq(SalesResultAnalyze::getDealResult, 1)
|
|
|
.in(SalesResultAnalyze::getObjectNo, selectionNos)
|
|
.in(SalesResultAnalyze::getObjectNo, selectionNos)
|
|
|
- .eq(SalesResultAnalyze::getIsDelete, 0));
|
|
|
|
|
|
|
+ .and(w -> w.eq(SalesResultAnalyze::getIsDelete, 0).or().isNull(SalesResultAnalyze::getIsDelete)));
|
|
|
lose = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
lose = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
|
.eq(SalesResultAnalyze::getDealResult, 2)
|
|
.eq(SalesResultAnalyze::getDealResult, 2)
|
|
|
.in(SalesResultAnalyze::getObjectNo, selectionNos)
|
|
.in(SalesResultAnalyze::getObjectNo, selectionNos)
|
|
|
- .eq(SalesResultAnalyze::getIsDelete, 0));
|
|
|
|
|
|
|
+ .and(w -> w.eq(SalesResultAnalyze::getIsDelete, 0).or().isNull(SalesResultAnalyze::getIsDelete)));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
List<WorkbenchStatVo.StatItem> stats = new ArrayList<>();
|
|
List<WorkbenchStatVo.StatItem> stats = new ArrayList<>();
|
|
@@ -252,12 +252,27 @@ public class WorkbenchServiceImpl implements IWorkbenchService {
|
|
|
private List<WorkbenchStatVo.StatItem> getOpportunityFunnel() {
|
|
private List<WorkbenchStatVo.StatItem> getOpportunityFunnel() {
|
|
|
List<Salesleads> clues = salesleadsMapper.selectList(new LambdaQueryWrapper<Salesleads>().eq(Salesleads::getIzClue, 1).eq(Salesleads::getDelFlag, "0"));
|
|
List<Salesleads> clues = salesleadsMapper.selectList(new LambdaQueryWrapper<Salesleads>().eq(Salesleads::getIzClue, 1).eq(Salesleads::getDelFlag, "0"));
|
|
|
List<Salesleads> opps = salesleadsMapper.selectList(new LambdaQueryWrapper<Salesleads>().eq(Salesleads::getIzClue, 0).eq(Salesleads::getDelFlag, "0"));
|
|
List<Salesleads> opps = salesleadsMapper.selectList(new LambdaQueryWrapper<Salesleads>().eq(Salesleads::getIzClue, 0).eq(Salesleads::getDelFlag, "0"));
|
|
|
- long winCount = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>().eq(SalesResultAnalyze::getDealResult, 1).eq(SalesResultAnalyze::getDataType, 2).eq(SalesResultAnalyze::getIsDelete, 0));
|
|
|
|
|
|
|
+
|
|
|
|
|
+ List<SalesResultAnalyze> wins = salesresultanalyzeMapper.selectList(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
|
|
|
+ .eq(SalesResultAnalyze::getDealResult, 1)
|
|
|
|
|
+ .eq(SalesResultAnalyze::getDataType, 2)
|
|
|
|
|
+ .and(w -> w.eq(SalesResultAnalyze::getIsDelete, 0).or().isNull(SalesResultAnalyze::getIsDelete)));
|
|
|
|
|
+
|
|
|
|
|
+ long winCount = wins.size();
|
|
|
|
|
+ BigDecimal winAmount = BigDecimal.ZERO;
|
|
|
|
|
+
|
|
|
|
|
+ if (!wins.isEmpty()) {
|
|
|
|
|
+ List<String> winNos = wins.stream().map(SalesResultAnalyze::getObjectNo).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
|
|
+ if (!winNos.isEmpty()) {
|
|
|
|
|
+ winAmount = salesleadsMapper.selectList(new LambdaQueryWrapper<Salesleads>().in(Salesleads::getProjectNo, winNos).eq(Salesleads::getDelFlag, "0"))
|
|
|
|
|
+ .stream().map(Salesleads::getProjectBudget).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
List<WorkbenchStatVo.StatItem> stats = new ArrayList<>();
|
|
List<WorkbenchStatVo.StatItem> stats = new ArrayList<>();
|
|
|
stats.add(new WorkbenchStatVo.StatItem("销售线索", clues.stream().map(Salesleads::getProjectBudget).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, BigDecimal.ROUND_HALF_UP).toString(), clues.size() + "个"));
|
|
stats.add(new WorkbenchStatVo.StatItem("销售线索", clues.stream().map(Salesleads::getProjectBudget).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, BigDecimal.ROUND_HALF_UP).toString(), clues.size() + "个"));
|
|
|
stats.add(new WorkbenchStatVo.StatItem("商机", opps.stream().map(Salesleads::getProjectBudget).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, BigDecimal.ROUND_HALF_UP).toString(), opps.size() + "个"));
|
|
stats.add(new WorkbenchStatVo.StatItem("商机", opps.stream().map(Salesleads::getProjectBudget).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, BigDecimal.ROUND_HALF_UP).toString(), opps.size() + "个"));
|
|
|
- stats.add(new WorkbenchStatVo.StatItem("赢单", "0", winCount + "个")); // 赢单金额需关联
|
|
|
|
|
|
|
+ stats.add(new WorkbenchStatVo.StatItem("赢单", winAmount.setScale(0, BigDecimal.ROUND_HALF_UP).toString(), winCount + "个"));
|
|
|
return stats;
|
|
return stats;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -274,7 +289,7 @@ public class WorkbenchServiceImpl implements IWorkbenchService {
|
|
|
|
|
|
|
|
// 已成交客户:在成交结果表中有记录的
|
|
// 已成交客户:在成交结果表中有记录的
|
|
|
long deal = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
long deal = salesresultanalyzeMapper.selectCount(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
|
- .eq(SalesResultAnalyze::getDealResult, 1).eq(SalesResultAnalyze::getIsDelete, 0));
|
|
|
|
|
|
|
+ .eq(SalesResultAnalyze::getDealResult, 1).and(w -> w.eq(SalesResultAnalyze::getIsDelete, 0).or().isNull(SalesResultAnalyze::getIsDelete)));
|
|
|
|
|
|
|
|
List<WorkbenchStatVo.StatItem> stats = new ArrayList<>();
|
|
List<WorkbenchStatVo.StatItem> stats = new ArrayList<>();
|
|
|
stats.add(new WorkbenchStatVo.StatItem("公海客户", String.valueOf(publicPool), "个"));
|
|
stats.add(new WorkbenchStatVo.StatItem("公海客户", String.valueOf(publicPool), "个"));
|
|
@@ -296,7 +311,7 @@ public class WorkbenchServiceImpl implements IWorkbenchService {
|
|
|
List<SalesResultAnalyze> wins = salesresultanalyzeMapper.selectList(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
List<SalesResultAnalyze> wins = salesresultanalyzeMapper.selectList(new LambdaQueryWrapper<SalesResultAnalyze>()
|
|
|
.eq(SalesResultAnalyze::getDealResult, 1)
|
|
.eq(SalesResultAnalyze::getDealResult, 1)
|
|
|
.ge(SalesResultAnalyze::getCreateTime, monthStart)
|
|
.ge(SalesResultAnalyze::getCreateTime, monthStart)
|
|
|
- .eq(SalesResultAnalyze::getIsDelete, 0));
|
|
|
|
|
|
|
+ .and(w -> w.eq(SalesResultAnalyze::getIsDelete, 0).or().isNull(SalesResultAnalyze::getIsDelete)));
|
|
|
|
|
|
|
|
BigDecimal winAmount = BigDecimal.ZERO;
|
|
BigDecimal winAmount = BigDecimal.ZERO;
|
|
|
if (!wins.isEmpty()) {
|
|
if (!wins.isEmpty()) {
|