增加配置同步信息界面,配置同步过程中,不允许用户操作业务配置。
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.nis.web.controller.configuration;
|
package com.nis.web.controller.configuration;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -9,11 +10,13 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
|
|
||||||
import net.sf.json.JSONObject;
|
import net.sf.json.JSONObject;
|
||||||
|
|
||||||
|
import org.apache.commons.httpclient.util.DateUtil;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
|
import com.beust.jcommander.internal.Maps;
|
||||||
import com.nis.domain.FunctionServiceDict;
|
import com.nis.domain.FunctionServiceDict;
|
||||||
import com.nis.domain.Page;
|
import com.nis.domain.Page;
|
||||||
import com.nis.domain.SysDataDictionaryItem;
|
import com.nis.domain.SysDataDictionaryItem;
|
||||||
@@ -23,6 +26,7 @@ import com.nis.domain.maat.ToMaatResult;
|
|||||||
import com.nis.util.CacheUtils;
|
import com.nis.util.CacheUtils;
|
||||||
import com.nis.util.ConfigServiceUtil;
|
import com.nis.util.ConfigServiceUtil;
|
||||||
import com.nis.util.Constants;
|
import com.nis.util.Constants;
|
||||||
|
import com.nis.util.DateUtils;
|
||||||
import com.nis.util.DictUtils;
|
import com.nis.util.DictUtils;
|
||||||
import com.nis.util.StringUtil;
|
import com.nis.util.StringUtil;
|
||||||
import com.nis.web.controller.BaseController;
|
import com.nis.web.controller.BaseController;
|
||||||
@@ -37,12 +41,16 @@ import com.nis.web.service.BaseService;
|
|||||||
@RequestMapping("${adminPath}/config/synchronization")
|
@RequestMapping("${adminPath}/config/synchronization")
|
||||||
public class ConfigSynchronizationController extends BaseController {
|
public class ConfigSynchronizationController extends BaseController {
|
||||||
|
|
||||||
|
@RequestMapping(value = {"configSyncInfo"})
|
||||||
|
public String configSyncInfo(Model model){
|
||||||
|
return "/sys/configSyncInfo";
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @param cmd 0为取消同步,1为同步
|
* @param cmd 0为取消同步,1为同步
|
||||||
* 下发同步命令
|
* 下发同步命令
|
||||||
*/
|
*/
|
||||||
@RequestMapping(value = {"cmd"})
|
@RequestMapping(value = {"configSync"})
|
||||||
public String cmd(Model model,Integer cmd,HttpServletRequest request,HttpServletResponse response){
|
public String configSync(Model model,Integer cmd,HttpServletRequest request,HttpServletResponse response){
|
||||||
Map<String,Integer> map = new HashMap();
|
Map<String,Integer> map = new HashMap();
|
||||||
map.put("syncStatus", cmd);
|
map.put("syncStatus", cmd);
|
||||||
JSONObject result = ConfigServiceUtil.configSyncCmd(BaseService.gsonToJson(map));
|
JSONObject result = ConfigServiceUtil.configSyncCmd(BaseService.gsonToJson(map));
|
||||||
@@ -52,10 +60,13 @@ public class ConfigSynchronizationController extends BaseController {
|
|||||||
sysDictName.setMark("currrent_sync_status");
|
sysDictName.setMark("currrent_sync_status");
|
||||||
List<SysDataDictionaryName> dictList = dictService.findDicByName(sysDictName);
|
List<SysDataDictionaryName> dictList = dictService.findDicByName(sysDictName);
|
||||||
if(!StringUtil.isEmpty(dictList)){
|
if(!StringUtil.isEmpty(dictList)){
|
||||||
List<SysDataDictionaryItem> itemList = dictList.get(0).getDictItemList();
|
SysDataDictionaryName dict = dictList.get(0);
|
||||||
|
List<SysDataDictionaryItem> itemList = dict.getDictItemList();
|
||||||
if(!StringUtil.isEmpty(itemList)){
|
if(!StringUtil.isEmpty(itemList)){
|
||||||
SysDataDictionaryItem item = itemList.get(0);
|
SysDataDictionaryItem item = itemList.get(0);
|
||||||
|
item.setDictionaryId(dict.getId().intValue());
|
||||||
item.setItemValue("0");//0为开始同步
|
item.setItemValue("0");//0为开始同步
|
||||||
|
item.setItemDesc("最近一次同步时间:"+DateUtils.formatDateTime(new Date()));//记录本次同步时间
|
||||||
dictService.updateDictItem(item);
|
dictService.updateDictItem(item);
|
||||||
//删除字典缓存
|
//删除字典缓存
|
||||||
CacheUtils.remove(Constants.CACHE_DICT_MAP);
|
CacheUtils.remove(Constants.CACHE_DICT_MAP);
|
||||||
@@ -66,8 +77,7 @@ public class ConfigSynchronizationController extends BaseController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return "/sys/configSyncInfo";
|
||||||
return "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -75,34 +85,34 @@ public class ConfigSynchronizationController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@RequestMapping(value = {"send"})
|
@RequestMapping(value = {"send"})
|
||||||
public void send(Model model,HttpServletRequest request,HttpServletResponse response){
|
public void send(Model model,HttpServletRequest request,HttpServletResponse response){
|
||||||
int status = 1;
|
int status = 0;
|
||||||
try {
|
try {
|
||||||
configSynchronizationService.send(request,response,null);
|
configSynchronizationService.send(request,response,null);
|
||||||
|
status = 1;
|
||||||
} catch (NoSuchFieldException e) {
|
} catch (NoSuchFieldException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
status = 0;
|
|
||||||
} catch (SecurityException e) {
|
} catch (SecurityException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
status = 0;
|
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
status = 0;
|
|
||||||
} catch (IllegalAccessException e) {
|
} catch (IllegalAccessException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
status = 0;
|
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
status = 0;
|
}catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}finally{
|
}finally{
|
||||||
if(status==0){
|
if(status==0){
|
||||||
SysDataDictionaryName sysDictName = new SysDataDictionaryName();
|
SysDataDictionaryName sysDictName = new SysDataDictionaryName();
|
||||||
sysDictName.setMark("currrent_sync_status");
|
sysDictName.setMark("currrent_sync_status");
|
||||||
List<SysDataDictionaryName> dictList = dictService.findDicByName(sysDictName);
|
List<SysDataDictionaryName> dictList = dictService.findDicByName(sysDictName);
|
||||||
if(!StringUtil.isEmpty(dictList)){
|
if(!StringUtil.isEmpty(dictList)){
|
||||||
List<SysDataDictionaryItem> itemList = dictList.get(0).getDictItemList();
|
SysDataDictionaryName dict = dictList.get(0);
|
||||||
|
List<SysDataDictionaryItem> itemList = dict.getDictItemList();
|
||||||
if(!StringUtil.isEmpty(itemList)){
|
if(!StringUtil.isEmpty(itemList)){
|
||||||
SysDataDictionaryItem item = itemList.get(0);
|
SysDataDictionaryItem item = itemList.get(0);
|
||||||
item.setItemValue("-1");//下发过程中失败
|
item.setDictionaryId(dict.getId().intValue());
|
||||||
|
item.setItemValue("-2");//界面组织数据失败
|
||||||
dictService.updateDictItem(item);
|
dictService.updateDictItem(item);
|
||||||
//删除字典缓存
|
//删除字典缓存
|
||||||
CacheUtils.remove(Constants.CACHE_DICT_MAP);
|
CacheUtils.remove(Constants.CACHE_DICT_MAP);
|
||||||
@@ -110,10 +120,9 @@ public class ConfigSynchronizationController extends BaseController {
|
|||||||
}
|
}
|
||||||
Map<String,Integer> map = new HashMap();
|
Map<String,Integer> map = new HashMap();
|
||||||
map.put("syncStatus", 1);
|
map.put("syncStatus", 1);
|
||||||
JSONObject result = ConfigServiceUtil.configSyncCmd(BaseService.gsonToJson(map));//取消
|
JSONObject result = ConfigServiceUtil.configSyncCmd(BaseService.gsonToJson(map));//取消同步
|
||||||
if(result.get("status").equals(200)){//取消下发成功
|
}else{
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,33 +131,42 @@ public class ConfigSynchronizationController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@RequestMapping(value = {"getStatus"})
|
@RequestMapping(value = {"getStatus"})
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public String getStatus(Model model){
|
public Map<String,Object> getStatus(Model model){
|
||||||
JSONObject result = ConfigServiceUtil.configSyncStatus();//获取同步状态
|
String currentStatus = DictUtils.getDictLabel("currrent_sync_status", "status","0");
|
||||||
if(result.get("status").equals(200)){
|
String successStatus = DictUtils.getDictCode("config_sync_status", "finish","3");
|
||||||
List<Map<String,Object>> list = result.getJSONArray("data");
|
String serverFailStatus = DictUtils.getDictCode("config_sync_status", "serverFail","-1");
|
||||||
if(!StringUtil.isEmpty(list)){
|
String failStatus = DictUtils.getDictCode("config_sync_status", "fail","-2");
|
||||||
Map<String,Object> map = list.get(0);
|
Map<String,Object> map = Maps.newHashMap();
|
||||||
String status = map.get("status").toString();
|
if(!currentStatus.equals(successStatus) && !currentStatus.equals(failStatus) && !currentStatus.equals(serverFailStatus)){
|
||||||
SysDataDictionaryName sysDictName = new SysDataDictionaryName();
|
JSONObject result = ConfigServiceUtil.configSyncStatus();//获取同步状态
|
||||||
sysDictName.setMark("currrent_sync_status");
|
if(result.get("status").equals(200)){
|
||||||
List<SysDataDictionaryName> dictList = dictService.findDicByName(sysDictName);
|
List<Map<String,Object>> list = result.getJSONArray("data");
|
||||||
if(!StringUtil.isEmpty(dictList)){
|
if(!StringUtil.isEmpty(list)){
|
||||||
SysDataDictionaryName dict = dictList.get(0);
|
map = list.get(0);
|
||||||
List<SysDataDictionaryItem> itemList =dict.getDictItemList();
|
String status = map.get("status").toString();
|
||||||
if(!StringUtil.isEmpty(itemList)){
|
SysDataDictionaryName sysDictName = new SysDataDictionaryName();
|
||||||
SysDataDictionaryItem item = itemList.get(0);
|
sysDictName.setMark("currrent_sync_status");
|
||||||
if(!status.equals(item.getItemValue())){//如果状态不同,则更新状态
|
List<SysDataDictionaryName> dictList = dictService.findDicByName(sysDictName);
|
||||||
item.setDictionaryId(dict.getId().intValue());
|
if(!StringUtil.isEmpty(dictList)){
|
||||||
item.setItemValue(status);
|
SysDataDictionaryName dict = dictList.get(0);
|
||||||
dictService.updateDictItem(item);
|
List<SysDataDictionaryItem> itemList =dict.getDictItemList();
|
||||||
//删除字典缓存
|
if(!StringUtil.isEmpty(itemList)){
|
||||||
CacheUtils.remove(Constants.CACHE_DICT_MAP);
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
8
src/main/resources/sql/20181130/update_config_sync_data
Normal file
8
src/main/resources/sql/20181130/update_config_sync_data
Normal file
@@ -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');
|
||||||
44
src/main/webapp/WEB-INF/views/sys/configSyncInfo.jsp
Normal file
44
src/main/webapp/WEB-INF/views/sys/configSyncInfo.jsp
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||||
|
<%@ include file="/WEB-INF/include/taglib.jsp"%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document) .ready(function() {
|
||||||
|
top.$.jBox.closeTip();
|
||||||
|
$("#cfgFrom").validate({
|
||||||
|
submitHandler : function(form) {
|
||||||
|
top.$.jBox.tip("The system is being maintained and temporarily inaccessible.",'loading',{opacity:0.5,persistent:true});
|
||||||
|
form.submit();
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<form id="cfgFrom" action="${ctx}/config/synchronization/configSync?cmd=1" method="post" class="form-horizontal">
|
||||||
|
<div class="page-content">
|
||||||
|
<h3 class="page-title">
|
||||||
|
<c:forEach items="${fns:getDictList('currrent_sync_status') }" var="dict">
|
||||||
|
${dict.itemDesc }
|
||||||
|
</c:forEach>
|
||||||
|
</h3>
|
||||||
|
<h2 class="page-title">
|
||||||
|
<c:forEach items="${fns:getDictList('currrent_sync_status') }" var="dict">
|
||||||
|
同步状态:
|
||||||
|
<c:if test="${dict.itemValue eq '0' }">开始</c:if>
|
||||||
|
<c:if test="${dict.itemValue eq '1' }">初始化</c:if>
|
||||||
|
<c:if test="${dict.itemValue eq '2' }">进行中</c:if>
|
||||||
|
<c:if test="${dict.itemValue eq '3' }">结束</c:if>
|
||||||
|
<c:if test="${dict.itemValue eq '-1' }">服务端同步失败</c:if>
|
||||||
|
<c:if test="${dict.itemValue eq '-2' }">界面端同步失败</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
</h2>
|
||||||
|
<button id="save" type="submit" class="btn green">
|
||||||
|
配置同步
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
$(function(){
|
$(function(){
|
||||||
// var leff =$("span[class~='le-ca-fo']").attr("data-original-title")
|
// var leff =$("span[class~='le-ca-fo']").attr("data-original-title")
|
||||||
|
getConfigSyncStatus();
|
||||||
$("#contentTable").not(".logTb").find("tbody tr").each(function(i){
|
$("#contentTable").not(".logTb").find("tbody tr").each(function(i){
|
||||||
if($(this).find("input[type='checkbox']").attr("value")==3){
|
if($(this).find("input[type='checkbox']").attr("value")==3){
|
||||||
var ids = $(this).find("input").attr("id");
|
var ids = $(this).find("input").attr("id");
|
||||||
@@ -1551,6 +1551,41 @@ function openHelp(url){
|
|||||||
title: "online help", buttons:{ "close":true}
|
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){
|
function heightDiv(type){
|
||||||
var hei=document.documentElement.clientHeight;
|
var hei=document.documentElement.clientHeight;
|
||||||
hei=hei-91;
|
hei=hei-91;
|
||||||
|
|||||||
Reference in New Issue
Block a user