现在调用研发域的三个接口去获取 需求 任务 缺陷
- 需求: requirement
- 任务: task
- 缺陷: defect
返回的内容都是 WorkItem 有对应的字段
对应到我们系统里面是
ChangeOrderItemVO 这里面部分字段是相互映射的
现在可以获取到的是itemType 和 itemId
/api/defect/defectById
/api/requirement/scan
/api/task/scanTask
@Autowried
DefectService defectService;
@Autowried
RequirementService requirementService;
@Autowried
TaskService taskService;
List<ChangeOrderItem> changeOrderItems = new ArrayList<>();
for(ChangeOrderItem changeOrderItem : changeOrderItems) {
Long itemId = changeOrderItem.getItemId();
String itemType = changeOrderItem.getItemType();
// 根据itemType去调用对应的接口,参数是itemId
WorkItem workItem = null;
if (itemType == 1) {
workItem = requirementService.detail(itemId);
} else if (itemType == 2) {
workItem = defectService.detail(itemId);
}else if (itemType == 3) {
workItem = taskService.detail(itemId);
}else {
System.out.print("类型超出范围");
}
BeanUtils.copyProperties(workItem,changeOrderItem);
}
# 第一种方式,代理模式 静态代理这三个类,这样需要发生变化的时候,不需要修改原有的逻辑,但是需要修改代理类
// 基于接口而非实现编程
interface IWorkItemService {
WorkItem getWorkItemByTypeAndId(String itemType,Long itemId)
}
@Service
class WorkItemService {
@Autowried
DefectService defectService;
@Autowried
RequirementService requirementService;
@Autowried
TaskService taskService;
public WorkItem getWorkItemByTypeAndId(String itemType,Long itemId) {
WorkItem workItem = null;
if (itemType == 1) {
workItem = requirementService.detail(itemId);
} else if (itemType == 2) {
workItem = defectService.detail(itemId);
}else if (itemType == 3) {
workItem = taskService.detail(itemId);
}else {
System.out.print("类型超出范围");
}
return workItem;
}
}
网友评论