This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
k18-ntcs-web-ntc/src/main/java/com/nis/web/service/basics/ScriberIdCommGroupService.java
zhangwenqing b4c06301b0 1.IP分组域配置修改增加修改人/时间
2.修复携带查询条件无法导出数据bug
3.优化分组域配置导入
2019-06-20 18:06:38 +08:00

315 lines
14 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.nis.web.service.basics;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
import com.nis.domain.basics.CommonGroupInfo;
import com.nis.domain.basics.PolicyGroupInfo;
import com.nis.domain.basics.ScriberIdCommCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.StringUtils;
import com.nis.web.controller.configuration.ObjectGroupController;
import com.nis.web.dao.CrudDao;
import com.nis.web.dao.basics.CommonGroupManageDao;
import com.nis.web.dao.basics.PolicyGroupInfoDao;
import com.nis.web.dao.basics.ScriberIdCommGroupDao;
import com.nis.web.dao.configuration.CommonPolicyDao;
import com.nis.web.service.CrudService;
import com.nis.web.service.SpringContextHolder;
@Service
public class ScriberIdCommGroupService extends CrudService<CrudDao<ScriberIdCommCfg>, ScriberIdCommCfg>{
@Autowired
private ScriberIdCommGroupDao scriberIdCommGroupDao;
@Autowired
private PolicyGroupInfoDao policyGroupInfoDao;
@Autowired
private CommonPolicyDao commonPolicyDao;
@Autowired
private CommonGroupManageDao commonGroupManageDao;
private CommonGroupManageService groupManageService = SpringContextHolder.getBean(CommonGroupManageService.class);
public Page<ScriberIdCommCfg> findPage(Page<ScriberIdCommCfg> page, ScriberIdCommCfg entity) {
entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r"));
entity.setPage(page);
List<ScriberIdCommCfg> list=scriberIdCommGroupDao.findAllPageList(entity);
for (int i = 0; i < list.size(); i++) {
String key=list.get(i).getCfgKeywords().replace("***and***", " ");
list.get(i).setCfgKeywords(key);
}
page.setList(list);
return page;
}
public List<ScriberIdCommCfg> findByPage(String ids) {
List<ScriberIdCommCfg> list=scriberIdCommGroupDao.findByPage(ids);
return list;
}
public ScriberIdCommCfg get(Long id ) {
return scriberIdCommGroupDao.get(id);
}
// 新增
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveCommGroupCfg(CfgIndexInfo entity) {
Date createTime=new Date();
if(entity.getScriberIdCommGroupList()!=null) {
// 获取分组ID
Integer serviceGroupId = groupManageService.getServiceGroupId(entity.getGroupName(), Constants.SUBID_OBJ_GROUP_TYPE);
List<PolicyGroupInfo> policyGroupInfos=policyGroupInfoDao.findPolicyByServiceGroupInfoList(serviceGroupId+"");
for (ScriberIdCommCfg cfg : entity.getScriberIdCommGroupList()) {
BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"});
Integer regionId = 0;
List<Integer> regionIds = ConfigServiceUtil.getId(3, 1);
if(regionIds!=null && regionIds.size()>0){
regionId = regionIds.get(0);
}else {
throw new MaatConvertException("Get region id failed");
}
cfg.setRegionId(regionId);
cfg.setRequestId(0);
cfg.setClassify("0");
cfg.setAttribute("0");
cfg.setLable("0");
cfg.setIsHexbin(2);
cfg.setCreateTime(createTime);
cfg.setCreatorId(entity.getCurrentUser().getId());
cfg.setIsValid(Constants.VALID_NO);
cfg.setIsAudit(Constants.AUDIT_NOT_YET);
if(cfg.getCfgKeywords().contains("***and***")){
cfg.setExprType(1);
}else{
cfg.setExprType(0);
}
cfg.setGroupId(serviceGroupId);
scriberIdCommGroupDao.insertCommGroupCfg(cfg);
}
// 更新分组状态
groupManageService.updateGroupStatus(policyGroupInfos, Constants.SUBID_OBJ_GROUP_TYPE);
transObjGroupToMaat(policyGroupInfos);
}
}
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void update(ScriberIdCommCfg entity){
Date editTime=new Date();
entity.setIsValid(0);
entity.setIsAudit(0);
entity.setEditTime(editTime);
entity.setEditorId(entity.getCurrentUser().getId());
if(entity.getCfgKeywords().contains("***and***")){
entity.setExprType(1);
}else{
entity.setExprType(0);
}
// 获取分组ID
Integer serviceGroupId = groupManageService.getServiceGroupId(entity.getGroupName(), Constants.SUBID_OBJ_GROUP_TYPE);
entity.setGroupId(serviceGroupId);
scriberIdCommGroupDao.update(entity);
// 更新分组状态
List<PolicyGroupInfo> policyGroupInfos = new ArrayList<PolicyGroupInfo>();
policyGroupInfos.addAll(policyGroupInfoDao.findPolicyByServiceGroupInfoList(entity.getUserRegion1())); // old
if(!entity.getUserRegion1().equals(entity.getGroupId().toString())) { // 分组已修改
policyGroupInfos.addAll(policyGroupInfoDao.findPolicyByServiceGroupInfoList(entity.getGroupId().toString())); // new
}
groupManageService.updateGroupStatus(policyGroupInfos, Constants.SUBID_OBJ_GROUP_TYPE);
transObjGroupToMaat(policyGroupInfos);
}
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void delete(String ids, String groupIds, ScriberIdCommCfg cfg, HttpServletRequest request, HttpServletResponse response) throws Exception {
if(ids == null) {
groupIds = "";
String cfgIds = "";
String serviceGroupIds = "";
// 删除操作后获取 ①需配置更新的分组(存在域配置)②需配置取消的分组(无域配置) -> 配置分别操作更新或取消
List<ScriberIdCommCfg> set = scriberIdCommGroupDao.getGroupIds(cfg);
if(set.size() == 0) { // 无可删除配置
return;
}else {
for (ScriberIdCommCfg scriberIdCommCfg : set) {
Integer groupId = scriberIdCommCfg.getGroupId();
cfgIds += ","+scriberIdCommCfg.getCfgId();
if(!serviceGroupIds.contains(groupId+"")) {
serviceGroupIds += ","+groupId;
}
}
cfgIds = cfgIds.substring(1);
serviceGroupIds = serviceGroupIds.substring(1);
}
scriberIdCommGroupDao.delete(cfgIds);
String[] strings = serviceGroupIds.split(",");
serviceGroupIds = "";
for (String groupId : strings) {
Integer size = scriberIdCommGroupDao.getCfgInfoByGroupIds(groupId);
if(size == 0) { // 需配置取消
serviceGroupIds += ","+groupId;
}else { // 需配置更新
groupIds += ","+groupId;
}
}
// 配置取消
if(StringUtils.isNotBlank(serviceGroupIds)) {
serviceGroupIds = serviceGroupIds.substring(1);
ObjectGroupController groupController = SpringContextHolder.getBean(ObjectGroupController.class);
Page<CfgIndexInfo> auditPage = new Page<CfgIndexInfo>(request,response,"r");
Properties props = groupController.getMsgProp();
// 配置未生效
String updateStatusGroupIds = "";
for (String groupId : serviceGroupIds.split(",")) {
List<CfgIndexInfo> list = commonPolicyDao.getObjGroupListByGroupIds(groupId, 888, Constants.VALID_NO);
if(list.size() > 0) {
updateStatusGroupIds += ","+groupId;
}
}
if(StringUtils.isNotBlank(updateStatusGroupIds)) {
updateStatusGroupIds = updateStatusGroupIds.substring(1);
CfgIndexInfo entity = new CfgIndexInfo();
entity.setUserRegion5(updateStatusGroupIds);
entity.setFunctionId(888);
entity.setCommonGroupIds("");
entity.setIsValid(Constants.VALID_NO);
commonPolicyDao.updateCfgIndexCommonGroupIdsBatch(entity);
List<PolicyGroupInfo> policyGroupInfos=policyGroupInfoDao.findPolicyByServiceGroupInfoList(updateStatusGroupIds);
groupManageService.updateGroupStatus(policyGroupInfos, Constants.SUBID_OBJ_GROUP_TYPE);
}
// 配置已生效
CfgIndexInfo entity = new CfgIndexInfo();
entity.setUserRegion5(serviceGroupIds);
entity.setServiceId(0);
entity.setFunctionId(888);
entity.setIsValid(Constants.VALID_NO);
entity.setIsAudit(Constants.AUDIT_NOT_YES);
entity.setBatchAuditValue("1");
entity.setBatchValidValue("1,0");
groupController.auditAll(auditPage, Constants.AUDIT_NOT_YES, entity, props);
}
// 配置更新
if(StringUtils.isNotBlank(groupIds)) {
groupIds = groupIds.substring(1);
List<PolicyGroupInfo> policyGroupInfos = policyGroupInfoDao.findPolicyByServiceGroupInfoList(groupIds);
transObjGroupToMaat(policyGroupInfos);
}
}else {
List<PolicyGroupInfo> policyGroupInfos=policyGroupInfoDao.findPolicyByServiceGroupInfoList(groupIds);
scriberIdCommGroupDao.delete(ids);
// 更新分组状态
groupManageService.updateGroupStatus(policyGroupInfos, Constants.SUBID_OBJ_GROUP_TYPE);
transObjGroupToMaat(policyGroupInfos);
}
}
public List<ScriberIdCommCfg> getByIds(String ids) {
if(ids==null) {
throw new RuntimeException("ids is null!");
}
return scriberIdCommGroupDao.getByIds(ids);
}
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSend(FunctionRegionDict regionDict, FunctionServiceDict serviceDict, List<BaseStringCfg<?>> cfgs, List<Integer> groupIds) {
logger.warn("Start to save ScriberId,size:"+cfgs.size());
long start=System.currentTimeMillis();
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
// 导入域配置 -> ①分组不存在新增分组并返回groupId ②分组存在获取groupId -> 数据 入库 -> 更新分组状态 -> 判断是否配置下发
try{
int index = 0;
String ids = "";
List<CommonGroupInfo> insertGroupList = new ArrayList<CommonGroupInfo>();
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(BaseStringCfg<?> cfg:cfgs) {
ScriberIdCommCfg commCfg=new ScriberIdCommCfg();
BeanUtils.copyProperties(cfg, commCfg);
Integer groupId = commonGroupManageDao.getGroupIdByGroupName(commCfg.getGroupName(), Constants.SUBID_OBJ_GROUP_TYPE);
if(groupId == null) {
groupId = groupIds.get(index);
index++;
CommonGroupInfo groupInfo = new CommonGroupInfo();
groupInfo.setCreatorId(commCfg.getCreatorId());
groupInfo.setCreateTime(commCfg.getCreateTime());
groupInfo.setGroupName(commCfg.getGroupName());
groupInfo.setGroupType(Constants.SUBID_OBJ_GROUP_TYPE);
groupInfo.setServiceGroupId(groupId);
groupInfo.setUdFlag(1);
insertGroupList.add(groupInfo);
}else {
if(!ids.contains(groupId+"")) {
ids += ","+groupId;
}
}
commCfg.setGroupId(groupId);
((ScriberIdCommGroupDao) batchSqlSession.getMapper(ScriberIdCommGroupDao.class)).insertCommGroupCfg(commCfg);
}
batchSqlSession.commit();
if(insertGroupList.size() > 0) {
commonGroupManageDao.insertBatch(insertGroupList);
}
if(StringUtils.isNotBlank(ids)) {
// 更新分组状态
String serviceGroupIds = ids.substring(1);
List<PolicyGroupInfo> policyGroupInfos = policyGroupInfoDao.findPolicyByServiceGroupInfoList(serviceGroupIds);
groupManageService.updateGroupStatus(policyGroupInfos, Constants.SUBID_OBJ_GROUP_TYPE);
// 判断是否配置下发
transObjGroupToMaat(policyGroupInfos);
}
}finally {
if(batchSqlSession != null){
batchSqlSession.close();
}
}
long end=System.currentTimeMillis();
logger.warn("Save ScriberId finish,cost:"+(end-start));
cfgs.clear();
cfgs=null;
}
}