diff --git a/src/main/java/com/nis/util/ConfigServiceUtil.java b/src/main/java/com/nis/util/ConfigServiceUtil.java index dc088e561..bd5aca26c 100644 --- a/src/main/java/com/nis/util/ConfigServiceUtil.java +++ b/src/main/java/com/nis/util/ConfigServiceUtil.java @@ -631,9 +631,9 @@ public class ConfigServiceUtil { * @return * @throws MaatConvertException */ - public static ToMaatResult configSyncCmd(String params) throws MaatConvertException{ + public static JSONObject configSyncCmd(String params) throws MaatConvertException{ Response response=null; - ToMaatResult bean = null; + JSONObject bean = null; try { String result = null; String url = DictUtils.getDictLabel("config_sync_url", "sync_cmd"); @@ -653,9 +653,7 @@ public class ConfigServiceUtil { } if(response != null && response.getStatus() == 200){ logger.info("get result success"); - JsonConfig config=new JsonConfig(); - JSONObject resObject = JSONObject.fromObject(result,config); - bean = (ToMaatResult) JSONObject.toBean(resObject,ToMaatResult.class); + bean = JSONObject.fromObject(result); }else{ throw new MaatConvertException(":"+result); } @@ -674,9 +672,9 @@ public class ConfigServiceUtil { * @return * @throws MaatConvertException */ - public static ToMaatResult configSyncStatus() throws MaatConvertException{ + public static JSONObject configSyncStatus() throws MaatConvertException{ Response response=null; - ToMaatResult bean = null; + JSONObject bean = null; try { String result = null; String url = DictUtils.getDictLabel("config_sync_url", "get_sync_status"); @@ -696,9 +694,7 @@ public class ConfigServiceUtil { } if(response != null && response.getStatus() == 200){ logger.info("get result success"); - JsonConfig config=new JsonConfig(); - JSONObject resObject = JSONObject.fromObject(result,config); - bean = (ToMaatResult) JSONObject.toBean(resObject,ToMaatResult.class); + bean= JSONObject.fromObject(result); }else{ throw new MaatConvertException(":"+result); } @@ -717,9 +713,9 @@ public class ConfigServiceUtil { * @return * @throws MaatConvertException */ - public static ToMaatResult configSync(String params,Integer cfgType,Integer serviceId,String tableName,String completeTag) throws MaatConvertException{ + public static JSONObject configSync(String params,Integer cfgType,Integer serviceId,String tableName,String completeTag) throws MaatConvertException{ Response response=null; - ToMaatResult bean = null; + JSONObject bean = null; try { String result = null; String url = DictUtils.getDictLabel("config_sync_url", "sync_send"); @@ -743,10 +739,7 @@ public class ConfigServiceUtil { } if(response != null && response.getStatus() == 200){ logger.info("get result success"); - JsonConfig config=new JsonConfig(); - config.setExcludes(new String[]{"configCompileList"}); - JSONObject resObject = JSONObject.fromObject(result,config); - bean = (ToMaatResult) JSONObject.toBean(resObject,ToMaatResult.class); + bean = JSONObject.fromObject(result); }else{ throw new MaatConvertException(":"+result); } diff --git a/src/main/java/com/nis/web/controller/configuration/ConfigSynchronizationController.java b/src/main/java/com/nis/web/controller/configuration/ConfigSynchronizationController.java index fb66b1f07..fc2a9bd0a 100644 --- a/src/main/java/com/nis/web/controller/configuration/ConfigSynchronizationController.java +++ b/src/main/java/com/nis/web/controller/configuration/ConfigSynchronizationController.java @@ -1,20 +1,32 @@ package com.nis.web.controller.configuration; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import net.sf.json.JSONObject; + import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; import com.nis.domain.FunctionServiceDict; import com.nis.domain.Page; +import com.nis.domain.SysDataDictionaryItem; +import com.nis.domain.SysDataDictionaryName; import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.maat.ToMaatResult; +import com.nis.util.CacheUtils; +import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.util.DictUtils; +import com.nis.util.StringUtil; import com.nis.web.controller.BaseController; +import com.nis.web.service.BaseService; /** * 配置全量同步 @@ -26,10 +38,34 @@ import com.nis.web.controller.BaseController; public class ConfigSynchronizationController extends BaseController { /** + * @param cmd 0为取消同步,1为同步 * 下发同步命令 */ @RequestMapping(value = {"cmd"}) - public String cmd(Model model,String cmd){ + public String cmd(Model model,Integer cmd,HttpServletRequest request,HttpServletResponse response){ + Map map = new HashMap(); + map.put("syncStatus", cmd); + JSONObject result = ConfigServiceUtil.configSyncCmd(BaseService.gsonToJson(map)); + if(result.get("status").equals(201)){//响应成功 + if(cmd.equals(1)){//同步 + SysDataDictionaryName sysDictName = new SysDataDictionaryName(); + sysDictName.setMark("currrent_sync_status"); + List dictList = dictService.findDicByName(sysDictName); + if(!StringUtil.isEmpty(dictList)){ + List itemList = dictList.get(0).getDictItemList(); + if(!StringUtil.isEmpty(itemList)){ + SysDataDictionaryItem item = itemList.get(0); + item.setItemValue("0");//0为开始同步 + dictService.updateDictItem(item); + //删除字典缓存 + CacheUtils.remove(Constants.CACHE_DICT_MAP); + } + } + send(model,request,response); + }else if(cmd.equals(0)){//取消 + + } + } return ""; } @@ -39,31 +75,80 @@ public class ConfigSynchronizationController extends BaseController { */ @RequestMapping(value = {"send"}) public void send(Model model,HttpServletRequest request,HttpServletResponse response){ + int status = 1; try { configSynchronizationService.send(request,response,null); } catch (NoSuchFieldException e) { - // TODO Auto-generated catch block e.printStackTrace(); + status = 0; } catch (SecurityException e) { - // TODO Auto-generated catch block e.printStackTrace(); + status = 0; } catch (IllegalArgumentException e) { - // TODO Auto-generated catch block e.printStackTrace(); + status = 0; } catch (IllegalAccessException e) { - // TODO Auto-generated catch block e.printStackTrace(); + status = 0; } catch (ClassNotFoundException e) { - // TODO Auto-generated catch block e.printStackTrace(); + status = 0; + }finally{ + if(status==0){ + SysDataDictionaryName sysDictName = new SysDataDictionaryName(); + sysDictName.setMark("currrent_sync_status"); + List dictList = dictService.findDicByName(sysDictName); + if(!StringUtil.isEmpty(dictList)){ + List itemList = dictList.get(0).getDictItemList(); + if(!StringUtil.isEmpty(itemList)){ + SysDataDictionaryItem item = itemList.get(0); + item.setItemValue("-1");//下发过程中失败 + dictService.updateDictItem(item); + //删除字典缓存 + CacheUtils.remove(Constants.CACHE_DICT_MAP); + } + } + Map map = new HashMap(); + map.put("syncStatus", 1); + JSONObject result = ConfigServiceUtil.configSyncCmd(BaseService.gsonToJson(map));//取消 + if(result.get("status").equals(200)){//取消下发成功 + + } + } } } /** * 同步状态获取 */ @RequestMapping(value = {"getStatus"}) + @ResponseBody public String getStatus(Model model){ - + JSONObject result = ConfigServiceUtil.configSyncStatus();//获取同步状态 + if(result.get("status").equals(200)){ + List> list = result.getJSONArray("data"); + if(!StringUtil.isEmpty(list)){ + Map map = list.get(0); + String status = map.get("status").toString(); + SysDataDictionaryName sysDictName = new SysDataDictionaryName(); + sysDictName.setMark("currrent_sync_status"); + List dictList = dictService.findDicByName(sysDictName); + if(!StringUtil.isEmpty(dictList)){ + SysDataDictionaryName dict = dictList.get(0); + List itemList =dict.getDictItemList(); + if(!StringUtil.isEmpty(itemList)){ + SysDataDictionaryItem item = itemList.get(0); + if(!status.equals(item.getItemValue())){//如果状态不同,则更新状态 + item.setDictionaryId(dict.getId().intValue()); + item.setItemValue(status); + dictService.updateDictItem(item); + //删除字典缓存 + CacheUtils.remove(Constants.CACHE_DICT_MAP); + } + + } + } + } + } return ""; } } diff --git a/src/main/java/com/nis/web/dao/SysDictDao.java b/src/main/java/com/nis/web/dao/SysDictDao.java index 90d0d1fb0..f7f71541e 100644 --- a/src/main/java/com/nis/web/dao/SysDictDao.java +++ b/src/main/java/com/nis/web/dao/SysDictDao.java @@ -11,7 +11,7 @@ import com.nis.domain.SysDataDictionaryName; public interface SysDictDao extends CrudDao { - List findDicByName(@Param("DEL_FLAG_NORMAL")String DEL_FLAG_NORMAL,@Param("modualName") String modualName); + List findDicByName(@Param("DEL_FLAG_NORMAL")String DEL_FLAG_NORMAL,@Param("modualName") String modualName,@Param("mark") String mark); List findDictList(SysDataDictionaryName sysDictName); @@ -27,6 +27,6 @@ public interface SysDictDao extends CrudDao { void deleteDictName(@Param("dictId")Integer dictId); - + void updateDictItem(SysDataDictionaryItem sysDictItem); } \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/SysDictDao.xml b/src/main/java/com/nis/web/dao/SysDictDao.xml index 70fc29efa..e26ff63b5 100644 --- a/src/main/java/com/nis/web/dao/SysDictDao.xml +++ b/src/main/java/com/nis/web/dao/SysDictDao.xml @@ -65,7 +65,13 @@ FROM sys_data_dictionary_name n - WHERE n.status = #{DEL_FLAG_NORMAL} AND n.module_name = #{modualName} + WHERE n.status = #{DEL_FLAG_NORMAL} + + AND n.module_name = #{modualName} + + + AND n.mark = #{mark} + ORDER BY n.id,t.item_sort @@ -149,5 +155,12 @@ status = #{status,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER} - + + + update sys_data_dictionary_item + set item_code=#{itemCode}, item_value=#{itemValue}, + item_desc=#{itemDesc}, item_sort=#{itemSort}, status=#{status}, + type=#{type}, dictionary_id=#{dictionaryId} + where id = #{id,jdbcType=INTEGER} + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/configuration/ConfigSynchronizationDao.java b/src/main/java/com/nis/web/dao/configuration/ConfigSynchronizationDao.java index 138f8671d..91abb322c 100644 --- a/src/main/java/com/nis/web/dao/configuration/ConfigSynchronizationDao.java +++ b/src/main/java/com/nis/web/dao/configuration/ConfigSynchronizationDao.java @@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.ResultType; import org.apache.ibatis.annotations.Param; +import com.nis.domain.basics.AsnIpCfg; import com.nis.domain.configuration.AppByteCfg; import com.nis.domain.configuration.AppComplexKeywordCfg; import com.nis.domain.configuration.AppDomainCfg; @@ -68,6 +69,7 @@ public interface ConfigSynchronizationDao { public List getCfgIndexList(BaseCfg entity); public List getIpPortList(@Param("tableName")String tableName,@Param("compileIds")List compileIds); + public List getAsnIpList(@Param("asnGroupIds")List asnGroupIds); public List getStrList(@Param("tableName")String tableName,@Param("compileIds")List compileIds); public List getComplexStrList(@Param("tableName")String tableName,@Param("compileIds")List compileIds); public List getFileDigestList(@Param("tableName")String tableName,@Param("compileIds")List compileIds); diff --git a/src/main/java/com/nis/web/dao/configuration/ConfigSynchronizationDao.xml b/src/main/java/com/nis/web/dao/configuration/ConfigSynchronizationDao.xml index 886607f6a..011d2209e 100644 --- a/src/main/java/com/nis/web/dao/configuration/ConfigSynchronizationDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/ConfigSynchronizationDao.xml @@ -706,6 +706,11 @@ a.ip_type,a.src_ip_address,a.ip_pattern,a.port_pattern,a.src_port ,a.protocol,a.protocol_id,a.direction,a.dest_port,a.dest_ip_address,a.cfg_type,a.compile_id + + a.ip_type,a.src_ip_address,a.ip_pattern,a.port_pattern,a.src_port + ,a.protocol,a.protocol_id,a.direction,a.dest_port,a.dest_ip_address,a.cfg_type,a.asn_ip_group, + a.user_region1 + a.cfg_desc,a.cfg_keywords,a.cfg_type, a.expr_type,a.match_method,a.is_hexbin,a.compile_id @@ -860,6 +865,7 @@ AND a.action=#{action,jdbcType=INTEGER} and a.is_valid=#{isValid} and a.is_audit=#{isAudit} + and a.is_valid!=-1 ORDER BY a.CFG_ID @@ -883,6 +889,27 @@ --> + @@ -977,6 +1005,7 @@ AND a.action=#{action,jdbcType=INTEGER} and a.is_valid=#{isValid} and a.is_audit=#{isAudit} + and a.is_valid!=-1 ORDER BY a.CFG_ID @@ -1000,6 +1029,7 @@ AND a.action=#{action,jdbcType=INTEGER} and a.is_valid=#{isValid} and a.is_audit=#{isAudit} + and a.is_valid!=-1 ORDER BY a.CFG_ID @@ -1023,6 +1053,7 @@ AND a.action=#{action,jdbcType=INTEGER} and a.is_valid=#{isValid} and a.is_audit=#{isAudit} + and a.is_valid!=-1 ORDER BY a.CFG_ID @@ -1053,6 +1084,7 @@ AND a.action=#{action,jdbcType=INTEGER} and a.is_valid=#{isValid} and a.is_audit=#{isAudit} + and a.is_valid!=-1 ORDER BY a.CFG_ID @@ -1078,6 +1110,7 @@ AND a.action=#{action,jdbcType=INTEGER} and a.is_valid=#{isValid} and a.is_audit=#{isAudit} + and a.is_valid!=-1 ORDER BY a.CFG_ID @@ -1102,6 +1135,7 @@ AND a.action=#{action,jdbcType=INTEGER} and a.is_valid=#{isValid} and a.is_audit=#{isAudit} + and a.is_valid!=-1 ORDER BY a.CFG_ID @@ -1125,6 +1159,7 @@ AND a.action=#{action,jdbcType=INTEGER} and a.is_valid=#{isValid} and a.is_audit=#{isAudit} + and a.is_valid!=-1 ORDER BY a.CFG_ID diff --git a/src/main/java/com/nis/web/service/DictService.java b/src/main/java/com/nis/web/service/DictService.java index a7439b6ea..6b9fa67c6 100644 --- a/src/main/java/com/nis/web/service/DictService.java +++ b/src/main/java/com/nis/web/service/DictService.java @@ -29,6 +29,9 @@ public class DictService extends BaseService { return page; } + public List findDicByName(SysDataDictionaryName sysDictName){ + return dictDao.findDicByName(sysDictName.DEL_FLAG_NORMAL, sysDictName.getModuleName(),sysDictName.getMark()); + } public void saveOrUpdate(SysDataDictionaryName sysDictName) { @@ -102,7 +105,9 @@ public class DictService extends BaseService { return dictDao.getDictById(1,id); } - + public void updateDictItem(SysDataDictionaryItem sysDictItem){ + dictDao.updateDictItem(sysDictItem); + } } diff --git a/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java b/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java index a8d92d8fb..ea9719b43 100644 --- a/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java +++ b/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java @@ -21,6 +21,7 @@ import antlr.StringUtils; import com.nis.domain.FunctionServiceDict; import com.nis.domain.Page; +import com.nis.domain.basics.AsnIpCfg; import com.nis.domain.configuration.AppPolicyCfg; import com.nis.domain.configuration.AvFileSampleCfg; import com.nis.domain.configuration.BaseCfg; @@ -176,6 +177,7 @@ public class ConfigSynchronizationService extends BaseService{ List ipList = new ArrayList(); + List asnIpList = new ArrayList(); List strList = new ArrayList(); List complexStrList = new ArrayList(); List numList = new ArrayList(); @@ -183,15 +185,19 @@ public class ConfigSynchronizationService extends BaseService{ maatBean = new ToMaatBean(); configCompileList = new ArrayList(); List compileIds = new ArrayList(); + List asnGroupIds = new ArrayList(); for(CfgIndexInfo cfg:list){ compileIds.add(cfg.getCompileId()); + if(entity.getServiceId().equals(37)||entity.getServiceId().equals(149)){ + asnGroupIds.add(cfg.getUserRegion4()); + } } if(cfgList!=null){ for(Map m:cfgList){ String tableName = m.get("tableName").toString(); if("1".equals(m.get("cfgType"))){ if(tableName.equals("asn_ip_cfg")){ - + asnIpList.addAll(configSynchronizationDao.getAsnIpList(asnGroupIds)); }else{ ipList.addAll(configSynchronizationDao.getIpPortList(tableName, compileIds)); } @@ -215,7 +221,7 @@ public class ConfigSynchronizationService extends BaseService{ numRegionList = new ArrayList(); digestRegionList = new ArrayList(); areaIpRegionList = new ArrayList(); - List list1 = new ArrayList(); + List list1 = new ArrayList(); List list2 = new ArrayList(); List list3 = new ArrayList(); List list4 = new ArrayList(); @@ -268,6 +274,11 @@ public class ConfigSynchronizationService extends BaseService{ list1.add(ip); } } + for(AsnIpCfg ip:asnIpList){ + if(ip.getAsnIpGroup().toString().equals(cfg.getUserRegion4())){//根据组号对应 + list1.add(ip); + } + } for(BaseStringCfg str:strList){ if(str.getCompileId().equals(cfg.getCompileId())){ list2.add(str); @@ -307,11 +318,15 @@ public class ConfigSynchronizationService extends BaseService{ } if(list1.size()>0){ ipList.removeAll(list1); - Map map = cfgConvert(ipRegionList,list1,1,cfg,groupRelationList); - groupRelationList=map.get("groupList"); - ipRegionList=map.get("dstList"); - if(map.get("numRegionList")!=null){ - numRegionList.addAll(map.get("numRegionList")); + if(entity.getServiceId().equals(37)||entity.getServiceId().equals(149)){//asn业务 + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(list1,Constants.VALID_YES,null)); + }else{ + Map map = cfgConvert(ipRegionList,list1,1,cfg,groupRelationList); + groupRelationList=map.get("groupList"); + ipRegionList=map.get("dstList"); + if(map.get("numRegionList")!=null){ + numRegionList.addAll(map.get("numRegionList")); + } } } if(list2.size()>0){ @@ -367,7 +382,7 @@ public class ConfigSynchronizationService extends BaseService{ maatBean.setOpAction(Constants.INSERT_ACTION); String json=gsonToJson(maatBean); //调用服务接口配置全量更新 - ToMaatResult result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED")); + JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED")); } return hasData; } @@ -518,7 +533,7 @@ public class ConfigSynchronizationService extends BaseService{ maatBean.setOpAction(Constants.INSERT_ACTION); String json=gsonToJson(maatBean); //调用服务接口配置全量更新 - ToMaatResult result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED")); + JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED")); } return hasData; } @@ -640,7 +655,7 @@ public class ConfigSynchronizationService extends BaseService{ String json=gsonToJson(newList); logger.info("回调类配置同步:"+json); //调用服务接口同步回调类配置 - ToMaatResult result = ConfigServiceUtil.configSync(json,2,entity.getServiceId(),entity.getTableName(),(hasData?null:"FINISHED")); + JSONObject result = ConfigServiceUtil.configSync(json,2,entity.getServiceId(),entity.getTableName(),(hasData?null:"FINISHED")); // logger.info("回调类配置同步:"+result.getMsg()); return hasData;