package com.ycsoft.sysmanager.web.action.system; import java.lang.reflect.Type; import java.util.Date; import java.util.List; import org.springframework.stereotype.Controller; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.ycsoft.beans.config.TTabDefine; import com.ycsoft.beans.system.SItemDefine; import com.ycsoft.beans.system.SItemvalue; import com.ycsoft.beans.system.SSysChange; import com.ycsoft.commons.abstracts.BaseAction; import com.ycsoft.commons.constants.SysChangeType; import com.ycsoft.commons.exception.ActionException; import com.ycsoft.commons.helper.CollectionHelper; import com.ycsoft.commons.helper.StringHelper; import com.ycsoft.daos.helper.BeanHelper; import com.ycsoft.sysmanager.component.system.ParamComponent; import com.ycsoft.sysmanager.web.commons.interceptor.WebOptr; @Controller public class ParamAction extends BaseAction { /** * */ private static final long serialVersionUID = 824517072041831504L; private ParamComponent paramComponent; //搜索关键字 private String query; private String itemKey; private SItemDefine itemDefine; private String records; private TTabDefine tabDefine; private String old_table_name; private String old_column_name; /** * 查询参数定义 * @return * @throws Exception */ public String queryItemDefines() throws Exception{ getRoot().setRecords(paramComponent.queryItemDefines(query)); return JSON_RECORDS; } /** * 字段名参数查询 * @return * @throws Exception */ public String queryTabDefine() throws Exception{ getRoot().setPage(paramComponent.queryTabDefine(start, limit,query)); return JSON_PAGE; } public String saveTabDefine() throws Exception{ paramComponent.saveTabDefine(tabDefine,old_table_name,old_column_name); return JSON; } public String deleteTabDefine() throws Exception{ paramComponent.deleteTabDefine(old_table_name,old_column_name); return JSON; } /** * 查询参数配置 * @return * @throws Exception */ public String queryItemValues() throws Exception{ getRoot().setRecords(paramComponent.queryItemValues(itemKey)); return JSON_RECORDS; } /** * 保存或修改参数定义 * @return * @throws Exception */ public String saveItemDefine() throws Exception{ SItemDefine oldItem = paramComponent.queryItemDefineForChangeInfo(itemDefine.getItem_key()); paramComponent.saveItemDefine(itemDefine); SItemDefine newItem = paramComponent.queryItemDefineForChangeInfo(itemDefine.getItem_key()); saveChanges(oldItem, newItem, null, null,1); return JSON; } /** * 删除一条参数定义记录 * @return * @throws Exception */ public String deleteItemDefine() throws Exception{ paramComponent.deleteItemDefine(itemKey); return JSON; } /** * 保存参数配置 * @return * @throws Exception */ public String saveItemValues() throws Exception{ List<SItemvalue> valueList = null; if(StringHelper.isNotEmpty(records)){ Type type = new TypeToken<List<SItemvalue>>(){}.getType(); Gson gson = new Gson(); valueList = gson.fromJson(records, type); } List<SItemvalue> oldList = paramComponent.queryItemValues(itemKey); paramComponent.saveItemValues(valueList,itemKey); List<SItemvalue> newList = paramComponent.queryItemValues(itemKey); SItemDefine newItem = paramComponent.queryItemDefineForChangeInfo(itemKey); saveChanges(null,newItem,oldList,newList,2); return JSON; } private void saveChanges(SItemDefine oldItem, SItemDefine newItem,List<SItemvalue> oldList, List<SItemvalue> newList,int type) throws ActionException{ boolean valueChangeFlag = oldItem ==null && newItem ==null; boolean defineChangeFlag = CollectionHelper.isEmpty(oldList) && CollectionHelper.isEmpty(newList); if(valueChangeFlag && defineChangeFlag){ throw new ActionException("记录系统参数变更时候,方法接受的参数信息有误!"); } String key = newItem == null ? oldItem.getItem_key():newItem.getItem_key();; String keyDesc = newItem == null ? oldItem.getItem_desc() :newItem.getItem_desc(); String changeDesc = type ==1 ? "系统参数定义" : "系统参数值定义"; String content = null; try{ if(type==1){ content = BeanHelper.beanchange(oldItem, newItem); }else{ content = BeanHelper.listchange(oldList, newList,new String[]{"item_value","item_name","item_idx","show_county_text"}); } if(StringHelper.isNotEmpty(content)){ SSysChange change = new SSysChange(SysChangeType.SYS_PARAM.toString(), paramComponent.getDoneCOde(), key, keyDesc, changeDesc, content, WebOptr.getOptr().getOptr_id(), new Date()); paramComponent.getSSysChangeDao().save(change); } }catch (Exception e) { throw new ActionException(e.getMessage()); } } public ParamComponent getParamComponent() { return paramComponent; } public void setParamComponent(ParamComponent paramComponent) { this.paramComponent = paramComponent; } public String getQuery() { return query; } public void setQuery(String query) { this.query = query; } public String getItemKey() { return itemKey; } public void setItemKey(String itemKey) { this.itemKey = itemKey; } public SItemDefine getItemDefine() { return itemDefine; } public void setItemDefine(SItemDefine itemDefine) { this.itemDefine = itemDefine; } public String getRecords() { return records; } public void setRecords(String records) { this.records = records; } public String getOld_table_name() { return old_table_name; } public void setOld_table_name(String oldTableName) { old_table_name = oldTableName; } public String getOld_column_name() { return old_column_name; } public void setOld_column_name(String oldColumnName) { old_column_name = oldColumnName; } public TTabDefine getTabDefine() { return tabDefine; } public void setTabDefine(TTabDefine tabDefine) { this.tabDefine = tabDefine; } }