⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formhelper.java

📁 OBPM是一个开源
💻 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 + -