|
@@ -79,6 +79,8 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
private BusinessOpportunityService businessOpportunityService;
|
|
|
@Resource
|
|
|
private ContactsService contactsService;
|
|
|
+ @Resource
|
|
|
+ private ClueMapper clueMapper;
|
|
|
@Value(value = "${upload.path}")
|
|
|
private String path;
|
|
|
|
|
@@ -424,6 +426,8 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
LambdaQueryWrapper<BusinessOpportunity> businessOpportunityLambdaQueryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
LambdaQueryWrapper<SalesOrder> salesOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
LambdaQueryWrapper<SalesOrder> salesOrderLambdaQueryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+ LambdaQueryWrapper<Clue> clueLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ LambdaQueryWrapper<Clue> clueLambdaQueryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
User user = userMapper.selectById(request.getHeader("token"));
|
|
|
List<Department> allDeptList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, user.getCompanyId()));
|
|
|
if(!StringUtils.isEmpty(startDate)&&!StringUtils.isEmpty(endDate)){
|
|
@@ -431,6 +435,7 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
contactsLambdaQueryWrapper.between(Contacts::getCreateTime,startDate,endDate);
|
|
|
businessOpportunityLambdaQueryWrapper.between(BusinessOpportunity::getCreateTime,startDate,endDate);
|
|
|
salesOrderLambdaQueryWrapper.between(SalesOrder::getCreateTime,startDate,endDate);
|
|
|
+ clueLambdaQueryWrapper.between(Clue::getCreateTime,startDate,endDate);
|
|
|
}
|
|
|
if(dateType!=null){
|
|
|
switch (dateType){
|
|
@@ -447,6 +452,8 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
businessOpportunityLambdaQueryWrapper1.between(BusinessOpportunity::getCreateTime,dateStartOfMonth.minusMonths(1),dateEndOfMonth.minusMonths(1));
|
|
|
salesOrderLambdaQueryWrapper.between(SalesOrder::getCreateTime,dateStartOfMonth,dateEndOfMonth);
|
|
|
salesOrderLambdaQueryWrapper1.between(SalesOrder::getCreateTime,dateStartOfMonth.minusMonths(1),dateEndOfMonth.minusMonths(1));
|
|
|
+ clueLambdaQueryWrapper.between(Clue::getCreateTime,dateStartOfMonth,dateEndOfMonth);
|
|
|
+ clueLambdaQueryWrapper1.between(Clue::getCreateTime,dateStartOfMonth.minusMonths(1),dateEndOfMonth.minusMonths(1));
|
|
|
break;
|
|
|
case 1:
|
|
|
//本周
|
|
@@ -461,6 +468,8 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
businessOpportunityLambdaQueryWrapper1.between(BusinessOpportunity::getCreateTime,dateStartOfWeek.minusWeeks(1),dateEndOfWeek.minusWeeks(1));
|
|
|
salesOrderLambdaQueryWrapper.between(SalesOrder::getCreateTime,dateStartOfWeek,dateEndOfWeek);
|
|
|
salesOrderLambdaQueryWrapper1.between(SalesOrder::getCreateTime,dateStartOfWeek.minusWeeks(1),dateEndOfWeek.minusWeeks(1));
|
|
|
+ clueLambdaQueryWrapper.between(Clue::getCreateTime,dateStartOfWeek,dateEndOfWeek);
|
|
|
+ clueLambdaQueryWrapper1.between(Clue::getCreateTime,dateStartOfWeek.minusWeeks(1),dateEndOfWeek.minusWeeks(1));
|
|
|
break;
|
|
|
case 2:
|
|
|
//本年
|
|
@@ -475,6 +484,8 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
businessOpportunityLambdaQueryWrapper1.between(BusinessOpportunity::getCreateTime,dateStartOfYear.minusYears(1),dateEndOfYear.minusYears(1));
|
|
|
salesOrderLambdaQueryWrapper.between(SalesOrder::getCreateTime,dateStartOfYear,dateEndOfYear);
|
|
|
salesOrderLambdaQueryWrapper1.between(SalesOrder::getCreateTime,dateStartOfYear.minusYears(1),dateEndOfYear.minusYears(1));
|
|
|
+ clueLambdaQueryWrapper.between(Clue::getCreateTime,dateStartOfYear,dateEndOfYear);
|
|
|
+ clueLambdaQueryWrapper1.between(Clue::getCreateTime,dateStartOfYear.minusYears(1),dateEndOfYear.minusYears(1));
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -486,11 +497,13 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
contactsLambdaQueryWrapper.eq(Contacts::getCreatorId,user.getId());
|
|
|
businessOpportunityLambdaQueryWrapper.eq(BusinessOpportunity::getCreatorId,user.getId());
|
|
|
salesOrderLambdaQueryWrapper.eq(SalesOrder::getCreatorId,user.getId());
|
|
|
+ clueLambdaQueryWrapper.eq(Clue::getCreateId,user.getId());
|
|
|
|
|
|
customLambdaQueryWrapper1.eq(Custom::getCreatorId,user.getId());
|
|
|
contactsLambdaQueryWrapper1.eq(Contacts::getCreatorId,user.getId());
|
|
|
businessOpportunityLambdaQueryWrapper1.eq(BusinessOpportunity::getCreatorId,user.getId());
|
|
|
salesOrderLambdaQueryWrapper1.eq(SalesOrder::getCreatorId,user.getId());
|
|
|
+ clueLambdaQueryWrapper1.eq(Clue::getCreateId,user.getId());
|
|
|
break;
|
|
|
case 1:
|
|
|
//本人及下属
|
|
@@ -504,11 +517,13 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
contactsLambdaQueryWrapper.in(Contacts::getCreatorId,userIds);
|
|
|
businessOpportunityLambdaQueryWrapper.in(BusinessOpportunity::getCreatorId,userIds);
|
|
|
salesOrderLambdaQueryWrapper.in(SalesOrder::getCreatorId,userIds);
|
|
|
+ clueLambdaQueryWrapper.in(Clue::getCreateId,userIds);
|
|
|
|
|
|
customLambdaQueryWrapper1.in(Custom::getCreatorId,userIds);
|
|
|
contactsLambdaQueryWrapper1.in(Contacts::getCreatorId,userIds);
|
|
|
businessOpportunityLambdaQueryWrapper1.in(BusinessOpportunity::getCreatorId,userIds);
|
|
|
salesOrderLambdaQueryWrapper1.in(SalesOrder::getCreatorId,userIds);
|
|
|
+ clueLambdaQueryWrapper1.in(Clue::getCreateId,userIds);
|
|
|
break;
|
|
|
case 2:
|
|
|
//仅本部门
|
|
@@ -520,15 +535,16 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
contactsLambdaQueryWrapper.in(Contacts::getCreatorId,targetUserIds);
|
|
|
businessOpportunityLambdaQueryWrapper.in(BusinessOpportunity::getCreatorId,targetUserIds);
|
|
|
salesOrderLambdaQueryWrapper.in(SalesOrder::getCreatorId,targetUserIds);
|
|
|
+ clueLambdaQueryWrapper.in(Clue::getCreateId,targetUserIds);
|
|
|
|
|
|
customLambdaQueryWrapper1.in(Custom::getCreatorId,targetUserIds);
|
|
|
contactsLambdaQueryWrapper1.in(Contacts::getCreatorId,targetUserIds);
|
|
|
businessOpportunityLambdaQueryWrapper1.in(BusinessOpportunity::getCreatorId,targetUserIds);
|
|
|
salesOrderLambdaQueryWrapper1.in(SalesOrder::getCreatorId,targetUserIds);
|
|
|
+ clueLambdaQueryWrapper1.in(Clue::getCreateId,targetUserIds);
|
|
|
break;
|
|
|
case 3:
|
|
|
//本部门及下属部门
|
|
|
- //仅本部门
|
|
|
Integer targetDeptId1 = user.getDepartmentId();
|
|
|
List<Integer> branchDepartment = getBranchDepartment(targetDeptId1, allDeptList);
|
|
|
List<User> users1 = userMapper.selectList(new LambdaQueryWrapper<User>().in(User::getDepartmentId, branchDepartment));
|
|
@@ -538,11 +554,13 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
contactsLambdaQueryWrapper.in(Contacts::getCreatorId,targetUserIds1);
|
|
|
businessOpportunityLambdaQueryWrapper.in(BusinessOpportunity::getCreatorId,targetUserIds1);
|
|
|
salesOrderLambdaQueryWrapper.in(SalesOrder::getCreatorId,targetUserIds1);
|
|
|
+ clueLambdaQueryWrapper.in(Clue::getCreateId,targetUserIds1);
|
|
|
|
|
|
customLambdaQueryWrapper1.in(Custom::getCreatorId,targetUserIds1);
|
|
|
contactsLambdaQueryWrapper1.in(Contacts::getCreatorId,targetUserIds1);
|
|
|
businessOpportunityLambdaQueryWrapper1.in(BusinessOpportunity::getCreatorId,targetUserIds1);
|
|
|
salesOrderLambdaQueryWrapper1.in(SalesOrder::getCreatorId,targetUserIds1);
|
|
|
+ clueLambdaQueryWrapper1.in(Clue::getCreateId,targetUserIds1);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -552,11 +570,13 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
int contactsCount = contactsService.count(contactsLambdaQueryWrapper);
|
|
|
int businessOpportunityCount = businessOpportunityService.count(businessOpportunityLambdaQueryWrapper);
|
|
|
Integer salesOrderCount = salesOrderMapper.selectCount(salesOrderLambdaQueryWrapper);
|
|
|
+ Integer clueCount = clueMapper.selectCount(clueLambdaQueryWrapper);
|
|
|
|
|
|
int customCount1 = customService.count(customLambdaQueryWrapper1);
|
|
|
int contactsCount1 = contactsService.count(contactsLambdaQueryWrapper1);
|
|
|
int businessOpportunityCount1 = businessOpportunityService.count(businessOpportunityLambdaQueryWrapper1);
|
|
|
Integer salesOrderCount1 = salesOrderMapper.selectCount(salesOrderLambdaQueryWrapper1);
|
|
|
+ Integer clueCount1 = clueMapper.selectCount(clueLambdaQueryWrapper1);
|
|
|
Map<String,Object> customMap=new HashMap<>();
|
|
|
customMap.put("customCount",customCount);
|
|
|
customMap.put("customPromote",getPromote(customCount,customCount1));
|
|
@@ -573,10 +593,69 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
salesOrderMap.put("salesOrderCount",salesOrderCount);
|
|
|
salesOrderMap.put("salesOrderPromote",getPromote(salesOrderCount,salesOrderCount1));
|
|
|
resultMap.put("salesOrder",salesOrderMap);
|
|
|
+ Map<String,Object> clueMap=new HashMap<>();
|
|
|
+ clueMap.put("clueCount",clueCount);
|
|
|
+ clueMap.put("cluePromote",getPromote(clueCount,clueCount1));
|
|
|
+ resultMap.put("clue",clueMap);
|
|
|
msg.setData(resultMap);
|
|
|
return msg;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public HttpRespMsg dataSummary(Integer queryType, Integer dateType, String startDate, String endDate) {
|
|
|
+ HttpRespMsg msg=new HttpRespMsg();
|
|
|
+ User user = userMapper.selectById(request.getHeader("token"));
|
|
|
+ Integer companyId =user.getCompanyId();
|
|
|
+ List<Department> allDeptList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, companyId));
|
|
|
+ String userId=null;
|
|
|
+ List<String> targetUserIds=new ArrayList<>();
|
|
|
+ if(queryType!=null){
|
|
|
+ switch (queryType){
|
|
|
+ case 0:
|
|
|
+ //仅本人
|
|
|
+ userId=user.getId();
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ //本人及下属
|
|
|
+ List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getManagerId, user.getId()));
|
|
|
+ List<Integer> deptIds = departmentList.stream().map(Department::getDepartmentId).distinct().collect(Collectors.toList());
|
|
|
+ deptIds.add(-1);
|
|
|
+ List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().in(User::getDepartmentId, deptIds));
|
|
|
+ List<String> userIds = userList.stream().map(User::getId).distinct().collect(Collectors.toList());
|
|
|
+ userIds.add("-1");
|
|
|
+ targetUserIds=userIds;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ //本部门
|
|
|
+ Integer targetDeptId1 = user.getDepartmentId();
|
|
|
+ List<User> users1 = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getDepartmentId, targetDeptId1));
|
|
|
+ List<String> targetUserIds1 = users1.stream().map(User::getId).distinct().collect(Collectors.toList());
|
|
|
+ targetUserIds1.add("-1");
|
|
|
+ targetUserIds=targetUserIds1;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ Integer targetDeptId2 = user.getDepartmentId();
|
|
|
+ List<Integer> branchDepartment = getBranchDepartment(targetDeptId2, allDeptList);
|
|
|
+ List<User> users2 = userMapper.selectList(new LambdaQueryWrapper<User>().in(User::getDepartmentId, branchDepartment));
|
|
|
+ List<String> targetUserIds2 = users2.stream().map(User::getId).distinct().collect(Collectors.toList());
|
|
|
+ targetUserIds2.add("-1");
|
|
|
+ targetUserIds=targetUserIds2;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Map<String, Object> customDataSummary = customService.getDataSummary(companyId, startDate, endDate, userId, targetUserIds);
|
|
|
+ Map<String, Object> businessOpportunityDataSummary =businessOpportunityService.getDataSummary(companyId, startDate, endDate, userId, targetUserIds);
|
|
|
+ Map<String, Object> clueDataSummary =clueMapper.getDataSummary(companyId, startDate, endDate, userId, targetUserIds);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Description:计算同比增长率
|
|
|
+ * @Param: [num, oldNum]
|
|
|
+ * @return: java.lang.String
|
|
|
+ * @Author: yurk
|
|
|
+ * @Date: 2024/5/16
|
|
|
+ */
|
|
|
private String getPromote(int num, int oldNum) {
|
|
|
BigDecimal numBd = new BigDecimal(num);
|
|
|
BigDecimal oldNumBd = new BigDecimal(oldNum);
|
|
@@ -589,7 +668,13 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
|
|
|
return percentInstance.format(numBd.doubleValue());
|
|
|
}
|
|
|
|
|
|
- //递归获取子部门
|
|
|
+ /**
|
|
|
+ * @Description:递归获取部门列表
|
|
|
+ * @Param: [departmentId, departmentList]
|
|
|
+ * @return: java.util.List<java.lang.Integer>
|
|
|
+ * @Author: yurk
|
|
|
+ * @Date: 2024/5/16
|
|
|
+ */
|
|
|
public List<Integer> getBranchDepartment(Integer departmentId, List<Department> departmentList) {
|
|
|
List<Integer> list = new ArrayList<>();
|
|
|
list.add(departmentId);
|