`
tj2008wangqing
  • 浏览: 14572 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用反射技术,结构化表单数据(修改流程)

 
阅读更多
修改流程

1.根据共同的属性,把两个大表单分成不同的小model,每个model都是要修改的一块,
  做成要修改的类型:+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| id             | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| name           | varchar(256) | NO   |     |         |                |
| code           | varchar(64)  | NO   |     |         |                |
| desc           | varchar(256) | NO   |     |         |                |
| sort           | tinyint(4)   | NO   |     | 0       |                |
| save_sort      | tinyint(4)   | NO   |     | 0       |                |
| status         | tinyint(4)   | NO   |     | 0       |                |
| persist_class  | varchar(256) | NO   |     | NULL    |                |
| persist_method | varchar(64)  | NO   |     | NULL    |                |
| save_class     | varchar(256) | NO   |     | NULL    |                |
| save_method    | varchar(64)  | NO   |     | NULL    |                |
| page_class     | varchar(255) | NO   |     | NULL    |                |
| page_method    | varchar(64)  | NO   |     | NULL    |                |
| view_class     | varchar(255) | NO   |     | NULL    |                |
| view_method    | varchar(64)  | NO   |     | NULL    |                |
| history_class  | varchar(255) | NO   |     | NULL    |                |
| history_method | varchar(64)  | NO   |     | NULL    |                |
| access_niux    | tinyint(4)   | NO   |     | 0       |                |
| access_manage  | tinyint(4)   | NO   |     | 0       |                |
| access_yunying | tinyint(4)   | NO   |     | 0       |                |
+----------------+--------------+------+-----+---------+----------------+
每个修改类型对应不同的页面展示类,修改类,查看类、历史信息查看类

根据q_data_modify_sort 中定义的页面展示方法page、持久化方法persist、同步线上库方法save。

持久化表:
     mysql> desc q_data_modify_view;
+--------------------+-------------+------+-----+---------+----------------+
| Field              | Type        | Null | Key | Default | Extra          |
+--------------------+-------------+------+-----+---------+----------------+
| id                 | bigint(20)  | NO   | PRI | NULL    | auto_increment |
| process_history_id | bigint(20)  | NO   | MUL | NULL    |                |
| sort_id            | bigint(20)  | NO   |     | NULL    |                |
| deal_id            | bigint(20)  | NO   | MUL | NULL    |                |
| content            | text        | NO   |     | NULL    |                |
| create_date        | datetime    | NO   |     | NULL    |                |
| creator            | bigint(20)  | NO   |     | NULL    |                |
| creator_name       | varchar(64) | NO   |     | NULL    |                |
| is_pass            | tinyint(4)  | NO   |     | 2       |                |
| version            | tinyint(4)  | NO   |     | NULL    |                |
+--------------------+-------------+------+-----+---------+----------------+


1.用到的技术是反射代理:
               /* 1.销售进入修改页面 */
    public String entryDataModifyPage(
            Invocation inv,
            @Param("dealId") Integer dealId,
            @Param("processId") Integer processId,
            @Param("version") Integer version,
            @Param("sortId") Integer sortId) throws Exception {
        inv.addModel("version", version);
        long preTime = System.currentTimeMillis();
        DataModifySort dataModifySort = editService.getDataModifySortBySortId(sortId);
        Object obj = SpringConfigTool.getBean(dataModifySort.getPageClass());
        Method method = obj.getClass().getMethod(dataModifySort.getPageMethod(), Invocation.class,
                Integer.class, Integer.class, Integer.class);
        String ret = (String) method.invoke(obj, inv, dealId, processId, version);
        System.out.println("["+dataModifySort.getName()+"].page cost time ["+(System.currentTimeMillis()-preTime)+"]");
        return ret;
    }


2.序列化
      public String serialize() {
JSONObject obj = JSONObject.fromObject(this);
return obj.toString();
}

public BaseEditObject unSerialize(String json) {
if(json!=null){
JSONObject obj = JSONObject.fromObject(json);
return (BaseEditObject)JSONObject.toBean(obj,BaseEditObject.class);
}
return null; 
}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics