📄 formhelper.java
字号:
package cn.myapps.core.dynaform.form.action;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import cn.myapps.base.action.BaseHelper;
import cn.myapps.base.action.ParamsTable;
import cn.myapps.core.dynaform.PermissionType;
import cn.myapps.core.dynaform.document.ejb.Document;
import cn.myapps.core.dynaform.document.ejb.DocumentProcess;
import cn.myapps.core.dynaform.document.ejb.Item;
import cn.myapps.core.dynaform.form.ejb.CheckboxField;
import cn.myapps.core.dynaform.form.ejb.Form;
import cn.myapps.core.dynaform.form.ejb.FormField;
import cn.myapps.core.dynaform.form.ejb.FormProcess;
import cn.myapps.core.dynaform.form.ejb.InputField;
import cn.myapps.core.dynaform.form.ejb.RadioField;
import cn.myapps.core.dynaform.form.ejb.SelectField;
import cn.myapps.core.dynaform.form.ejb.TextareaField;
import cn.myapps.core.macro.runner.JavaScriptRunner;
import cn.myapps.core.page.ejb.PageProcess;
import cn.myapps.core.user.action.WebUser;
import cn.myapps.core.user.ejb.UserProcess;
import cn.myapps.core.workflow.engine.StateMachineHelper;
import cn.myapps.core.workflow.storage.definition.ejb.BillDefiProcess;
import cn.myapps.core.workflow.storage.definition.ejb.BillDefiVO;
import cn.myapps.util.ProcessFactory;
import cn.myapps.util.web.DWRHtmlUtils;
public class FormHelper extends BaseHelper {
public FormHelper() throws ClassNotFoundException {
super(ProcessFactory.createProcess(FormProcess.class));
}
public FormHelper(PageProcess process) {
super(process);
}
public Collection get_formList(String application) throws Exception {
FormProcess fp = (FormProcess) ProcessFactory
.createProcess(FormProcess.class);
return fp.getFormsByModule(this.getModuleid(), application);
}
public Collection get_searchFormList(String application) throws Exception {
FormProcess fp = (FormProcess) ProcessFactory
.createProcess(FormProcess.class);
return fp.getFormsByModule(this.getModuleid(), application);
}
public Collection get_searchFormListByApplicationOrModule(String application)
throws Exception {
FormProcess fp = (FormProcess) ProcessFactory
.createProcess(FormProcess.class);
if (moduleid != null && moduleid.length() > 0)
return fp.getFormsByModule(moduleid, application);
else
return fp.getSearchFormsByApplication(applicationid, application);
}
public Collection get_subFormList(String application) throws Exception {
FormProcess fp = (FormProcess) ProcessFactory
.createProcess(FormProcess.class);
return fp.getFormsByModule(this.getModuleid(), application);
}
public Collection get_normalFormList(String application) throws Exception {
FormProcess fp = (FormProcess) ProcessFactory
.createProcess(FormProcess.class);
return fp.getFormsByModule(this.getModuleid(), application);
}
public static Form get_FormById(String formid) throws Exception {
FormProcess fp = (FormProcess) ProcessFactory
.createProcess(FormProcess.class);
return (Form) fp.doView(formid);
}
public Map get_FormMod(String formid) throws Exception {
Map map = new HashMap();
FormProcess fp = (FormProcess) ProcessFactory
.createProcess(FormProcess.class);
Form form = (Form) fp.doView(formid);
if (form != null) {
map.put("modId", form.getModule().getId());
}
return map;
}
public String creatFormfieldOptions(String selectFieldName, String formid,
String def) throws Exception {
HashMap map = new LinkedHashMap();
Form form = get_FormById(formid);
map.put("", "Select");
if (form != null && form.getFieldsIncludeTab() != null) {
for (Iterator iter = form.getFieldsIncludeTab().iterator(); iter
.hasNext();) {
FormField field = (FormField) iter.next();
map.put(field.getName(), field.getName());
}
}
return DWRHtmlUtils.createOptions(map, selectFieldName, def);
}
public String creatFormfieldOptionsByApplicationAndModule(
String selectFieldName, String appid, String moduleid,
String formid, String def) throws Exception {
HashMap map = new HashMap();
map.put("none", "Select");
if (appid != null && moduleid != null && appid.length() > 0
&& moduleid.length() > 0 && !appid.equals("none")
&& !moduleid.equals("none")) {
Form form = get_FormById(formid);
if (form != null && form.getFields() != null) {
for (Iterator iter = form.getFields().iterator(); iter
.hasNext();) {
FormField field = (FormField) iter.next();
map.put(field.getName(), field.getName());
}
}
}
return DWRHtmlUtils.createOptions(map, selectFieldName, def);
}
public Map getFields(String formid) throws Exception {
LinkedHashMap map = new LinkedHashMap();
map.put("", "Please Choose");
FormProcess fp = (FormProcess) ProcessFactory
.createProcess(FormProcess.class);
Form form = (Form) fp.doView(formid);
if (form != null) {
Collection colls = form.deepSearchFields(form.getFields());
for (Iterator iter = colls.iterator(); iter.hasNext();) {
FormField field = (FormField) iter.next();
map.put(field.getName(), field.getName());
}
}
return map;
}
public Map getFilterScriptFields(String formid) throws Exception {
LinkedHashMap map = new LinkedHashMap();
map.put("", "Please Choose");
FormProcess fp = (FormProcess) ProcessFactory
.createProcess(FormProcess.class);
Form form = (Form) fp.doView(formid);
if (form != null) {
Collection colls = form.deepSearchFields(form.getFields());
for (Iterator iter = colls.iterator(); iter.hasNext();) {
FormField field = (FormField) iter.next();
map.put(field.getName(), field.getName());
}
map.put("$formname", "$formname");
}
return map;
}
public String refresh(String formid, String actfield, String docid,
String userid, Map valuesMap, String flowid) throws Exception {
long start = System.currentTimeMillis();
// try {
// //PersistenceUtils.getSessionSignal().sessionSignal++;
UserProcess up = (UserProcess) ProcessFactory
.createProcess(UserProcess.class);
WebUser user = up.getWebUserInstance(userid);
System.out.println("Refresh Form SETP-3.0 times->"
+ (System.currentTimeMillis() - start) + "(ms)");
Form form = get_FormById(formid);
boolean isEdit = StateMachineHelper.isDocEditUser(docid, flowid, user);
System.out.println("Refresh Form SETP-3.5 times->"
+ (System.currentTimeMillis() - start) + "(ms)");
ParamsTable paramsTable = new ParamsTable();
paramsTable.putAll(valuesMap);
DocumentProcess dp = (DocumentProcess) ProcessFactory
.createProcess(DocumentProcess.class);
Document doc = (Document) dp.doView(docid);
System.out.println("Refresh Form SETP-4.0 times->"
+ (System.currentTimeMillis() - start) + "(ms)");
doc = form.createDocument(doc, paramsTable, false, user);
System.out.println("Refresh Form SETP-4.1 times->"
+ (System.currentTimeMillis() - start) + "(ms)");
JavaScriptRunner runner = JavaScriptRunner.getInstance();
String applicationid = user.getApplicationid();
if (applicationid == null || applicationid.trim().length() <= 0) {
applicationid = paramsTable.getParameterAsString("application");
}
runner.initBSFManager(doc, paramsTable, user, null, applicationid);
String text = "";
System.out.println("Refresh Form SETP-4.2 times->"
+ (System.currentTimeMillis() - start) + "(ms)");
if (flowid != null) { // 根据流程定义设置doc权限
BillDefiProcess bp = (BillDefiProcess) ProcessFactory
.createProcess(BillDefiProcess.class);
BillDefiVO flowVO = (BillDefiVO) bp.doView(flowid);
System.out.println("Refresh Form SETP-4.3 times->"
+ (System.currentTimeMillis() - start) + "(ms)");
form.setFieldpermlist(doc, flowVO, user);
}
System.out.println("Refresh Form SETP-5 times->"
+ (System.currentTimeMillis() - start) + "(ms)");
// 更新页面元素的值
Collection fields = form.deepSearchFields(form.getFields());
if (fields != null) {
for (Iterator iter = fields.iterator(); iter.hasNext();) {
FormField field = (FormField) iter.next();
String divid = field.getName() + "_divid";
// int displayType = PermissionType.MODIFY;
// if (form.getType() == Form.FORM_TYPE_NORMAL) {
// if (form.isEditmodal()) {
// displayType = doc.getFieldPermList()
// .checkPermission(field);
// } else {
// displayType = PermissionType.DISABLED;
// }
// }
if (field.isCalculateOnRefresh()) {
// 只有 具有选项脚本的Field 以及 ItemValue与通过值脚本计算出的的结果不同的项目才需要刷新
boolean flag = false;
if (!field.getName().equals(actfield)) {
if (field instanceof CheckboxField) {
String optsScript = ((CheckboxField) field)
.getOptionsScript();
if (optsScript != null
&& optsScript.trim().length() > 0) {
flag = true;
}
} else if (field instanceof RadioField) {
String optsScript = ((RadioField) field)
.getOptionsScript();
if (optsScript != null
&& optsScript.trim().length() > 0) {
flag = true;
}
} else if (field instanceof SelectField) {
String optsScript = ((SelectField) field)
.getOptionsScript();
if (optsScript != null
&& optsScript.trim().length() > 0) {
flag = true;
}
} else if (field instanceof InputField
|| field instanceof TextareaField) {
String fieldName = field.getName();
if (fieldName != null
&& valuesMap.containsKey(fieldName)) {
String value = (String) valuesMap
.get(fieldName);
Item item = doc.findItem(fieldName);
if (item.getValue() != null
&& value != null
&& !value.equals(item.getValue()
.toString())) {
flag = true;
}
}
}
}
Item item = doc.findItem(field.getName());
if (flag || item.isChanged()) {
String fieldHtml = "";
if (!item.isHidden()) {
if (!field.runHiddenScript(runner, doc)) {
if (!isEdit) {
field
.setDisplayType(PermissionType.DISABLED);
}
fieldHtml = field.toHtmlTxt(paramsTable, user,
runner, doc);
fieldHtml = fieldHtml
.replaceAll("\"", "\\\\\"");
text += "document.all('" + divid
+ "').innerHTML=\"" + fieldHtml + "\";";
}
}
}
}
}
}
System.out.println("Refresh Form total times->"
+ (System.currentTimeMillis() - start) + "(ms)");
return text;
// } finally {
// //PersistenceUtils.getSessionSignal().sessionSignal--;
// PersistenceUtils.closeSession();
// }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -