RequestOutDataFormatOperation.jsp
6.52 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<%--接收客户端提交的参数数据,并将其格式转化为创建工作流页面所需要的格式,主要是工作流的数据信息的格式--%>
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.conn.*" %>
<%@ page import="java.util.*,java.sql.Timestamp" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<jsp:useBean id="RecordSet" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="RequestCheckUser" class="weaver.workflow.request.RequestCheckUser" scope="page"/>
<jsp:useBean id="ResourceComInfo" class="weaver.hrm.resource.ResourceComInfo" scope="page"/>
<jsp:useBean id="CustomerInfoComInfo" class="weaver.crm.Maint.CustomerInfoComInfo" scope="page" />
<jsp:useBean id="WorkflowComInfo" class="weaver.workflow.workflow.WorkflowComInfo" scope="page" />
<jsp:useBean id="RequestDataPost" class="weaver.workflow.request.RequestDataPost" scope="page" />
<%
//获得工作流的基本信息
String workflowid = Util.null2String(request.getParameter("workflowid")); //必填项
//从参数中获得用户信息,因为客户端提交的POST请求并不支持session
int userid = Util.getIntValue(request.getParameter("userid")); //必填项
String logintype = Util.null2String(request.getParameter("logintype")); //必填项
//工作流请求的名称,也就是工作流显示页面中的说明字段,这个字段为必填字段
String requestname = Util.null2String(request.getParameter("requestname")); //必填项
//请求解别,也就是工作流显示页面上的(正常 主页 标题)选项
String requestlevel = Util.null2String(request.getParameter("requestlevel")); //必填项
//得到用户的名称
String username = "";
if(logintype.equals("1"))
username = ResourceComInfo.getResourcename(""+userid);
if(logintype.equals("2"))
username = CustomerInfoComInfo.getCustomerInfoname(""+userid);
//检查用户是否有创建权限
RequestCheckUser.setUserid(userid);
RequestCheckUser.setWorkflowid(Util.getIntValue(workflowid,0));
RequestCheckUser.setLogintype(logintype);
RequestCheckUser.checkUser();
int hasright=RequestCheckUser.getHasright();
//如果没有权限那么向返回的内容写入false字符串,标识创建失败
if(hasright==0){
//out.println("false:没有创建权限");
//return;
}
String nodeid= "" ;
String formid= "" ;
String isbill="0";
//查询该工作流的表单id,是否是单据(0否,1是)
RecordSet.executeProc("workflow_Workflowbase_SByID",workflowid);
if(RecordSet.next()){
formid = Util.null2String(RecordSet.getString("formid"));
isbill = ""+Util.getIntValue(RecordSet.getString("isbill"),0);
}
//因为这能创建表单,所以如果此类型是单据的话,那么返回错误信息
if(isbill.equals("1")){
out.print("1");
return;
}
//查询该工作流的当前节点id (即改工作流的创建节点 )
RecordSet.executeProc("workflow_CreateNode_Select",workflowid);
if(RecordSet.next()) nodeid = Util.null2String(RecordSet.getString(1)) ;
//对不同的模块来说,可以定义自己相关的内容,作为请求默认值,比如将 docid 赋值,作为该请求的默认文档
//默认的值可以赋多个,中间用逗号格开
String prjid = Util.null2String(request.getParameter("prjid"));
String docid = Util.null2String(request.getParameter("docid"));
String crmid = Util.null2String(request.getParameter("crmid"));
String hrmid = Util.null2String(request.getParameter("hrmid"));
if(hrmid.equals("") && logintype.equals("1")) hrmid = "" + userid ;
if(crmid.equals("") && logintype.equals("2")) crmid = "" + userid ;
//获得当前的日期和时间
Calendar today = Calendar.getInstance();
String currentdate = Util.add0(today.get(Calendar.YEAR), 4) + "-" +
Util.add0(today.get(Calendar.MONTH) + 1, 2) + "-" +
Util.add0(today.get(Calendar.DAY_OF_MONTH), 2) ;
String currenttime = Util.add0(today.get(Calendar.HOUR_OF_DAY), 2) + ":" +
Util.add0(today.get(Calendar.MINUTE), 2) + ":" +
Util.add0(today.get(Calendar.SECOND), 2) ;
%>
<%
//存储字段名称和字段id的映射
//存储主字段映射
ArrayList fieldids = new ArrayList();
ArrayList fieldNames = new ArrayList();
//存储明细字段映射
ArrayList detailFieldids = new ArrayList();
ArrayList detailFieldNames = new ArrayList();
//得到主字段数据
String selectSql = "SELECT a.fieldid, b.fieldname FROM workflow_formfield a, workflow_formdict b WHERE a.fieldid=b.id and (a.isdetail<>'1' or a.isdetail is null) and a.formid="+formid;
RecordSet.executeSql(selectSql);
while(RecordSet.next()){
fieldids.add(RecordSet.getString(1));
fieldNames.add(RecordSet.getString(2));
}
//得到明细字段数据
selectSql = "SELECT a.fieldid, b.fieldname FROM workflow_formfield a, workflow_formdictdetail b WHERE a.fieldid=b.id and a.isdetail='1' and a.formid="+formid;
RecordSet.executeSql(selectSql);
while(RecordSet.next()){
detailFieldids.add(RecordSet.getString(1));
detailFieldNames.add(RecordSet.getString(2));
}
//设置创建工作流需要的必要的参数
RequestDataPost.setParam("userid",""+userid);
RequestDataPost.setParam("logintype",logintype);
RequestDataPost.setParam("src","submit");
RequestDataPost.setParam("iscreate","1");
RequestDataPost.setParam("workflowid",workflowid);
RequestDataPost.setParam("requestlevel",requestlevel);
RequestDataPost.setParam("formid",formid);
RequestDataPost.setParam("isbill","0");
RequestDataPost.setParam("nodeid",nodeid);
RequestDataPost.setParam("nodetype","0");
RequestDataPost.setParam("requestname",requestname);
RequestDataPost.setParam("remark","<br>"+username+" "+currentdate+" "+currenttime);
//转化主字段的参数名称为内部数据工作流需要的名称格式
String fieldValue = "";
for(int i=0; i<fieldNames.size(); i++){
if((fieldValue = request.getParameter("field_"+fieldNames.get(i))) != null){
RequestDataPost.setParam("field"+fieldids.get(i),fieldValue);
}
}
//得到明细数据的行数
int nodesnum = Util.getIntValue(request.getParameter("nodesnum"));
RequestDataPost.setParam("nodesnum",""+nodesnum);
//转化明细字段的参数名称为内部数据工作流需要的名称格式
for(int i=0; i<nodesnum; i++){
for(int j=0; j<detailFieldNames.size(); j ++){
if((fieldValue = request.getParameter("field_"+detailFieldNames.get(j)+"_"+i)) != null){
RequestDataPost.setParam("field"+detailFieldids.get(j)+"_"+i,fieldValue);
}
}
}
String serverPage = "http://"+request.getServerName()+"/workflow/request/RequestOutOperation.jsp";
out.print(RequestDataPost.doPost(serverPage));
%>