@@ -1,5 +1,6 @@ | |||||
package cc.smtweb.system.bpm.web.design.form; | package cc.smtweb.system.bpm.web.design.form; | ||||
import cc.smtweb.framework.core.common.AbstractEnum; | |||||
import cc.smtweb.framework.core.common.SwEnum; | import cc.smtweb.framework.core.common.SwEnum; | ||||
import cc.smtweb.framework.core.common.SwMap; | import cc.smtweb.framework.core.common.SwMap; | ||||
import cc.smtweb.framework.core.db.cache.ModelTableCache; | import cc.smtweb.framework.core.db.cache.ModelTableCache; | ||||
@@ -39,9 +40,9 @@ public class ModelFormHelper { | |||||
public static final String OPT_PAGE = "page"; | public static final String OPT_PAGE = "page"; | ||||
/** | /** | ||||
* 获取页面的pageName,格式:module.name | * 获取页面的pageName,格式:module.name | ||||
* | |||||
* @param form | * @param form | ||||
* @return | * @return | ||||
*/ | */ | ||||
@@ -490,37 +491,46 @@ public class ModelFormHelper { | |||||
field.put("name", pdf.name); | field.put("name", pdf.name); | ||||
field.put("label", pdf.label); | field.put("label", pdf.label); | ||||
field.put("required", pdf.isFieldNotNull()); | field.put("required", pdf.isFieldNotNull()); | ||||
field.put("widget", 0); | |||||
final SwEnum.DataTypeBean dtb = SwEnum.DataType.instance.getByValue(pdf.dataType); | final SwEnum.DataTypeBean dtb = SwEnum.DataType.instance.getByValue(pdf.dataType); | ||||
if (dtb != null) { | if (dtb != null) { | ||||
field.put("maxlength", dtb.dataLength); | field.put("maxlength", dtb.dataLength); | ||||
field.put("editor", dtb.editor); | |||||
if (pdf.link > 0) { | |||||
long widget = getFieldCtrl(pdf.link); | |||||
if (widget > 0) { | |||||
setWidget.add(widget); | |||||
field.put("widget", widget); | |||||
field.put("widgetText", ModelFormCache.getInstance().getText(widget)); | |||||
} | |||||
} | |||||
} else { | } else { | ||||
field.put("maxlength", 0); | field.put("maxlength", 0); | ||||
field.put("editor", SwEnum.EditorType.INPUT.value); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* 计算字段适用控件 | |||||
* | |||||
* @param tableId | |||||
* @return | |||||
* 页面设计时,返回的字段信息,带控件 | |||||
* @param table | |||||
* @param field | |||||
* @param col | |||||
*/ | */ | ||||
public static long getFieldCtrl(long tableId) { | |||||
Set<ModelForm> set = ModelFormCache.getInstance().getListByTable(tableId, SwEnum.FormType.WIDGET.value); | |||||
if (set == null || set.isEmpty()) return 0L; | |||||
public static void buildFieldInfo(ModelTable table, ModelField field, SwMap col) { | |||||
col.put("name", field.getName()); | |||||
col.put("dataType", field.getDataType()); | |||||
col.put("null", field.getNotNull()); | |||||
col.put("default", field.getDefaultValue()); | |||||
col.put("title", field.getTitle()); | |||||
col.put("link", field.getLink()); | |||||
col.put("table", table.getId()); | |||||
col.put("table_text", table.getTitle()); | |||||
SwEnum.DataTypeBean dtb = SwEnum.DataType.instance.getByValue(field.getDataType()); | |||||
col.put("editor", dtb != null ? dtb.editor: SwEnum.EditorType.INPUT.value); | |||||
if (field.getLink() == 0L) return; | |||||
Set<ModelForm> set = ModelFormCache.getInstance().getListByTable(table.getId(), SwEnum.FormType.WIDGET.value); | |||||
if (set == null || set.isEmpty()) return; | |||||
ModelForm form = set.iterator().next(); | ModelForm form = set.iterator().next(); | ||||
return (form != null) ? form.getEntityId(): 0L; | |||||
if (form == null) return; | |||||
col.put("widget", form.getId()); | |||||
col.put("widgetText", form.getTitle()); | |||||
SwMap opts = form.getOpts(); | |||||
if (opts != null) { | |||||
col.put("editor", SwEnum.WidgetType.getEditor(opts.readString("widgetType"))); | |||||
} | |||||
} | } | ||||
/*//js文件的路径 | /*//js文件的路径 | ||||
@@ -28,6 +28,7 @@ import java.util.List; | |||||
@SwService | @SwService | ||||
public class ModelFormService extends AbstractCompService { | public class ModelFormService extends AbstractCompService { | ||||
private final static String TYPE_CODE = "type_code"; | private final static String TYPE_CODE = "type_code"; | ||||
@Override | @Override | ||||
protected AbstractHandler createHandler(String type) { | protected AbstractHandler createHandler(String type) { | ||||
switch (type) { | switch (type) { | ||||
@@ -149,16 +150,11 @@ public class ModelFormService extends AbstractCompService { | |||||
col.put("name", colName); | col.put("name", colName); | ||||
ModelField field = table.findField(colName); | ModelField field = table.findField(colName); | ||||
if (field != null) { | if (field != null) { | ||||
col.put("dataType", field.getDataType()); | |||||
col.put("null", field.getNotNull()); | |||||
col.put("default", field.getDefaultValue()); | |||||
col.put("title", field.getTitle()); | |||||
col.put("link", field.getLink()); | |||||
col.put("table", table.getId()); | |||||
col.put("table_text", table.getTitle()); | |||||
ModelFormHelper.buildFieldInfo(table, field, col); | |||||
} else { | } else { | ||||
SwEnum.DataTypeBean dtb = SwEnum.DataType.getBySqlType(metaData.getColumnType(i), metaData.getPrecision(i), metaData.getScale(i)); | SwEnum.DataTypeBean dtb = SwEnum.DataType.getBySqlType(metaData.getColumnType(i), metaData.getPrecision(i), metaData.getScale(i)); | ||||
col.put("dataType", dtb.value); | col.put("dataType", dtb.value); | ||||
col.put("editor", dtb.editor); | |||||
} | } | ||||
fields.add(col); | fields.add(col); | ||||
} | } | ||||
@@ -170,6 +166,21 @@ public class ModelFormService extends AbstractCompService { | |||||
} | } | ||||
} | } | ||||
public R loadFieldCfg(@SwBody SwMap params, UserSession us) { | |||||
long tableId = params.readLong("tableId"); | |||||
if (tableId <= 0L) return R.error("没有传入的Table!"); | |||||
ModelTable table = ModelTableCache.getInstance().get(tableId); | |||||
if (table == null) return R.error("没有找到表定义信息(table=" + tableId + ")!"); | |||||
List<SwMap> ret = new ArrayList<>(); | |||||
for (ModelField field : table.getFields()) { | |||||
SwMap col = new SwMap(2); | |||||
ModelFormHelper.buildFieldInfo(table, field, col); | |||||
ret.add(col); | |||||
} | |||||
return R.success(ret); | |||||
} | |||||
//加载模板定义 | //加载模板定义 | ||||
public R loadTmpls(@SwBody SwMap params, UserSession us) { | public R loadTmpls(@SwBody SwMap params, UserSession us) { | ||||
return R.success(CodeGenerator.getInstance().getModelTemplates()); | return R.success(CodeGenerator.getInstance().getModelTemplates()); | ||||
@@ -152,7 +152,7 @@ public class DynPageSaveHandler extends AbstractDynPageHandler { | |||||
EntityDao<DefaultEntity> dao = DbEngine.getInstance().findDao(table.getName()); | EntityDao<DefaultEntity> dao = DbEngine.getInstance().findDao(table.getName()); | ||||
DefaultEntity bean; | DefaultEntity bean; | ||||
if (id <= 0) { | |||||
if (id <= 0L) { | |||||
bean = dao.createBean(); | bean = dao.createBean(); | ||||
bean.setIsNew(true); | bean.setIsNew(true); | ||||
//暂时不考虑list保存的情况 | //暂时不考虑list保存的情况 | ||||
@@ -34,13 +34,13 @@ public class FlowHelper { | |||||
//是否我的待办任务 | //是否我的待办任务 | ||||
public static boolean isMyWaitedTask(long task_id, long user_id) { | public static boolean isMyWaitedTask(long task_id, long user_id) { | ||||
return DbEngine.getInstance().isExists("select 1 from " + EntityHelper.getSchemaTableName(Candidate.ENTITY_NAME) + | return DbEngine.getInstance().isExists("select 1 from " + EntityHelper.getSchemaTableName(Candidate.ENTITY_NAME) + | ||||
" where task_id=? and user_id=?", task_id, user_id); | |||||
" where cnd_tsk_id=? and cnd_user_id=?", task_id, user_id); | |||||
} | } | ||||
public static boolean isMySubmitTask(long task_id, long user_id) { | public static boolean isMySubmitTask(long task_id, long user_id) { | ||||
return DbEngine.getInstance().isExists("select 1 from " + EntityHelper.getSchemaTableName(TaskRel.ENTITY_NAME) + | return DbEngine.getInstance().isExists("select 1 from " + EntityHelper.getSchemaTableName(TaskRel.ENTITY_NAME) + | ||||
" r inner join " + EntityHelper.getSchemaTableName(Task.ENTITY_NAME) + " t on t.task_id = r.before_task_bid\n" + | |||||
" where r.task_id=? and t.handler=?", task_id, user_id); | |||||
" r inner join " + EntityHelper.getSchemaTableName(Task.ENTITY_NAME) + " t on t.tsk_id = r.trl_src_task_id\n" + | |||||
" where r.trl_dst_task_id=? and t.tsk_handler=?", task_id, user_id); | |||||
} | } | ||||
/** | /** | ||||
@@ -310,12 +310,12 @@ public class FlowInstance { | |||||
*/ | */ | ||||
public void delete() { | public void delete() { | ||||
getProcInstDao().deleteEntity(procInst); | getProcInstDao().deleteEntity(procInst); | ||||
getTaskDao().deleteEntity("where bill_id=?", procInst.getId()); | |||||
getCandidateDao().deleteEntity("where bill_id=?", procInst.getId()); | |||||
getCareDao().deleteEntity("where bill_id=?", procInst.getId()); | |||||
getCommentDao().deleteEntity("where bill_id=?", procInst.getId()); | |||||
getSignDao().deleteEntity("where bill_id=?", procInst.getId()); | |||||
getTaskRelDao().deleteEntity("where bill_id=?", procInst.getId()); | |||||
getTaskDao().deleteEntity("where tsk_pri_id=?", procInst.getId()); | |||||
getCandidateDao().deleteEntity("where cnd_pri_id=?", procInst.getId()); | |||||
getCareDao().deleteEntity("where cr_pri_id=?", procInst.getId()); | |||||
getCommentDao().deleteEntity("where cmt_pri_id=?", procInst.getId()); | |||||
getSignDao().deleteEntity("where sgn_pri_id=?", procInst.getId()); | |||||
getTaskRelDao().deleteEntity("where trl_pri_id=?", procInst.getId()); | |||||
} | } | ||||
/** | /** | ||||
@@ -260,6 +260,12 @@ public interface SwEnum { | |||||
public static StrEnumBean COMBOGRID = instance.addEnum("combogrid", "下拉表格"); | public static StrEnumBean COMBOGRID = instance.addEnum("combogrid", "下拉表格"); | ||||
public static StrEnumBean COMBOTREE = instance.addEnum("combotree", "下拉树"); | public static StrEnumBean COMBOTREE = instance.addEnum("combotree", "下拉树"); | ||||
public static StrEnumBean CUSTOM = instance.addEnum("custom", "自定义"); | public static StrEnumBean CUSTOM = instance.addEnum("custom", "自定义"); | ||||
public static String getEditor(String type) { | |||||
if (TREE.value.equals(type) || COMBOTREE.value.equals(type)) return EditorType.TREE.value; | |||||
if (COMBOGRID.value.equals(type)) return EditorType.COMBO.value; | |||||
return EditorType.INPUT.value; | |||||
} | |||||
} | } | ||||
/** | /** | ||||