package com.yeshi.fanli.service.impl.config; import java.io.Serializable; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.annotation.Resource; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.config.SystemConfigDao; import com.yeshi.fanli.entity.system.System; import com.yeshi.fanli.entity.system.SystemConfig; import com.yeshi.fanli.exception.NotExistObjectException; import com.yeshi.fanli.service.inter.config.SystemConfigService; import com.yeshi.fanli.service.inter.config.SystemService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.Utils; @Service public class SystemConfigServiceImpl implements SystemConfigService{ @Resource private SystemConfigDao systemConfigDao; @Resource private SystemService systemService; public int getCount(System system,String key) { Long lcount; if(system!=null){ lcount = systemConfigDao.getCount("select count(sc.id) from SystemConfig sc left join sc.systems s where s.id=? and sc.name like ?",new Serializable[]{system.getId(),"%"+key+"%"}); }else{ lcount = systemConfigDao.getCount("select count(sc.id) from SystemConfig sc where sc.name like ?",new Serializable[]{"%"+key+"%"}); } return lcount.intValue(); } public List getSystemConfigList(int index,System system, String key) { int start =index * Constant.PAGE_SIZE; List list; if(system != null){ list = systemConfigDao.list("from SystemConfig sc left outer join fetch sc.systems s where s.id = ? and sc.name like ?",start,Constant.PAGE_SIZE,new Serializable[]{system.getId(),"%"+key+"%"}); StringBuffer hql=new StringBuffer("from SystemConfig sc "); Serializable[] params = new Serializable[list.size()]; int ii=0; for (SystemConfig sc : list) { if(ii==0){ hql.append(" where sc. id = ? "); }else{ hql.append(" or sc. id = ? "); } params[ii]=sc.getId(); ii++; } list=systemConfigDao.list(hql.toString(),params); }else{ list = systemConfigDao.list("from SystemConfig sc where sc.name like ?",start,Constant.PAGE_SIZE,new Serializable[]{"%"+key+"%"}); } return list; } public void addSystemConfig(SystemConfig sc) { Set systems = sc.getSystems(); Set newSystems=new HashSet(); for (System system : systems) { String platform = Utils.getMap().get(String.valueOf(system.getPlatform())); String packages = system.getPackageName(); System find = systemService.getSystem(platform, packages); if(find != null){ newSystems.add(find); } } sc.setSystems(newSystems); sc.setUpdatetime(java.lang.System.currentTimeMillis()); systemConfigDao.save(sc); } public void deleteSystem(long id, System system) throws NotExistObjectException { SystemConfig find = systemConfigDao.find(SystemConfig.class, id); if(find==null){ throw new NotExistObjectException("不存在该子系统"); } find.getSystems().remove(system); find.setUpdatetime(java.lang.System.currentTimeMillis()); systemConfigDao.update(find); } public void addSystem(long id, System system) throws NotExistObjectException { SystemConfig find = systemConfigDao.find(SystemConfig.class, id); if(find==null){ throw new NotExistObjectException("不存在该子系统"); } find.getSystems().add(system); find.setUpdatetime(java.lang.System.currentTimeMillis()); systemConfigDao.update(find); } public SystemConfig getSystemConfig(long id) { return systemConfigDao.find(SystemConfig.class, id); } public void updateSystemConfig(SystemConfig sc) throws NotExistObjectException { SystemConfig find = systemConfigDao.find(SystemConfig.class, sc.getId()); if(find==null){ throw new NotExistObjectException("不存在该对象"); } sc.setUpdatetime(java.lang.System.currentTimeMillis()); Set newSystems=new HashSet(); Set systems = sc.getSystems(); for (System system : systems) { String platform = Utils.getMap().get(String.valueOf(system.getPlatform())); String packages = system.getPackageName(); System sfind = systemService.getSystem(platform, packages); if(sfind != null){ newSystems.add(sfind); } } sc.setSystems(newSystems); systemConfigDao.update(sc); } public void deleteSystemConfig(long id) { systemConfigDao.delete(new SystemConfig(id)); } @Cacheable(value={"childSystemCache"}, key="#p0") public String get(String sigkey) throws NotExistObjectException { List list = systemConfigDao.list("from SystemConfig sc where sc.key = ?", new Serializable[]{sigkey}); if(list.size() ==0 ){ throw new NotExistObjectException("不存在该参数"); } return list.get(0).getValue(); } @Cacheable(value={"childSystemCache"}, key="#p0+#system.id") public String get(String key, System system) { if(system==null || system.getId()==0){ return ""; } List list = systemConfigDao.list("select sc from SystemConfig sc join sc.systems syss where sc.key = ? and syss.id=?", new Serializable[]{key,system.getId()}); if(list.size() != 0){ return list.get(0).getValue(); } return ""; } }