genFormSave.jsp
9.15 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
158
159
160
161
162
163
164
165
166
167
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*,weaver.hrm.pm.domain.*"%>
<%@ page import="weaver.workflow.workflow.WorkflowBillComInfo"%>
<%@ page import="weaver.conn.RecordSetTrans,org.json.JSONObject"%>
<%@ page import="weaver.general.Util,weaver.hrm.User,weaver.hrm.HrmUserVarify"%>
<%@ page import="weaver.systeminfo.SystemEnv"%>
<%@page import="weaver.hrm.common.database.dialect.DialectUtil"%>
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="dateUtil" class="weaver.common.DateUtil" scope="page" />
<jsp:useBean id="strUtil" class="weaver.common.StringUtil" scope="page" />
<jsp:useBean id="RecordSetTrans" class="weaver.conn.RecordSetTrans" scope="page" />
<jsp:useBean id="FormManager" class="weaver.workflow.form.FormManager" scope="page"/>
<jsp:useBean id="BillComInfo" class="weaver.workflow.workflow.BillComInfo" scope="page" />
<jsp:useBean id="LabelComInfo" class="weaver.systeminfo.label.LabelComInfo" scope="page" />
<jsp:useBean id="stateProcFieldsManager" class="weaver.hrm.pm.manager.HrmStateProcFieldsManager" scope="page" />
<%
User user=HrmUserVarify.getUser(request, response);
if(user==null) return;
JSONObject jsonInfo=new JSONObject();
int field006 = strUtil.parseToInt(request.getParameter("field006"), 0);
boolean isoracle = rs.getDBType().equals("oracle") ;
boolean issqlserver = rs.getDBType().equals("sqlserver");
String formname = strUtil.vString(request.getParameter("formName"));
formname = formname.replaceAll("<","<").replaceAll(">",">").replaceAll("'","''");
formname = Util.toHtmlForSplitPage(formname);
rs.executeSql("select COUNT(*) from (select t2.labelname from workflow_bill t left join htmllabelinfo t2 on t.namelabel = t2.indexid where t2.labelname = '"+formname+"' union all select formname from workflow_formbase where formname = '"+formname+"') t");
if(rs.next() && rs.getInt(1) > 0){
String errorLabel = SystemEnv.getHtmlLabelName(83791, user.getLanguage());
jsonInfo.put("errmsg", errorLabel);
out.print(jsonInfo.toString());
return;
}
String formdes = strUtil.vString(request.getParameter("formdes"));
formdes = formdes.replaceAll("<","<").replaceAll(">",">").replaceAll("'","''");
formdes = Util.toHtmlForSplitPage(formdes);
int subcompanyid = Util.getIntValue(request.getParameter("subcompanyid"),-1);
int subCompanyId3 = Util.getIntValue(request.getParameter("subcompanyid3"),-1);
int formid1 = FormManager.getNewFormId();
String formtable_main = "formtable_main_"+formid1*(-1);
if(formid1 < -1) {
boolean success = false;
RecordSetTrans.setAutoCommit(false);
try{
int namelabelid = -1;
if(issqlserver) RecordSetTrans.executeSql("select indexid from HtmlLabelInfo where labelname='"+formname+"' collate Chinese_PRC_CS_AI and languageid="+user.getLanguage());
else RecordSetTrans.executeSql("select indexid from HtmlLabelInfo where labelname='"+formname+"' and languageid="+user.getLanguage());
if(RecordSetTrans.next()) namelabelid = RecordSetTrans.getInt("indexid");//如果表单名称在标签库中存在,取得标签id
else{
namelabelid = FormManager.getNewIndexId(RecordSetTrans);//生成新的标签id
if(namelabelid!=-1){//更新标签库
RecordSetTrans.executeSql("delete from HtmlLabelIndex where id="+namelabelid);
RecordSetTrans.executeSql("delete from HtmlLabelInfo where indexid="+namelabelid);
RecordSetTrans.executeSql("INSERT INTO HtmlLabelIndex values("+namelabelid+",'"+formname+"')");
RecordSetTrans.executeSql("INSERT INTO HtmlLabelInfo values("+namelabelid+",'"+formname+"',7)");
RecordSetTrans.executeSql("INSERT INTO HtmlLabelInfo values("+namelabelid+",'"+formname+"',8)");
RecordSetTrans.executeSql("INSERT INTO HtmlLabelInfo values("+namelabelid+",'"+formname+"',9)");
}
}
int minSubId = -1;
if(subcompanyid==-1){//分权分部的取得。如果页面没有,则首先从分权设置的默认机构取得,如果默认机构没有设置则取所有分部中id最小的那个分部。
RecordSetTrans.executeSql("select dftsubcomid from SystemSet");
if(RecordSetTrans.next()) subcompanyid = Util.getIntValue(RecordSetTrans.getString("dftsubcomid"),-1);
if(subcompanyid==-1){
RecordSetTrans.executeSql("select min(id) as id from HrmSubCompany");
if(RecordSetTrans.next()) {
minSubId = subcompanyid = RecordSetTrans.getInt("id");
}
}
}
if(subCompanyId3==-1){//分权分部的取得。如果页面没有,则首先从分权设置的默认机构取得,如果默认机构没有设置则取所有分部中id最小的那个分部。
RecordSetTrans.executeSql("select fmdftsubcomid,dftsubcomid from SystemSet");
if(RecordSetTrans.next()){
subCompanyId3 = Util.getIntValue(RecordSetTrans.getString("fmdftsubcomid"),-1);
if(subCompanyId3 == -1) subCompanyId3 = Util.getIntValue(RecordSetTrans.getString("dftsubcomid"),-1);
}
if(subCompanyId3 == -1){
if(minSubId == -1) {
RecordSetTrans.executeSql("select min(id) as id from HrmSubCompany");
if(RecordSetTrans.next()) subCompanyId3 = RecordSetTrans.getInt("id");
} else {
subCompanyId3 = minSubId;
}
}
}
RecordSetTrans.executeSql("insert into workflow_bill(id,namelabel,tablename,detailkeyfield,formdes,subcompanyid,subCompanyId3,from_module_) values("+formid1+",'"+namelabelid+"','"+formtable_main+"','mainid','"+formdes+"','"+subcompanyid+"','"+subCompanyId3+"','hrm_mf')");
FormManager.createMainForm(formid1,formtable_main);
/**
if(isoracle|| DialectUtil.isMySql(rs.getDBType()) ){//创建表单主表,明细表的创建在新建字段的时候如果有明细字段则创建明细表
RecordSetTrans.executeSql("create table " + formtable_main + "(id integer primary key not null, requestId integer)");
}else{
RecordSetTrans.executeSql("create table " + formtable_main + "(id int IDENTITY(1,1) primary key CLUSTERED, requestId integer)");
}
**/
RecordSetTrans.commit();
/**
if(isoracle){
rs.executeSql("create sequence "+formtable_main+"_Id start with 1 increment by 1 nomaxvalue nocycle nocache");
rs.setChecksql(false);
rs.executeSql("CREATE OR REPLACE TRIGGER "+formtable_main+"_Id_Trigger before insert on "+formtable_main+" for each row begin select "+formtable_main+"_Id.nextval into :new.id from dual; end;");
}
**/
LabelComInfo.addLabeInfoCache(String.valueOf(namelabelid));
BillComInfo.addBillCache(""+formid1);
WorkflowBillComInfo workflowBillComInfo=new WorkflowBillComInfo();
workflowBillComInfo.addWorkflowBillCache(String.valueOf(formid1));
success = true;
}catch(Exception exception){
exception.printStackTrace();
success = false;
RecordSetTrans.rollback();
}
//根据已有表单新建表单,需要把原表单的信息复制过来
if(success){
int oldformid = Util.getIntValue(request.getParameter("oldformid"), 0);
if(oldformid != 0){
int detachable=Util.getIntValue(String.valueOf(session.getAttribute("detachable")),0);
FormManager.setFormInfoByTemplate(formid1, oldformid,0,user);
}
}
RecordSetTrans = new RecordSetTrans();
RecordSetTrans.setAutoCommit(false);
HrmStateProcSet setBean = new HrmStateProcSet();
setBean.setField006(field006);
List list = stateProcFieldsManager.find("[map]field001:"+setBean.getBillId()+";languageid:"+user.getLanguage());
//生成主表字段
String isDecimal = "number\\((\\d+),(\\d+)\\)" ;
try{
HrmStateProcFields bean = null;
String fieldname = "";
String fielddbtype = "";
int height = 0;
for(int i=0; i<list.size(); i++){
bean = (HrmStateProcFields)list.get(i);
fieldname = bean.getField002();
fielddbtype = bean.getField004();
if(isoracle){
if("text".equalsIgnoreCase(fielddbtype)) {
fielddbtype = "varchar2(4000)";
} else if(fielddbtype.indexOf("varchar(")!=-1) {
fielddbtype = fielddbtype.replace("varchar(", "varchar2(");
}
}else if(DialectUtil.isMySql(rs.getDBType())){
fielddbtype = fielddbtype.replaceFirst(isDecimal,"decimal($1,$2)") ;
fielddbtype = fielddbtype.replace("number","bigint").replace("varchar2(","varchar(") ;
}
RecordSetTrans.executeSql("alter table "+formtable_main+" add "+fieldname+" "+fielddbtype);
if(bean.getField005() == 2){
height = 4;
}
String insertsql="INSERT INTO workflow_billfield(billid,fieldname,fieldlabel,fielddbtype,fieldhtmltype,type,dsporder,viewtype,detailtable,textheight,textheight_2,childfieldid,imgwidth,imgheight) VALUES ("+formid1+",'"+fieldname+"','"+bean.getField003()+"','"+fielddbtype+"','"+bean.getField005()+"','"+bean.getField006()+"','"+bean.getField009()+"',"+0+",'','"+height+"','',null,null,null)";
RecordSetTrans.executeSql(insertsql);
}
RecordSetTrans.commit();
}catch(Exception e){
String errorLabel = SystemEnv.getHtmlLabelName(83793, user.getLanguage());
jsonInfo.put("errmsg", errorLabel);
out.print(jsonInfo.toString());
RecordSetTrans.rollback();
return;
}
}
jsonInfo.put("formId", formid1);
jsonInfo.put("formName", formname);
out.print(jsonInfo.toString());
%>