Browse Source

添加政策到预算日志

contract
Yen 2 years ago
parent
commit
17aadd0238
  1. 19
      src/main/java/com/qs/serve/modules/tbs/common/util/TbsBudgetLogBuildUtil.java
  2. 5
      src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java
  3. 15
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java

19
src/main/java/com/qs/serve/modules/tbs/common/util/TbsBudgetLogBuildUtil.java

@ -8,7 +8,7 @@ import com.qs.serve.modules.tzc.entity.TzcPolicy;
import com.qs.serve.modules.tzc.entity.TzcPolicyItem;
import java.math.BigDecimal;
import java.util.List;
/**
* @author YenHex
* @since 2023/5/25
@ -120,9 +120,7 @@ public class TbsBudgetLogBuildUtil {
budgetLog.setOptUserId(sysUser.getId());
budgetLog.setOptUserCode(sysUser.getCode());
budgetLog.setOptUserName(sysUser.getName());
budgetLog.setAmount(buildAmount(amount,optType));
budgetLog.setScheduleId(item.getScheduleId());
budgetLog.setScheduleItemId(item.getScheduleItemId());
budgetLog.setScheduleItemBudgetId(item.getId());
@ -142,6 +140,21 @@ public class TbsBudgetLogBuildUtil {
budgetLog.setPolicyId(tzcPolicy.getId());
budgetLog.setPolicyCode(tzcPolicy.getPolicyCode());
budgetLog.setPolicyTitle(tzcPolicy.getTitle());
budgetLog.setPolicyItemId(item.getPolicyItemId());
budgetLog.setPolicyItemCode(item.getPolicyItemCode());
List<TbsBudgetCondition> usedConditionList = policyItem.getUsedConditionList();
if(usedConditionList!=null&&usedConditionList.size()>0){
for (TbsBudgetCondition usedCondition : usedConditionList) {
if(usedCondition.getBudgetId().equals(budget.getId())){
budgetLog.setTargetType(usedCondition.getTargetType());
budgetLog.setTargetName(usedCondition.getTargetName());
budgetLog.setTargetCode(usedCondition.getTargetCode());
budgetLog.setTargetLevelPathIds(usedCondition.getTargetLevelPathIds());
budgetLog.setTargetLevelPathNames(usedCondition.getTargetLevelPathNames());
break;
}
}
}
return budgetLog;
}

5
src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java

@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.modules.tbs.entity.TbsBudgetCondition;
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@ -185,6 +186,10 @@ public class TzcPolicyItem implements Serializable {
@TableField(exist = false)
List<TbsScheduleItemBudget> scheduleItemBudgetList;
/** 后端参数,命中预算的条件 */
@TableField(exist = false)
List<TbsBudgetCondition> usedConditionList;
public void initSetNull(){
this.setId(null);
this.setCreateBy(null);

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

@ -143,6 +143,7 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ
public void commitPolicy(Long policyId){
seeYonService.testConnection();
TzcPolicy tzcPolicy = tzcPolicyService.getById(policyId);
Integer tzcPolicyStatus = tzcPolicy.getPolicyStatus();
if(!tzcPolicy.allowEditFlag()){
Assert.throwEx("操作失败,政策状态不支持");
}
@ -211,8 +212,7 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ
tbsBudgetCostItemPolicyService.saveBatch(allBudgetItem);
//保存预算使用日志
List<TbsBudgetLog> budgetLogList = saveBudgetLog(result, sysUser, tzcPolicy, result.getPolicyBudgetMatchList(),result.getPolicyItemList());
if(tzcPolicy.getPolicyStatus().equals(TzcPolicyStatus.Status_0_UnCommit)){
//todo 待测试,没能触发到
if(tzcPolicyStatus.equals(TzcPolicyStatus.Status_0_UnCommit)){
budgetLogService.saveBatch(budgetLogList);
}else {
//排除历史记录
@ -566,7 +566,7 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ
//按品类条件,提取可用预算(列表已按小维度到大维度排列)
List<TzcPolicyGoods> policyGoodsList = tzcPolicyGoodsService.listByItemId(policyItem.getId());
List<String> levelPathIdsList = policyGoodsList.stream().map(TzcPolicyGoods::getTargetLevelPathIds).collect(Collectors.toList());
List<TbsBudget> currentItemBudgetList = this.filterMatchGoodsCondition(budgetList, levelPathIdsList);
List<TbsBudget> currentItemBudgetList = this.filterMatchGoodsCondition(policyItem,budgetList, levelPathIdsList);
//关联无条件预算
currentItemBudgetList.addAll(noConditionBudgetList);
//提取可用预算的考核期
@ -672,12 +672,13 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ
/**
* 按品类条件,提取可用预算
* @param policyItem 用于绑定target信息保存到budeget_log
* @param budgetList 预算(已关联参数_条件列表)
* @param levelPathIdsList
* @return
*/
@NotNull
public List<TbsBudget> filterMatchGoodsCondition(List<TbsBudget> budgetList,List<String> levelPathIdsList) {
public List<TbsBudget> filterMatchGoodsCondition(TzcPolicyItem policyItem,List<TbsBudget> budgetList,List<String> levelPathIdsList) {
List<TbsBudget> currentItemBudgetList = new ArrayList<>();
for (String levelPath : levelPathIdsList) {
Set<String> levelPathSet = new LinkedHashSet<>();
@ -693,6 +694,12 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ
if(budgetCondition.getTargetLevelPathIds().contains(conditionString)){
isMatch = true;
currentItemBudgetList.add(budget);
List<TbsBudgetCondition> usedConditionList = policyItem.getUsedConditionList();
if(usedConditionList==null){
usedConditionList = new ArrayList<>();
}
usedConditionList.add(budgetCondition);
policyItem.setUsedConditionList(usedConditionList);
break;
}
}

Loading…
Cancel
Save