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 fc2a9bd0a..9129432b2 100644 --- a/src/main/java/com/nis/web/controller/configuration/ConfigSynchronizationController.java +++ b/src/main/java/com/nis/web/controller/configuration/ConfigSynchronizationController.java @@ -1,5 +1,6 @@ package com.nis.web.controller.configuration; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -9,11 +10,13 @@ import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; +import org.apache.commons.httpclient.util.DateUtil; 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.beust.jcommander.internal.Maps; import com.nis.domain.FunctionServiceDict; import com.nis.domain.Page; import com.nis.domain.SysDataDictionaryItem; @@ -23,6 +26,7 @@ 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.DateUtils; import com.nis.util.DictUtils; import com.nis.util.StringUtil; import com.nis.web.controller.BaseController; @@ -37,12 +41,16 @@ import com.nis.web.service.BaseService; @RequestMapping("${adminPath}/config/synchronization") public class ConfigSynchronizationController extends BaseController { + @RequestMapping(value = {"configSyncInfo"}) + public String configSyncInfo(Model model){ + return "/sys/configSyncInfo"; + } /** * @param cmd 0为取消同步,1为同步 * 下发同步命令 */ - @RequestMapping(value = {"cmd"}) - public String cmd(Model model,Integer cmd,HttpServletRequest request,HttpServletResponse response){ + @RequestMapping(value = {"configSync"}) + public String configSync(Model model,Integer cmd,HttpServletRequest request,HttpServletResponse response){ Map map = new HashMap(); map.put("syncStatus", cmd); JSONObject result = ConfigServiceUtil.configSyncCmd(BaseService.gsonToJson(map)); @@ -52,10 +60,13 @@ public class ConfigSynchronizationController extends BaseController { sysDictName.setMark("currrent_sync_status"); List dictList = dictService.findDicByName(sysDictName); if(!StringUtil.isEmpty(dictList)){ - List itemList = dictList.get(0).getDictItemList(); + SysDataDictionaryName dict = dictList.get(0); + List itemList = dict.getDictItemList(); if(!StringUtil.isEmpty(itemList)){ SysDataDictionaryItem item = itemList.get(0); + item.setDictionaryId(dict.getId().intValue()); item.setItemValue("0");//0为开始同步 + item.setItemDesc("最近一次同步时间:"+DateUtils.formatDateTime(new Date()));//记录本次同步时间 dictService.updateDictItem(item); //删除字典缓存 CacheUtils.remove(Constants.CACHE_DICT_MAP); @@ -66,8 +77,7 @@ public class ConfigSynchronizationController extends BaseController { } } - - return ""; + return "/sys/configSyncInfo"; } /** @@ -75,34 +85,34 @@ public class ConfigSynchronizationController extends BaseController { */ @RequestMapping(value = {"send"}) public void send(Model model,HttpServletRequest request,HttpServletResponse response){ - int status = 1; + int status = 0; try { configSynchronizationService.send(request,response,null); + status = 1; } catch (NoSuchFieldException e) { e.printStackTrace(); - status = 0; } catch (SecurityException e) { e.printStackTrace(); - status = 0; } catch (IllegalArgumentException e) { e.printStackTrace(); - status = 0; } catch (IllegalAccessException e) { e.printStackTrace(); - status = 0; } catch (ClassNotFoundException e) { e.printStackTrace(); - status = 0; + }catch (Exception e) { + e.printStackTrace(); }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(); + SysDataDictionaryName dict = dictList.get(0); + List itemList = dict.getDictItemList(); if(!StringUtil.isEmpty(itemList)){ SysDataDictionaryItem item = itemList.get(0); - item.setItemValue("-1");//下发过程中失败 + item.setDictionaryId(dict.getId().intValue()); + item.setItemValue("-2");//界面组织数据失败 dictService.updateDictItem(item); //删除字典缓存 CacheUtils.remove(Constants.CACHE_DICT_MAP); @@ -110,10 +120,9 @@ public class ConfigSynchronizationController extends BaseController { } Map map = new HashMap(); map.put("syncStatus", 1); - JSONObject result = ConfigServiceUtil.configSyncCmd(BaseService.gsonToJson(map));//取消 - if(result.get("status").equals(200)){//取消下发成功 - - } + JSONObject result = ConfigServiceUtil.configSyncCmd(BaseService.gsonToJson(map));//取消同步 + }else{ + } } } @@ -122,33 +131,42 @@ public class ConfigSynchronizationController extends BaseController { */ @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); + public Map getStatus(Model model){ + String currentStatus = DictUtils.getDictLabel("currrent_sync_status", "status","0"); + String successStatus = DictUtils.getDictCode("config_sync_status", "finish","3"); + String serverFailStatus = DictUtils.getDictCode("config_sync_status", "serverFail","-1"); + String failStatus = DictUtils.getDictCode("config_sync_status", "fail","-2"); + Map map = Maps.newHashMap(); + if(!currentStatus.equals(successStatus) && !currentStatus.equals(failStatus) && !currentStatus.equals(serverFailStatus)){ + JSONObject result = ConfigServiceUtil.configSyncStatus();//获取同步状态 + if(result.get("status").equals(200)){ + List> list = result.getJSONArray("data"); + if(!StringUtil.isEmpty(list)){ + 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); + } + } - } } } + }else{ + map.put("status",currentStatus); } - return ""; + return map; } } diff --git a/src/main/resources/sql/20181130/update_config_sync_data b/src/main/resources/sql/20181130/update_config_sync_data new file mode 100644 index 000000000..0a54940ec --- /dev/null +++ b/src/main/resources/sql/20181130/update_config_sync_data @@ -0,0 +1,8 @@ +UPDATE `sys_menu` SET `id`='1169', `parent_id`='2', `parent_ids`='0,1,2,', `code`='config_sync', `name`='配置同步', `sort`='5030', `href`='/config/synchronization/configSyncInfo', `target`='', `icon`='', `is_show`='1', `permission`='', `create_by`='1', `create_date`='2018-11-23 15:12:26', `update_by`='1', `update_date`='2018-11-30 18:04:19', `remarks`='', `del_flag`='1', `menu_bg`=NULL, `quick_action`='0', `is_top`='0', `function_id`=NULL WHERE (`id`='1169'); +delete from sys_data_dictionary_item where dictionary_id=141; +INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3148', '0', 'start', '开始', '0', '1', '1', '141'); +INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3149', '1', 'init', '初始化', '0', '1', '1', '141'); +INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3150', '2', 'doing', '进行中', '0', '1', '1', '141'); +INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3151', '3', 'finish', '完成', '0', '1', '1', '141'); +INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3152', '-1', 'serverFail', '服务端同步失败', '0', '1', '1', '141'); +INSERT INTO `sys_data_dictionary_item` (`id`, `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3153', '-2', 'fail', '界面端同步失败', '0', '1', '1', '141'); diff --git a/src/main/webapp/WEB-INF/views/sys/configSyncInfo.jsp b/src/main/webapp/WEB-INF/views/sys/configSyncInfo.jsp new file mode 100644 index 000000000..e57c921e1 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sys/configSyncInfo.jsp @@ -0,0 +1,44 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + + + + +
+
+

+ + ${dict.itemDesc } + +

+

+ + 同步状态: + 开始 + 初始化 + 进行中 + 结束 + 服务端同步失败 + 界面端同步失败 + +

+ +
+
+ + \ No newline at end of file diff --git a/src/main/webapp/static/global/scripts/common.js b/src/main/webapp/static/global/scripts/common.js index 173fa5943..3c3effb6f 100644 --- a/src/main/webapp/static/global/scripts/common.js +++ b/src/main/webapp/static/global/scripts/common.js @@ -1,6 +1,6 @@ $(function(){ // var leff =$("span[class~='le-ca-fo']").attr("data-original-title") - + getConfigSyncStatus(); $("#contentTable").not(".logTb").find("tbody tr").each(function(i){ if($(this).find("input[type='checkbox']").attr("value")==3){ var ids = $(this).find("input").attr("id"); @@ -1551,6 +1551,41 @@ function openHelp(url){ title: "online help", buttons:{ "close":true} }); } +//查询系统当前是否在进行配置同步,如果正在同步,界面不允许配置操作 +function getConfigSyncStatus(){ + var currentStatus = getSyncStatus(); + //3成功,-1服务端同步失败,-2界面端同步失败 + if(currentStatus!=3 && currentStatus!=-1 && currentStatus!=-2){ + $.jBox.defaults = { + id:'syncStatusTip', + zIndex: 9999 + }; + var tipId = top.$.jBox.tip("The system is being maintained and temporarily inaccessible.",'loading',{opacity:0.5,persistent:true}); + var t1 = setInterval(function() { + currentStatus = getSyncStatus(); + alert(currentStatus); + if(currentStatus==3 || currentStatus==-1 || currentStatus==-2){//3表示同步完成,-1表示服务端同步失败,-2表示界面端同步失败 + window.clearInterval(t1); + top.$.jBox.closeTip('syncStatusTip'); + } + },5000); + } +} +function getSyncStatus(){ + //获取当前是否有配置同步任务 + var currentStatus = 3; + var pathName = window.document.location.pathname.substring(0,window.document.location.pathname.lastIndexOf("/nis")+4); + $.ajax({ + type:'get', + async:false, + url:pathName+'/config/synchronization/getStatus', + dataType:"json", + success:function(data){ + currentStatus = data.status; + } + }); + return currentStatus; +} function heightDiv(type){ var hei=document.documentElement.clientHeight; hei=hei-91;