package com.nis.web.service.basics; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import com.nis.domain.basics.PolicyGroupInfo; import com.nis.web.dao.basics.PolicyGroupInfoDao; import org.apache.commons.collections.CollectionUtils; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.beust.jcommander.internal.Maps; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; import com.nis.domain.Page; import com.nis.domain.basics.IpCommCfg; import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.CfgIndexInfo; import com.nis.exceptions.MaatConvertException; import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.web.dao.basics.IpCommGroupCfgDao; import com.nis.web.service.BaseService; import com.nis.web.service.SpringContextHolder; @Service public class IpCommGroupCfgService extends BaseService { @Autowired private IpCommGroupCfgDao ipCommGroupCfgDao; @Autowired private PolicyGroupInfoDao policyGroupInfoDao; private CommonGroupManageService groupManageService = SpringContextHolder.getBean(CommonGroupManageService.class); /** * @param page * @param entity * @return */ public Page findPage(Page page, IpCommCfg entity) { entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r")); entity.setPage(page); List list=ipCommGroupCfgDao.findPage(entity); page.setList(list); return page; } public List findByPage(String ids) { List list=ipCommGroupCfgDao.findByPage(ids); return list; } public IpCommCfg get(Long id ) { return ipCommGroupCfgDao.get(id); } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void save(List entitys) { logger.warn("Start to save IP,size:"+entitys.size()); long start=System.currentTimeMillis(); for(IpCommCfg ipCfg:entitys) { ipCommGroupCfgDao.insert(ipCfg); } long end=System.currentTimeMillis(); logger.warn("Save IP finish,cost:"+(end-start)); } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void update(IpCommCfg entity){ ipCommGroupCfgDao.update(entity); // 更新分组状态 List policyGroupInfos = new ArrayList(); if(!entity.getUserRegion1().equals(entity.getGroupId().toString())) { groupManageService.updateGroupStatus(policyGroupInfos, 5); policyGroupInfos.addAll(policyGroupInfoDao.findPolicyByServiceGroupInfoList(entity.getUserRegion1())); } policyGroupInfos.addAll(policyGroupInfoDao.findPolicyByServiceGroupInfoList(entity.getGroupId().toString())); transObjGroupToMaat(policyGroupInfos); } public List getByIds(String ids) { if(ids==null) { throw new RuntimeException("ids is null!"); } return ipCommGroupCfgDao.getByIds(ids); } //新增 @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveIpCommGroupCfg(CfgIndexInfo entity) { Date createTime=new Date(); if(CollectionUtils.isNotEmpty(entity.getIpCommGroupCfgList())) { List policyGroupInfos=policyGroupInfoDao.findPolicyByServiceGroupInfoList(entity.getGroupId().toString()); for (int i = 0; i < entity.getIpCommGroupCfgList().size(); i++) { BeanUtils.copyProperties(entity, entity.getIpCommGroupCfgList().get(i), new String[]{"cfgId","userregion3"}); Integer regionId = 0; List regionIds = ConfigServiceUtil.getId(3, 1); if(regionIds!=null && regionIds.size()>0){ regionId = regionIds.get(0); }else { throw new MaatConvertException("Get region id failed"); } entity.getIpCommGroupCfgList().get(i).setRegionId(regionId); entity.getIpCommGroupCfgList().get(i).setRequestId(0); entity.getIpCommGroupCfgList().get(i).setClassify("0"); entity.getIpCommGroupCfgList().get(i).setAttribute("0"); entity.getIpCommGroupCfgList().get(i).setLable("0"); entity.getIpCommGroupCfgList().get(i).setCreateTime(createTime); entity.getIpCommGroupCfgList().get(i).setCreatorId(entity.getCurrentUser().getId()); entity.getIpCommGroupCfgList().get(i).setIsValid(Constants.VALID_NO); entity.getIpCommGroupCfgList().get(i).setIsAudit(Constants.AUDIT_NOT_YET); entity.getIpCommGroupCfgList().get(i).setGroupId(entity.getGroupId()); ipCommGroupCfgDao.insertForBatch(entity.getIpCommGroupCfgList().get(i)); } // 更新分组状态 groupManageService.updateGroupStatus(policyGroupInfos, 5); //TODO 组配置更新时 需检索是否被其它配置引用,若被引用需调用相应服务接口更新配置 transObjGroupToMaat(policyGroupInfos); } } public void delete(String ids, String groupIds) { List policyGroupInfos=policyGroupInfoDao.findPolicyByServiceGroupInfoList(groupIds); if(ids==null) { throw new RuntimeException("ids is null!"); } ipCommGroupCfgDao.delete(ids); // 更新分组状态 groupManageService.updateGroupStatus(policyGroupInfos, 5); transObjGroupToMaat(policyGroupInfos); } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveAndSend(FunctionRegionDict regionDict, FunctionServiceDict serviceDict, List cfgs) { logger.warn("Start to save IP,size:"+cfgs.size()); long start=System.currentTimeMillis(); SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); SqlSession batchSqlSession = null; //需要通过新增域接口新增的ip集合 try{ String ids = ""; batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); for(BaseIpCfg cfg:cfgs) { if(!ids.contains(cfg.getGroupId()+"")) { ids += ","+cfg.getGroupId(); } IpCommCfg ipCommCfg=new IpCommCfg(); BeanUtils.copyProperties(cfg, ipCommCfg); ((IpCommGroupCfgDao) batchSqlSession.getMapper(IpCommGroupCfgDao.class)).insertForBatch(ipCommCfg); } batchSqlSession.commit(); // 更新分组状态 String serviceGroupIds = ids.substring(1); List policyGroupInfos = policyGroupInfoDao.findPolicyByServiceGroupInfoList(serviceGroupIds); groupManageService.updateGroupStatus(policyGroupInfos, 5); }finally { if(batchSqlSession != null){ batchSqlSession.close(); } } long end=System.currentTimeMillis(); logger.warn("Save IP finish,cost:"+(end-start)); cfgs.clear(); cfgs=null; } }