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; /** * 配置全量同步 * @author zhangwei * */ @Controller @RequestMapping("${adminPath}/config/synchronization") public class ConfigSynchronizationController extends BaseController { /** * @param cmd 0为取消同步,1为同步 * 下发同步命令 */ @RequestMapping(value = {"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 ""; } /** * 下发同步配置 */ @RequestMapping(value = {"send"}) public void send(Model model,HttpServletRequest request,HttpServletResponse response){ int status = 1; try { configSynchronizationService.send(request,response,null); } 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; }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 ""; } }