// 4. 调用方@ComponentpublicclassTransTaskBusiness{privateMap<String,OperateStrategy> operateStrategyMap =newConcurrentHashMap<>();// 构造器注入 OperateStrategy 所有的实现类// Spring文档推荐使用构造器注入方式:/**
* The Spring team generally advocates constructor injection as it enables one to implement application components as immutable objects and to ensure that required dependencies are not null.
* Furthermore constructor-injected components are always returned to client (calling) code in a fully initialized state.
*/@PostConstructpublicvoidinitStrategyMap(){
operateStrategyList.forEach(strategy -> operateStrategyMap.put(strategy.operateType(), strategy));}// 提货单删除publicbooleandeletePickup(DeletePickupTasksDTO dto){if(dto.getIds().size()!=1){thrownewTransAppException("不支持批量删除,请进行单个删除");}// 1、参数转换TransTaskOperateRequestDto transTaskOperateRequestDto =newTransTaskOperateRequestDto();BeanUtils.copyProperties(dto, transTaskOperateRequestDto);// 2、业务逻辑处理
operateStrategyMap.get(OperateEnum.LOAD_DELETE.getCode()).operateHandle(transTaskOperateRequestDto);returntrue;}// 任务单删除publicbooleandeleteMainline(DeleteMainlineTasksDTO dto){if(dto.getIds().size()!=1){thrownewTransAppException("不支持批量删除,请进行单个删除");}// 1、参数转换TransTaskOperateRequestDto transTaskOperateRequestDto =newTransTaskOperateRequestDto();BeanUtils.copyProperties(dto, transTaskOperateRequestDto);// 2、业务逻辑处理
operateStrategyMap.get(OperateEnum.SHIP_DELETE.getCode()).operateHandle(transTaskOperateRequestDto);returntrue;}}