package com.nis.web.controller.configuration; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import com.nis.domain.Page; import com.nis.domain.ServiceConfigInfo; import com.nis.domain.configuration.AreaIpCfg; import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.main.ConvertTool; import com.nis.util.Constants; import com.nis.web.controller.BaseController; /** * 增强字符串相关配置控制类 * @author dell * */ @Controller @RequestMapping("${adminPath}/cfg/complex") public class ComplexStringCfgController extends BaseController{ @RequestMapping(value = {"list"}) @RequiresPermissions(value={"cfg:complex:view"}) public String cfgList(Model model,Integer audit,String cfgName,@ModelAttribute("cfg")ComplexkeywordCfg cfg,HttpServletRequest request,HttpServletResponse response) { model.addAttribute("cfgName", cfgName); model.addAttribute("audit", audit); if(cfg!=null){ Integer serviceId=cfg.getServiceId(); logger.info("servcice id is "+serviceId); if(serviceId!=null){ model.addAttribute("serviceId", serviceId); ServiceConfigInfo serviceConfigInfo=serviceConfigInfoService.findSysServiceConfigInfo(serviceId); if(serviceConfigInfo!=null){ String tableName=serviceConfigInfo.getTableName(); if(!StringUtils.isBlank(tableName)){ logger.info("table name is "+tableName); cfg.setTableName(tableName); Page searchPage=new Page(request,response,"r"); String addWhrere=null; if(audit==Constants.CFG_PAGE){// addWhrere="r.is_audit in ("+Constants.AUDIT_NOT_YET+","+Constants.AUDIT_NO+")"; }else if(audit==Constants.AUDIT_PAGE){ addWhrere="r.is_audit in ("+Constants.AUDIT_NOT_YET+","+Constants.AUDIT_YES+")"; } if(addWhrere!=null){ if(StringUtils.isNotBlank(searchPage.getWhere())){ searchPage.setWhere(searchPage.getWhere()+" AND "+addWhrere); }else{ searchPage.setWhere(addWhrere); } } Page page = complexStringCfgService.findPage(searchPage, cfg); model.addAttribute("page", page); model.addAttribute("action", cfg.getAction()); model.addAttribute("tableName", tableName); initPageCondition(model); } }else{ logger.error("未获取到正确的serviceId"); } } } return "/cfg/complexCfgList"; } @RequestMapping(value = {"form"}) @RequiresPermissions(value={"cfg:complex:add"}) public String cfgForm(int action,String cfgName,Integer serviceId,Model model) { model.addAttribute("cfgName", cfgName); model.addAttribute("action", action); model.addAttribute("serviceId", serviceId); model.addAttribute("audit", Constants.CFG_PAGE); logger.info("sercice id is "+serviceId); ServiceConfigInfo serviceConfigInfo=serviceConfigInfoService.findSysServiceConfigInfo(serviceId); if(serviceConfigInfo!=null){ String tableName=serviceConfigInfo.getTableName(); if(!StringUtils.isBlank(tableName)){ logger.info("table name is "+tableName); String className=complexStringCfgService.getClassName(tableName); logger.info("class name is "+className); String packageName=ComplexkeywordCfg.class.getPackage().getName(); try { //通过反射获得ComplexkeywordCfg的子类的实例,并调用子类的initDefaultValue初始化默认值 Class clazz=Class.forName(packageName+"."+className); ComplexkeywordCfg cfg=(ComplexkeywordCfg)clazz.newInstance(); cfg.setTableName(tableName); cfg.initDefaultValue(); cfg.setAction(action); //监测缺省不需要区域管控 if(action==Constants.ACTION_DJ){ cfg.setIsAreaEffective(0); } cfg.setServiceId(serviceId); model.addAttribute("_cfg", cfg); model.addAttribute("tableName", tableName); initFormCondition(model); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { // TODO Auto-generated catch block logger.error("打开新增IP窗口失败",e); e.printStackTrace(); } } } return "/cfg/complexCfgForm"; } @RequestMapping(value = {"updateForm"}) @RequiresPermissions(value={"cfg:complex:edit"}) public String updateStringCfgForm(String tableName,int action,int compileId,String cfgName,Integer serviceId,Model model) { model.addAttribute("cfgName", cfgName); model.addAttribute("serviceId", serviceId); model.addAttribute("action", action); model.addAttribute("tableName", tableName); model.addAttribute("audit", Constants.CFG_PAGE); try{ if(StringUtils.isBlank(tableName)){ ServiceConfigInfo serviceConfigInfo=serviceConfigInfoService.findSysServiceConfigInfo(serviceId); if(serviceConfigInfo!=null){ tableName=serviceConfigInfo.getTableName(); } } logger.info("table name is "+tableName); ComplexkeywordCfg searchBean=new ComplexkeywordCfg(); searchBean.setCompileId(compileId); searchBean.setTableName(tableName); ComplexkeywordCfg cfg=complexStringCfgService.get(searchBean); model.addAttribute("_cfg", cfg); model.addAttribute("tableName", tableName); initUpdateFormCondition(model,cfg); }catch(Exception e){ logger.error("发生异常", e); } return "/cfg/complexCfgForm"; } /** * * addStringCfg(新增IP配置) * (这里描述这个方法适用条件 – 可选) * @return *String * @exception * @since 1.0.0 */ @RequestMapping(value = {"saveOrUpdateCfg"}) @RequiresPermissions(value={"cfg:complex:add","cfg:complex:edit"},logical=Logical.OR) public String saveOrUpdateStringCfg(String cfgName,Model model, ComplexkeywordCfg cfg,String areaCfgIds) { model.addAttribute("cfgName",cfgName); model.addAttribute("cfgType","complex"); model.addAttribute("audit", Constants.CFG_PAGE); model.addAttribute("serviceId",cfg.getServiceId()); model.addAttribute("action",cfg.getAction()); logger.info("saveOrUpdateStringCfg loaded"); try { setSaveOrUpdateProps(model,cfg,areaCfgIds); } catch (Exception e) { // TODO Auto-generated catch block logger.error("保存失败!",e); addMessage(model,"save_failed"); } return "/cfg/resultPage"; } /** * * auditStringCfg(审核IP配置) * (这里描述这个方法适用条件 – 可选) * @return *String * @exception * @since 1.0.0 */ @RequestMapping(value = {"audit"}) @RequiresPermissions(value={"cfg:complex:audit"}) public String auditStringCfg(String cfgName,int serviceId,int isAudit,int action,String tableName,String ids,Model model) { model.addAttribute("cfgName", cfgName); model.addAttribute("audit", Constants.AUDIT_PAGE); model.addAttribute("cfgType", "complex"); model.addAttribute("serviceId", serviceId); model.addAttribute("action", action); try{ String maatTable=null; ServiceConfigInfo serviceConfigInfo=serviceConfigInfoService.findSysServiceConfigInfo(serviceId); if(serviceConfigInfo!=null){ if(StringUtils.isBlank(tableName)){ tableName=serviceConfigInfo.getTableName(); } maatTable=serviceConfigInfo.getMaatTable(); } if(StringUtils.isNotBlank(ids)){ List beans=complexStringCfgService.getList(tableName,ids); List auditBeans=new ArrayList<>(); List auditAreaBeans=new ArrayList<>(); Date date=new Date(); for(ComplexkeywordCfg bean:beans){ ComplexkeywordCfg auditBean=new ComplexkeywordCfg(); auditBean.setTableName(tableName); auditBean.setCfgId(bean.getCfgId()); bean.setTableName(tableName); int audit=bean.getIsAudit().intValue(); if(audit==Constants.AUDIT_YES&&isAudit!=Constants.AUDIT_NOT_YES){ logger.error("审核通过的配置只能取消审核通过!"); addMessage(model, "audit_failed"); return "/cfg/resultPage"; }else{ auditBean.setAuditorId(bean.getCurrentUser().getId()); auditBean.setAuditTime(date); auditBean.setIsAudit(isAudit); bean.setAuditorId(bean.getCurrentUser().getId()); bean.setAuditTime(date); bean.setIsAudit(isAudit); if(isAudit==Constants.AUDIT_NOT_YES){//取消审核通过,设置有效标志为0 auditBean.setIsValid(Constants.VALID_NO); bean.setIsValid(Constants.VALID_NO); }else if(isAudit==Constants.AUDIT_YES){//审核通过,设置有效标志为1 auditBean.setIsValid(Constants.VALID_YES); bean.setIsValid(Constants.VALID_YES); } List areaCfg=ipCfgService.getAreaCfgByCompileId(bean.getCompileId()); for(AreaIpCfg c:areaCfg){ c.setTableName(AreaIpCfg.getTablename()); c.setAuditorId(c.getCurrentUser().getId()); c.setAuditTime(date); c.setIsAudit(isAudit); if(isAudit==Constants.AUDIT_NOT_YES){//取消审核通过,设置有效标志为0 c.setIsValid(Constants.VALID_NO); }else if(isAudit==Constants.AUDIT_YES){//审核通过,设置有效标志为1 c.setIsValid(Constants.VALID_YES); } } bean.setAreaCfg(areaCfg); auditAreaBeans.addAll(areaCfg); } auditBeans.add(auditBean); } complexStringCfgService.auditStringCfg(isAudit,auditBeans,auditAreaBeans,beans); } addMessage(model,"audit_success"); }catch(Exception e){ logger.error("发生异常",e); addMessage(model,"audit_failed"); } return "/cfg/resultPage"; } /** * * auditStringCfg(删除IP配置,逻辑删除) * (这里描述这个方法适用条件 – 可选) * @return *String * @exception * @since 1.0.0 */ @RequestMapping(value = {"delete"}) @RequiresPermissions(value={"cfg:complex:delete"}) public String deleteStringCfg(String tableName,int action,String ids,String cfgName,Integer serviceId,Model model) { model.addAttribute("serviceId", serviceId); model.addAttribute("cfgName", cfgName); model.addAttribute("action", action); model.addAttribute("cfgType","complex"); model.addAttribute("audit", Constants.CFG_PAGE); try{ if(StringUtils.isBlank(tableName)){ ServiceConfigInfo serviceConfigInfo=serviceConfigInfoService.findSysServiceConfigInfo(serviceId); if(serviceConfigInfo!=null){ tableName=serviceConfigInfo.getTableName(); } } List complexCfgs=new ArrayList(); List areaCfgs=new ArrayList(); Date date =new Date(); if(StringUtils.isNotBlank(ids)){ for(String compileIdStr:ids.split(",")){ if(StringUtils.isNotBlank(compileIdStr)){ List areaCfg=ipCfgService.getAreaCfgByCompileId(Integer.parseInt(compileIdStr)); if(areaCfg!=null&&areaCfg.size()>0){ for(AreaIpCfg c:areaCfg){ c.setTableName(AreaIpCfg.getTablename()); c.setEditorId(c.getCurrentUser().getId()); c.setEditTime(date); } } areaCfgs.addAll(areaCfg); ComplexkeywordCfg complexCfg=new ComplexkeywordCfg(); complexCfg.setCompileId(Integer.parseInt(compileIdStr)); complexCfg.setTableName(tableName); complexCfg.setEditorId(complexCfg.getCurrentUser().getId()); complexCfg.setEditTime(date); complexCfg.setIsValid(Constants.VALID_DEL); complexCfgs.add(complexCfg); } } } complexStringCfgService.deleteStringCfg(complexCfgs,areaCfgs); addMessage(model,"delete_success"); }catch(Exception e){ logger.error("删除失败", e); addMessage(model,"delete_failed"); } return "/cfg/resultPage"; } /** * * getCompileId(获取编译ID) * (这里描述这个方法适用条件 – 可选) * @return *long * @exception * @since 1.0.0 */ protected long getCompileId(ComplexkeywordCfg cfg){ long compileId=0l; try { compileId = cfg.getCompileId()==null?new ConvertTool().getCompileId():cfg.getCompileId(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return compileId; } }