Browse Source

修复提交时可用费用异常

contract
Yen 2 years ago
parent
commit
18fc9129d8
  1. 1
      src/main/java/com/qs/serve/modules/qms/controller/QmsCategoryController.java
  2. 13
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java
  3. 4
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  4. 33
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java
  5. 12
      src/main/resources/mapper/tbs/TbsScheduleItemBudgetMapper.xml

1
src/main/java/com/qs/serve/modules/qms/controller/QmsCategoryController.java

@ -20,6 +20,7 @@ import java.util.List;
/**
* 问卷分类
* @module 问卷
* @author YenHex
* @since 2022-09-13
*/

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

@ -217,8 +217,19 @@ public class TbsBudgetApplicationService {
budgetList = new ArrayList<>();
}
costSortWrapper.initializeBudget(budgetList);
List<TbsBudget> noConditionBudgetList = new ArrayList<>();
//预算移除多余的项
List<TbsScheduleItemBudget> scheduleItemListTmp = new ArrayList<>();
for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemList) {
for (TbsBudget budget : budgetList) {
if(scheduleItemBudget.getBudgetId().equals(budget.getId())){
scheduleItemListTmp.add(scheduleItemBudget);
break;
}
}
}
scheduleItemList = scheduleItemListTmp;
//加载预算条件和关联预算匹配,返回是否由无条件预算
List<TbsBudget> noConditionBudgetList = new ArrayList<>();
boolean budgetNoCondition = this.loadConditionByBudgetsAndMatch(budgetList, noConditionBudgetList);
//预算条件需包含活动条件, Map结构:活动id->满足的预算id列表
Map<Long,List<Long>> activityAllowBudgetIdMap = this.buildActivityBudgetMap(activityList, budgetList, noConditionBudgetList);

4
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -318,10 +318,10 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
for (TbsScheduleItemBudget itemBudget : tbsScheduleItemBudgets) {
if(itemBudget.getBudgetId().equals(budget.getId())){
if(itemBudget.getBudgetAmount()!=null){
totalBudgetAmount.add(itemBudget.getBudgetAmount());
totalBudgetAmount = totalBudgetAmount.add(itemBudget.getBudgetAmount());
}
if(itemBudget.getPreDispatchAmount()!=null){
totalBudgetAmount.add(itemBudget.getPreDispatchAmount());
totalPreDispatchAmount = totalBudgetAmount.add(itemBudget.getPreDispatchAmount());
}
}
}

33
src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java

@ -415,16 +415,33 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ
LambdaQueryWrapper<TbsBudget> budgetLqw = new LambdaQueryWrapper<>();
budgetLqw.in(TbsBudget::getId,budgetIds);
//默认为随货折让(FYMC05)
//budgetLqw.eq(TbsBudget::getSubjectCode,"FYMC05");
budgetLqw.and(
qw->qw.in(TbsBudget::getSubjectCode,"FYMC05")
.or()
.eq(TbsBudget::getSubjectId,0)
);
budgetLqw.in(TbsBudget::getCenterId,centerIds);
budgetLqw.eq(TbsBudget::getBudgetState,1);
budgetList = tbsBudgetMapper.selectList(budgetLqw);
}else {
budgetList = new ArrayList<>();
}
//初始化预算
sortWrapper.initializeBudget(budgetList);
List<TbsBudget> noConditionBudgetList = new ArrayList<>();
//预算移除多余的项
List<TbsScheduleItemBudget> scheduleItemListTmp = new ArrayList<>();
for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemList) {
for (TbsBudget budget : budgetList) {
if(scheduleItemBudget.getBudgetId().equals(budget.getId())){
scheduleItemListTmp.add(scheduleItemBudget);
break;
}
}
}
scheduleItemList = scheduleItemListTmp;
//加载预算条件和关联预算匹配,返回是否由无条件预算
List<TbsBudget> noConditionBudgetList = new ArrayList<>();
boolean budgetNoCondition = budgetApplicationService.loadConditionByBudgetsAndMatch(budgetList, noConditionBudgetList);
//预算条件需包含活动条件, Map结构:政策id->满足的预算id列表
Map<Long,List<Long>> policyAllowBudgetIdMap = this.buildPolicyBudgetMap(policyItemList, budgetList, noConditionBudgetList,sortWrapper);
@ -455,7 +472,7 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ
}
//统计所有占用预算金额
Map<Long, BigDecimal> budgetItemAmountMap = new HashMap<>(scheduleItemList.size());
Map<Long, BigDecimal> budgetItemAmountMap = new HashMap<>();
List<Long> budgetIdsFromScheduleItemList = scheduleItemList.stream().map(TbsScheduleItemBudget::getBudgetId).distinct().collect(Collectors.toList());
List<Long> scheduleItemIdsFromScheduleItemList = scheduleItemList.stream().map(TbsScheduleItemBudget::getScheduleItemId).distinct().collect(Collectors.toList());
if(scheduleItemIdsFromScheduleItemList.size()>0&&budgetIdsFromScheduleItemList.size()>0){
@ -463,7 +480,8 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ
for (TbsScheduleItemBudget itemBudget : scheduleItemList) {
boolean isNotMatch = true;
for (TbsBudgetLogPreAmount logPreAmount : budgetLogPreAmounts) {
if(itemBudget.getBudgetId().equals(logPreAmount.getBudgetId())&&itemBudget.getScheduleItemId().equals(logPreAmount.getScheduleItemId())){
if(itemBudget.getBudgetId().equals(logPreAmount.getBudgetId())
&&itemBudget.getScheduleItemId().equals(logPreAmount.getScheduleItemId())){
BigDecimal budgetItemAmount = logPreAmount.getAmount();
isNotMatch = false;
//因为已使用的预算费用为负数,需去相反数
@ -652,9 +670,10 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ
!budget.getCenterType().equals(centerType) ){
continue;
}
if(!subjectId.equals(budget.getSubjectId())&&!budget.getSubjectId().equals(0L)){
continue;
}
//TODO dev
// if(!subjectId.equals(budget.getSubjectId())&&!budget.getSubjectId().equals(0L)){
// continue;
// }
List<TbsScheduleItemBudget> scheduleItemBudgets = policyItem.getScheduleItemBudgetList();
for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemBudgets) {
if(scheduleItemBudget.getBudgetId().equals(budget.getId())){

12
src/main/resources/mapper/tbs/TbsScheduleItemBudgetMapper.xml

@ -57,7 +57,7 @@
<foreach collection="sibIdList" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
and `tbs_cost_apply`.id != #{applyId}
and (`tbs_cost_apply`.id != #{applyId} or `tbs_cost_apply`.id is not null)
group by `tbs_budget_cost_item`.schedule_item_id
</select>
@ -86,8 +86,8 @@
<foreach collection="scheduleItemIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
AND `tbs_cost_apply`.id != #{applyId}
AND opt_type != 0
AND (`tbs_cost_apply`.id != #{applyId} or `tbs_cost_apply`.id is null)
AND opt_type in (1,4,5,6,11,12,13,14,15)
group by `tbs_budget_log`.budget_id,`tbs_budget_log`.schedule_item_id
</select>
@ -105,7 +105,7 @@
<foreach collection="sibIdList" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
and `tzc_policy`.id !=#{policyId}
and (`tzc_policy`.id !=#{policyId} or `tzc_policy`.id is null)
group by `tbs_budget_cost_item_policy`.schedule_item_id
</select>
@ -130,8 +130,8 @@
<foreach collection="scheduleItemIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
AND `tzc_policy`.id != #{policyId}
AND opt_type != 0
AND (`tzc_policy`.id != #{policyId} or `tzc_policy`.id is null)
AND opt_type in (1,4,5,6,11,12,13,14,15)
group by `tbs_budget_log`.budget_id,`tbs_budget_log`.schedule_item_id
</select>

Loading…
Cancel
Save