26-03-13-14:36:火力规则简单实现
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
package com.solution.rule.handler;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.solution.common.constant.ExceptionConstants;
|
||||
import com.solution.common.constant.PlatformAndModuleConstants;
|
||||
import com.solution.rule.domain.PlatformComponent;
|
||||
import com.solution.rule.domain.RuleParam;
|
||||
import com.solution.rule.domain.dto.WeaponModelDTO;
|
||||
import com.solution.rule.domain.vo.ComponentCountVO;
|
||||
import com.solution.rule.domain.vo.PlatformWeaponAggregateVO;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 战斗机处理链
|
||||
* 规则:针对 F22 平台,后端返回的组件数量比前端传递的大1,
|
||||
* 如果数据库中 F22 平台所有组件总数小于前端数量+1,则返回该总数。
|
||||
*/
|
||||
@Component
|
||||
public class WarplaneHandler extends AbstractRuleChainHandler {
|
||||
|
||||
// 组件数量增量常量
|
||||
private static final long COMPONENT_COUNT_INCREMENT = 1;
|
||||
|
||||
@Override
|
||||
public RuleParam doHandler(RuleParam ruleParam) {
|
||||
// 1. 参数校验
|
||||
if (ObjectUtil.isEmpty(ruleParam) || CollUtil.isEmpty(ruleParam.getWeaponModelDTOList())) {
|
||||
throw new RuntimeException(ExceptionConstants.PARAMETER_EXCEPTION);
|
||||
}
|
||||
|
||||
List<WeaponModelDTO> dtoList = ruleParam.getWeaponModelDTOList();
|
||||
List<ComponentCountVO> databaseWeapons = ruleParam.getDatabaseWeapons();
|
||||
|
||||
List<PlatformWeaponAggregateVO> resultWeapons = new ArrayList<>();
|
||||
|
||||
//TODO获取所有组件以及count
|
||||
|
||||
Iterator<WeaponModelDTO> iterator = dtoList.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
WeaponModelDTO dto = iterator.next();
|
||||
if(PlatformAndModuleConstants.RED_NEBO_M_1.equals(dto.getName())){
|
||||
List<PlatformComponent> components = dto.getComponents();
|
||||
List<PlatformComponent> componentList = new ArrayList<>();
|
||||
|
||||
//遍历前端数据的组件
|
||||
for (PlatformComponent component : components) {
|
||||
//遍历数据库数据
|
||||
for (ComponentCountVO databaseWeapon : databaseWeapons) {
|
||||
if(component.getName().equals(databaseWeapon.getComponentName())){
|
||||
PlatformComponent component1 = new PlatformComponent();
|
||||
component1.setName(databaseWeapon.getComponentName());
|
||||
if(databaseWeapon.getCount() > component.getNum()){
|
||||
component1.setNum(component.getNum() + COMPONENT_COUNT_INCREMENT);
|
||||
}else {
|
||||
component1.setNum(databaseWeapon.getCount());
|
||||
}
|
||||
//TODO 补充基本信息 暂未完成
|
||||
componentList.add(component1);
|
||||
}
|
||||
}
|
||||
}
|
||||
PlatformWeaponAggregateVO platformVO = new PlatformWeaponAggregateVO();
|
||||
platformVO.setPlatformName(dto.getName());
|
||||
platformVO.setComponents(componentList);
|
||||
resultWeapons.add(platformVO);
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
ruleParam.setResultWeapons(resultWeapons);
|
||||
return ruleParam;
|
||||
|
||||
// return super.doNextHandler(ruleParam);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user