package com.norteksoft.bs.options.service; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.norteksoft.bs.options.dao.OptionDao; import com.norteksoft.bs.options.dao.OptionGroupDao; import com.norteksoft.bs.options.entity.Option; import com.norteksoft.bs.options.entity.OptionGroup; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; @Service @Transactional public class OptionGroupManager { private OptionDao optionDao; private OptionGroupDao optionGroupDao; @Autowired public void setOptionDao(OptionDao optionDao) { this.optionDao = optionDao; } @Autowired public void setOptionGroupDao(OptionGroupDao optionGroupDao) { this.optionGroupDao = optionGroupDao; } public void getAllOptionGroupForPage(Page<OptionGroup> groups,Long systemId) { optionGroupDao.getAllOptionGroupForPage(groups,systemId); } public OptionGroup getOptionGroup(Long id){ return optionGroupDao.get(id); } public boolean checkOptionGroupCanCreate(String name, Long groupId){ OptionGroup group = optionGroupDao.CheckOptionGroupName(name); if(group == null){ return true; }else{ if(group.getId().equals(groupId)){ return true; }else{ return false; } } } public boolean checkOptionGroupForOnly(String groupNo){ OptionGroup group = optionGroupDao.CheckOptionGroupNo(groupNo); if(group == null){ return true; }else{ return false; } } @Transactional(readOnly=false) public List<Option> saveOptionGroup(OptionGroup optionGroup, List<Option> options){ List<Option> optionList = new ArrayList<Option>(); optionGroupDao.save(optionGroup); for (Option option : options) { if(option==null){continue;} option.setOptionGroup(optionGroup); option.setCompanyId(ContextUtils.getCompanyId()); optionDao.save(option); optionList.add(option); } return optionList; } @Transactional(readOnly=false) public void deleteOptionGroup(Long id){ optionGroupDao.delete(id); } private List<Long> getDeleteId(String ids){ String[] strIds = ids.split(","); List<Long> idList = new ArrayList<Long>(); for (String string : strIds) { idList.add(Long.valueOf(string.trim())); } return idList; } public String deleteOptionGroups(String ids){ StringBuilder sb=new StringBuilder(); int successNum=0; List<Long> deleteIds = getDeleteId(ids); for (Long id : deleteIds) { OptionGroup group=getOptionGroup(id); if("internation".equals(group.getCode())){ sb.append("底层应用internation选项组,无法删除;"); }else{ deleteOptionGroup(id); successNum++; } } if(successNum!=0)sb.append("删除成功").append(successNum).append("个"); return sb.toString(); } @Transactional(readOnly=false) public void deleteOption(Long optionId) { optionDao.delete(optionId); } /** * 查询所有的选项组 */ public List<OptionGroup> getOptionGroups() { return optionGroupDao.getOptionGroups(); } /** * 根据选项组查询选项 */ public List<Option> getOptionsByGroup(Long optionGroupId) { return optionDao.getOptionsByGroup(optionGroupId); } /** * 根据选项组编号查询选项组 * @param code * @return */ public OptionGroup getOptionGroupByCode(String code){ return optionGroupDao.getOptionGroupByCode(code); } /** * 根据选项组名称查询选项组 * @param code * @return */ public OptionGroup getOptionGroupByName(String name){ return optionGroupDao.getOptionGroupByName(name); } /** * 根据选项组编号查询选项 * @param code * @return */ public List<Option> getOptionsByGroupCode(String code){ return optionDao.getOptionsByGroupCode(code); } public Option getDefaultOptionByOptionGroupCode(Long optionGroupId){ List<Option> options = getOptionsByGroup(optionGroupId); return getDefaultOption(options); } public Option getDefaultOptionByOptionGroupCode(String groupCode){ List<Option> options = getOptionsByGroupCode(groupCode); return getDefaultOption(options); } public Option getDefaultOption(List<Option> options){ Option defaultOption = null; for(Option opt : options){ if(opt.getSelected()){ defaultOption = opt; break; } } if(!options.isEmpty() && defaultOption == null) defaultOption = options.get(0); return defaultOption; } /** * 根据选项组名称查询选项 * @param code * @return */ public List<Option> getOptionsByGroupName(String name){ return optionDao.getOptionsByGroupName(name); } public List<OptionGroup> getOptionGroups(Long companyId,String systemIds){ return optionGroupDao.getOptionGroups(companyId,systemIds); } public List<Option> getOptionsByGroup(Long optionGroupId,Long companyId){ return optionDao.getOptionsByGroup(optionGroupId, companyId); } @Transactional(readOnly=false) public void saveOptionGroup(OptionGroup group){ optionGroupDao.save(group); } public Option getOptionByInfo(String value,String name,String groupCode){ return optionDao.getOptionByInfo(value, name, groupCode); } @Transactional(readOnly=false) public void saveOption(Option option){ optionDao.save(option); } public Option getOptionById(Long optionId){ return optionDao.get(optionId); } }