package com.example.factory; import com.example.config.ConfigValue; import com.example.service.HisService; import com.example.service.LisService; import com.example.service.PacsService; import org.apache.ibatis.annotations.Case; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; /** * @Company: 西安路泰科技有限公司 * @Author: zhaowenxuan * @Date: 2024/12/18 09:32 */ @Component public class ServiceFactory { private final ApplicationContext applicationContext; @Autowired public ServiceFactory(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } public HisService getService(String hospName) { String beanName = getServiceBeanName(hospName); return (HisService) applicationContext.getBean(beanName); } public PacsService getPacsService(String hospName) { String beanName = getServiceBeanName(hospName); return (PacsService) applicationContext.getBean(beanName+"Pacs"); } public LisService getLisService(String hospName) { String beanName = getServiceBeanName(hospName); return (LisService) applicationContext.getBean(beanName+"Lis"); } private String getServiceBeanName(String hospName) { switch (hospName) { case "shanxiqinxamjyy": return "ShanXiQinXiAnMeiJi"; // 对应的业务 Bean 名称 case "shanxiqinpbkwyy": return "ShanXiQinPbkwyy"; case "shanxiqinjdczgzyy": return "ShanXiQinJdczgzyy"; case "shanxiqinsqyy": return "ShanXiQinXiAnShanQi"; case "shanxiqinwbzxyy": return "ShanXiQinWeiNanWbzxyy"; case "shanxiqinbjxjyy": return "ShanXiQinBaoJiBjxjyy"; case "shanxiqinbjfhyy": return "ShanXiQinBaoJiBjfhyy"; case "shanxiqinbjsqyy": return "ShanXiQinBaoJiBjsqyy"; case "shanxiqinssyjyy": return "ShanXiQinBaoJiSsyjyy"; default: throw new RuntimeException("找不到对应的医院服务配置:" + hospName); } } }