场景说明
好比处于下游的系统,在接收源系统的计划订单的时候,因订单的种类比较多,例如:采购订单、销售订单、调拨订单、预售订单等待,若是这些订单的差别比较大,须要分开建多个表,这样后台接口就须要设计一番了。
下面就按步骤直接贴代码案例
第一步: 建立一个接口,定义接收订单的方法;
public interface OrderRepeaterServiceI {api
Result receiveOrder(ReceiveProductOrder order);
}app
第二步: 定义接口的实现类,2个br/>@Service
public class PurchaseOrderServiceImpl implements OrderRepeaterServiceI {br/>@Override
public Result receiveOrder(ReceiveProductOrder order) {
System.out.println("采购订单执行分支...");
return null;
}ide
@Service
public class SaleOrderServiceImpl implements OrderRepeaterServiceI {br/>@Override
public Result receiveOrder(ReceiveProductOrder order) {
System.out.println("销售订单执行分支...");
return null;
}
}测试
第三步: 定义分发器服务br/>@Service
public class OrderRepeaterService {设计
@Resource private OrderRepeaterServiceI purchaseOrderServiceImpl; @Resource private OrderRepeaterServiceI saleOrderServiceImpl; public Result receiveOrder(String orderType, ReceiveProductOrder order) throws Exception { OrderRepeaterServiceI orderService = null; switch (orderType) { case "10" : orderService = purchaseOrderServiceImpl;break; case "20" : orderService = saleOrderServiceImpl;break; } if (orderService != null) { orderService.receiveOrder(order); } else { throw new RuntimeException("订单类型未知异常."); } return Result.successWithData("成功"); }
}code
第四步: 定义接收源系统的控制器br/>@Controller
@RequestMapping(value = "/mtsapi")
public class OrderApiController {接口
private static final Logger logger = Logger.getLogger(OrderSapApiController.class); @Resource private OrderRepeaterService orderRepeaterService; @RequestMapping(value = "/testService") @ResponseBody public Result testService(String orderType) { try { ReceiveProductOrder order = new ReceiveProductOrder(); order.setOrderTypeCode("10"); order.setRelatedDocCode("SO18031610001"); return orderRepeaterService.receiveOrder(orderType, order); } catch (Exception e) { logger.error("接口测试异常."); return Result.errorWithData("测试异常"); } }
}get