Browse Source

修复预算使用情况统计异常

mssql
Yen 3 years ago
parent
commit
fdf2c34650
  1. 3
      src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterService.java
  2. 26
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java
  3. 7
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterServiceImpl.java

3
src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterService.java

@ -1,6 +1,7 @@
package com.qs.serve.modules.tbs.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivityCenter;
import java.util.List;
@ -14,5 +15,7 @@ public interface TbsActivityCenterService extends IService<TbsActivityCenter> {
List<TbsActivityCenter> listByActivity(Long activityId);
List<TbsActivityCenter> listByCostApplyId(Long costApplyId);
}

26
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java

@ -33,6 +33,7 @@ import java.util.stream.Collectors;
@AllArgsConstructor
public class TbsBudgetApplicationService {
private TbsActivityCenterService tbsActivityCenterService;
private TbsActivityCenterGoodsService tbsActivityCenterGoodsService;
private TbsActivitySubjectService tbsActivitySubjectService;
private TbsScheduleItemBudgetService tbsScheduleItemBudgetService;
@ -173,9 +174,10 @@ public class TbsBudgetApplicationService {
List<TbsBudgetCostItem> hisBudgetCostItemList = tbsBudgetCostItemService.listByScheduleItemBudgetIds(scheduleItemBudgetIds,costApplyId);
Map<Long,List<TbsBudgetCostItem>> hisCostGroupByItemBudget = hisBudgetCostItemList.stream()
.collect(Collectors.groupingBy(TbsBudgetCostItem::getScheduleItemBudgetId));
// 构建预算费用占用明细
//补充添加 科目与成本中心拦截
List<TbsActivityCenterGoods> centerGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApplyId);
//补充添加科目拦截
List<TbsActivityCenter> activityCenterList = tbsActivityCenterService.listByCostApplyId(costApplyId);
List<String> centerIds = activityCenterList.stream().map(TbsActivityCenter::getCenterId).collect(Collectors.toList());
List<Long> subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList());
// 加载所有条件
List<TbsBudget> budgetList;
@ -183,6 +185,7 @@ public class TbsBudgetApplicationService {
LambdaQueryWrapper<TbsBudget> budgetLqw = new LambdaQueryWrapper<>();
budgetLqw.in(TbsBudget::getId,budgetIds);
budgetLqw.in(TbsBudget::getSubjectId,subjectIds);
budgetLqw.in(TbsBudget::getCenterId,centerIds);
budgetLqw.eq(TbsBudget::getBudgetState,1);
budgetList = tbsBudgetMapper.selectList(budgetLqw);
}else {
@ -203,7 +206,7 @@ public class TbsBudgetApplicationService {
final List<TbsActivityCenterGoods> actUnMatchList = new ArrayList<>();
for (TbsActivityCenterGoods activityCostItem : centerGoodsList) {
this.matchActivityMain(activityCostItem,throwEx, overspend, activityList, hisCostGroupByItemBudget, budgetList,
noConditionBudgetList, counterMap, actMatchList, actUnMatchList,activityAllowBudgetIdMap,activitySubjects);
noConditionBudgetList, counterMap, actMatchList, actUnMatchList,activityAllowBudgetIdMap,activitySubjects,activityCenterList);
}
List<TbsBudgetCostItem> budgetMatchList = actMatchList.stream()
.map(TbsActivityCenterGoods::toBudgetCostItem).collect(Collectors.toList());
@ -408,7 +411,8 @@ public class TbsBudgetApplicationService {
final List<TbsActivityCenterGoods> actMatchList,
final List<TbsActivityCenterGoods> actUnMatchList,
final Map<Long,List<Long>> activityAllowBudgetIdMap,
List<TbsActivitySubject> activitySubjects) {
final List<TbsActivitySubject> activitySubjects,
final List<TbsActivityCenter> activityCenterList) {
//过滤满全条件的预算
List<Long> allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId());
List<TbsBudget> budgetList = allBudgetList.stream().filter(obj->allowBudgetIds.contains(obj.getId())).collect(Collectors.toList());
@ -432,8 +436,20 @@ public class TbsBudgetApplicationService {
break;
}
}
//拦截非当前成本中心
String centerId = null;
String centerType = null;
for (TbsActivityCenter activityCenter : activityCenterList) {
if(activity.getId().equals(activityCenter.getActivityId())){
centerId = activityCenter.getCenterId();
centerType = activityCenter.getCenterType();
break;
}
}
for (TbsBudget budget : currentItemBudgetList) {
if(!budget.getSubjectId().equals(subjectId)){
if(!budget.getSubjectId().equals(subjectId) ||
!budget.getCenterId().equals(centerId) ||
!budget.getCenterType().equals(centerType) ){
continue;
}
List<TbsScheduleItemBudget> scheduleItemBudgets = activity.getScheduleItemBudgetList();

7
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterServiceImpl.java

@ -27,5 +27,12 @@ public class TbsActivityCenterServiceImpl extends ServiceImpl<TbsActivityCenterM
lqw.eq(TbsActivityCenter::getActivityId,activityId);
return this.list(lqw);
}
@Override
public List<TbsActivityCenter> listByCostApplyId(Long costApplyId) {
LambdaQueryWrapper<TbsActivityCenter> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsActivityCenter::getCostApplyId,costApplyId);
return this.list(lqw);
}
}

Loading…
Cancel
Save