CustomPKVFormDataSave.txt
2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package weaver.formmode.virtualform;
import java.util.*;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
/**
* 表单数据保存 自定义主键策略
*/
public class CustomPKVFormDataSave extends AbstractPKVFormDataSave {
private Object id;
/***
* 生成主键
* @param paramMap
* paramMap包含(但不限于)以下数据
* formid 表单id.
* dataIDMap 页面数据以字段id为键存储的数据对象. 如:[121=张三, 122=男, 123=上海市]
* dataNameMap 页面数据以字段名称为键存储的数据对象. 如:[name=张三, sex=男, address=上海市]
* vFormInfo 表单自身的对象信息. 参见workflow_bill和ModeFormExtend表(几乎包含两个表中所有的列)
* user 当前用户
* @return
*/
public Object generateID(Map<String, Object> paramMap) {
int formid = Util.getIntValue(Util.null2String(paramMap.get("formid"))); //表单id
Map<String, String> dataIDMap = (Map<String, String>)paramMap.get("dataIDMap"); //页面数据以字段id为键存储的数据对象
Map<String, String> dataNameMap = (Map<String, String>)paramMap.get("dataNameMap"); //页面数据以字段名称为键存储的数据对象
Map<String, Object> vFormInfo = (Map<String, Object>)paramMap.get("vFormInfo"); //表单自身的对象信息
String vtablename = Util.null2String(vFormInfo.get("tablename")); //表名称
String vdatasource = Util.null2String(vFormInfo.get("vdatasource")); //数据源名称
String vprimarykey = Util.null2String(vFormInfo.get("vprimarykey")); //主键列名称
//在此处键入代码为id赋值以生成主键
/** 以下代码为示例代码(查找最小的主键值,并减1作为当前主键)
RecordSet rs = new RecordSet();
String sql = "select min("+vprimarykey+") as minid from " + vtablename;
rs.executeSql(sql, vdatasource);
if (rs.next()) {
id = Util.getIntValue(rs.getString("minid")) - 1;
}*/
return id;
}
/***
* 返回主键
* @param paramMap 参见generateID方法的paramMap参数
* @return
*/
public Object returnID(Map<String, Object> paramMap) {
return id;
}
}