@@ -52,6 +52,7 @@ public class ModelFactory { | |||
worker.saveForm(bean, listFormChild); | |||
} | |||
//构建模板 | |||
public void buildSaveModel(ModelForm bean) { | |||
BaseModelWorker worker = getWorker(bean); | |||
worker.buildSaveModel(bean); | |||
@@ -1,7 +1,9 @@ | |||
package cc.smtweb.system.bpm.web.engine.dynPage; | |||
import cc.smtweb.framework.core.common.SwEnum; | |||
import cc.smtweb.framework.core.common.SwMap; | |||
import cc.smtweb.framework.core.exception.BizException; | |||
import cc.smtweb.framework.core.exception.SwException; | |||
import cc.smtweb.framework.core.mvc.service.AbstractHandler; | |||
import cc.smtweb.framework.core.session.UserSession; | |||
import cc.smtweb.system.bpm.web.design.form.ModelForm; | |||
@@ -41,6 +43,26 @@ public abstract class AbstractDynPageHandler extends AbstractHandler { | |||
return datasets.findByName(name); | |||
} | |||
//找可编辑卡片数据集 | |||
protected PageDataset findCardDataset(String dsName) { | |||
PageDataset cardDataset = datasets.findByName(dsName); | |||
if (cardDataset == null) throw new SwException("没有找到卡片数据集(" + dsName + ")!"); | |||
if (!SwEnum.DatasetType.FORM.value.equals(cardDataset.type)) {//单表 | |||
throw new SwException("卡片数据集定义错误(" + dsName + ")!"); | |||
} | |||
return cardDataset; | |||
} | |||
//找列表数据集 | |||
protected PageDataset findListDataset(String dsName) { | |||
PageDataset listDataset = datasets.findByName(dsName); | |||
if (listDataset == null) throw new SwException("没有找到列表数据集(" + dsName + ")!"); | |||
if (!SwEnum.DatasetType.LIST.value.equals(listDataset.type)) {//列表 | |||
throw new SwException("列表数据集定义错误(" + dsName + ")!"); | |||
} | |||
return listDataset; | |||
} | |||
//获取第一个,主数据集 | |||
protected PageDataset findMasterDataset() { | |||
return datasets.findMasterDataset(); | |||
@@ -37,6 +37,27 @@ public class DynPageProvider extends AbstractCompProvider { | |||
}); | |||
} | |||
public <T extends DefaultEntity> T loadBean(PageDataset pageDataSet, SwMap filter) { | |||
return doGetData("b_" + pageDataSet.id, () -> { | |||
ModelTable masterTable = ModelTableCache.getInstance().get(pageDataSet.masterTable); | |||
EntityDao<T> dao = DbEngine.getInstance().findDao(masterTable.getName()); | |||
T bean = dao.createBean(); | |||
SqlNamedPara sqlPara = DynPageHelper.buildSelectSql(pageDataSet, filter); | |||
SwMap map = DbEngine.getInstance().queryEntityN(sqlPara.sql, sqlPara.mapParas, SwMap.class); | |||
if (map == null) { | |||
return bean; | |||
//throw new BizException("没有找到指定数据(ds=" + pageDataSet.name + ")"); | |||
} | |||
EntityHelper.loadBeanText(masterTable.getName(), map, sqlPara.mapFieldAlias); | |||
DynPageHelper.setCalcFields(map, pageDataSet); | |||
bean.getData().putAll(map); | |||
return bean; | |||
}); | |||
} | |||
public <T extends DefaultEntity> T loadBean(String tableName, long id) { | |||
return doGetData(tableName + "." + id, () -> { | |||
EntityDao<T> bdao = (EntityDao<T>) DbEngine.getInstance().findDao(tableName); | |||
@@ -3,13 +3,13 @@ package cc.smtweb.system.bpm.web.engine.model.flow.listcard.single; | |||
import cc.smtweb.framework.core.db.vo.ModelTable; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowInstance; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowListener; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleDelHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelDelHandler; | |||
/** | |||
* Created by Akmm at 2022-09-01 15:03 | |||
* 流程删除 | |||
*/ | |||
public class FlowDelHandler extends LCSingleDelHandler implements FlowListener { | |||
public class FlowDelHandler extends ModelDelHandler implements FlowListener { | |||
protected FlowInstance flowInstance; | |||
@Override | |||
@@ -10,24 +10,23 @@ import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowHelper; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowInstance; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowListener; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleHelper; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleLoadHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelHelper; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelLoadHandler; | |||
/** | |||
* Created by Akmm at 2022-08-26 17:15 | |||
* 流程加载 | |||
*/ | |||
public class FlowSingleLoadHandler<T extends DefaultEntity> extends LCSingleLoadHandler<T> implements FlowListener { | |||
public class FlowSingleLoadHandler<T extends DefaultEntity> extends ModelLoadHandler<T> implements FlowListener { | |||
protected FlowInstance flowInstance; | |||
@Override | |||
protected void afterAdd(SwMap ret, T bean) { | |||
protected void afterAdd(SwMap ret) { | |||
super.afterAdd(ret); | |||
flowInstance = FlowInstance.createByBillType(us, this, form.getBillType()); | |||
PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); | |||
bean.setEntityId(flowInstance.getProcInst().getId()); | |||
ret.put(cardDataset.name, DynRetBean.createBean(bean)); | |||
ret.put(ModelHelper.DATASET_NAME_CARD, DynRetBean.createBean(bean)); | |||
flowInstance.setPageRetExtra(ret); | |||
ret.put(FlowHelper.DATASET_NAME_FLOW, DynRetBean.createBean(flowInstance.getProcInst())); | |||
@@ -35,13 +34,13 @@ public class FlowSingleLoadHandler<T extends DefaultEntity> extends LCSingleLoad | |||
} | |||
@Override | |||
public R load() { | |||
SwMap ret = new SwMap(); | |||
protected void load(SwMap ret, SwMap filter) { | |||
//过滤条件 | |||
long id = params.readLong("id"); | |||
long taskId = params.readLong("taskId"); | |||
PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); | |||
PageDataset cardDataset = findCardDataset(ModelHelper.DATASET_NAME_CARD); | |||
T bean = provider.loadBean(cardDataset, id); | |||
ret.put(cardDataset.name, DynRetBean.createBean(bean)); | |||
@@ -51,8 +50,6 @@ public class FlowSingleLoadHandler<T extends DefaultEntity> extends LCSingleLoad | |||
flowInstance.setPageRetExtra(ret); | |||
ret.put(FlowHelper.DATASET_NAME_FLOW, DynRetBean.createBean(flowInstance.getProcInst())); | |||
ret.put(FlowHelper.DATASET_NAME_COMMENT, DynRetBean.createList(SwListData.create(flowInstance.loadComment(), 0))); | |||
afterLoad(ret, bean); | |||
return R.success(ret); | |||
} | |||
@Override | |||
@@ -5,23 +5,22 @@ import cc.smtweb.framework.core.db.impl.DefaultEntity; | |||
import cc.smtweb.framework.core.exception.BizException; | |||
import cc.smtweb.framework.core.mvc.service.SwListData; | |||
import cc.smtweb.framework.core.util.DateUtil; | |||
import cc.smtweb.system.bpm.web.design.form.define.PageDataset; | |||
import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowHelper; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowInstance; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowListener; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleSaveHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelSaveHandler; | |||
/** | |||
* Created by Akmm at 2022-08-26 16:47 | |||
* 带流程的简单卡片之保存 | |||
*/ | |||
public class FlowSingleSaveHandler<T extends DefaultEntity> extends LCSingleSaveHandler<T> implements FlowListener { | |||
public class FlowSingleSaveHandler<T extends DefaultEntity> extends ModelSaveHandler<T> implements FlowListener { | |||
protected FlowInstance flowInstance; | |||
@Override | |||
protected T readBeanFromPage(PageDataset pageDataSet, SwMap pageData) { | |||
T bean = super.readBeanFromPage(pageDataSet, pageData); | |||
protected void readFromPage(SwMap pageData, SwMap filter) { | |||
super.readFromPage(pageData, filter); | |||
long id = params.readLong("id"); | |||
long taskId = params.readLong("taskId"); | |||
@@ -43,18 +42,17 @@ public class FlowSingleSaveHandler<T extends DefaultEntity> extends LCSingleSave | |||
flowInstance.getProcInst().setUrl(getBillUrl()); | |||
} | |||
flowInstance.getProcInst().setBillInfo(getBillInfo()); | |||
return bean; | |||
} | |||
@Override | |||
protected void saveBean(T bean) { | |||
super.saveBean(bean); | |||
protected void doSave() { | |||
super.doSave(); | |||
flowInstance.save(); | |||
} | |||
@Override | |||
protected void afterSave(SwMap ret, T bean) { | |||
super.afterSave(ret, bean); | |||
protected void afterSave(SwMap ret) { | |||
super.afterSave(ret); | |||
flowInstance.setPageRetExtra(ret); | |||
ret.put(FlowHelper.DATASET_NAME_FLOW, DynRetBean.createBean(flowInstance.getProcInst())); | |||
ret.put(FlowHelper.DATASET_NAME_COMMENT, DynRetBean.createList(SwListData.EMPTY)); | |||
@@ -7,9 +7,9 @@ import cc.smtweb.framework.core.common.SwMap; | |||
import cc.smtweb.framework.core.mvc.service.AbstractHandler; | |||
import cc.smtweb.framework.core.mvc.service.IWorker; | |||
import cc.smtweb.framework.core.session.UserSession; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleDelHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleLoadHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleSaveHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelDelHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelLoadHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelSaveHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleService; | |||
/** | |||
@@ -27,17 +27,17 @@ public class FlowSingleService extends LCSingleService { | |||
} | |||
@Override | |||
protected LCSingleSaveHandler getSaveHandler() { | |||
protected ModelSaveHandler getSaveHandler() { | |||
return new FlowSingleSaveHandler(); | |||
} | |||
@Override | |||
protected LCSingleLoadHandler getLoadHandler() { | |||
protected ModelLoadHandler getLoadHandler() { | |||
return new FlowSingleLoadHandler(); | |||
} | |||
@Override | |||
protected LCSingleDelHandler getDelHandler() { | |||
protected ModelDelHandler getDelHandler() { | |||
return new FlowDelHandler(); | |||
} | |||
@@ -11,7 +11,7 @@ import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowHelper; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowInstance; | |||
import cc.smtweb.system.bpm.web.engine.flow.FlowListener; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleHelper; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelHelper; | |||
/** | |||
* Created by Akmm at 2022-09-01 15:03 | |||
@@ -33,7 +33,7 @@ public class FlowTransHandler<T extends DefaultEntity> extends AbstractDynPageHa | |||
private SwMap buildRetData() { | |||
SwMap ret = new SwMap(); | |||
ret.put(LCSingleHelper.DATASET_NAME_CARD, DynRetBean.createBean(bean)); | |||
ret.put(ModelHelper.DATASET_NAME_CARD, DynRetBean.createBean(bean)); | |||
flowInstance.setPageRetExtra(ret); | |||
ret.put(FlowHelper.DATASET_NAME_FLOW, DynRetBean.createBean(flowInstance.getProcInst())); | |||
@@ -52,7 +52,7 @@ public class FlowTransHandler<T extends DefaultEntity> extends AbstractDynPageHa | |||
} | |||
protected void loadBean() { | |||
PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); | |||
PageDataset cardDataset = findCardDataset(ModelHelper.DATASET_NAME_CARD); | |||
bean = provider.loadBean(cardDataset, billId); | |||
} | |||
@@ -1,4 +1,4 @@ | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.single; | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.abshandler; | |||
import cc.smtweb.framework.core.cache.AbstractCache; | |||
import cc.smtweb.framework.core.cache.CacheManager; | |||
@@ -17,7 +17,7 @@ import cc.smtweb.system.bpm.web.engine.dynPage.AbstractDynPageHandler; | |||
* Created by Akmm at 2022/4/21 17:53 | |||
* 删除操作 | |||
*/ | |||
public class LCSingleDelHandler extends AbstractDynPageHandler { | |||
public class ModelDelHandler extends AbstractDynPageHandler { | |||
/** | |||
* 删除指定数据集,入参{pageId, dataset, id} | |||
* | |||
@@ -27,7 +27,7 @@ public class LCSingleDelHandler extends AbstractDynPageHandler { | |||
long id = params.readLong("id"); | |||
if (id == 0L) throw new BizException("没有收到待删除记录Id(" + id + ")!"); | |||
//数据集 | |||
PageDataset pageDataSet = LCSingleHelper.findCardDataset(datasets); | |||
PageDataset pageDataSet = findCardDataset(ModelHelper.DATASET_NAME_CARD); | |||
checkBean(pageDataSet, id); | |||
@@ -0,0 +1,25 @@ | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.abshandler; | |||
import cc.smtweb.framework.core.common.SwEnum; | |||
import cc.smtweb.framework.core.common.SwMap; | |||
import cc.smtweb.framework.core.exception.SwException; | |||
import cc.smtweb.system.bpm.web.design.form.ModelForm; | |||
import cc.smtweb.system.bpm.web.design.form.ModelFormHelper; | |||
import cc.smtweb.system.bpm.web.design.form.define.PageDataset; | |||
import cc.smtweb.system.bpm.web.design.form.define.PageDatasets; | |||
import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; | |||
/** | |||
* Created by Akmm at 2022-08-16 16:07 | |||
* 常量定义 | |||
*/ | |||
public interface ModelHelper { | |||
String DATASET_NAME_LIST = "list"; | |||
String DATASET_NAME_CARD = "card"; | |||
static SwMap buildRetData(String dsName, SwMap data) { | |||
SwMap mapRet = new SwMap(); | |||
mapRet.put(dsName, DynRetBean.createBean(data)); | |||
return mapRet; | |||
} | |||
} |
@@ -1,4 +1,4 @@ | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.single; | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.abshandler; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.common.SwConsts; | |||
@@ -16,49 +16,61 @@ import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; | |||
/** | |||
* Created by Akmm at 2022-08-16 15:43 | |||
*/ | |||
public class LCSingleLoadHandler<T extends DefaultEntity> extends AbstractDynPageHandler { | |||
public class ModelLoadHandler<T extends DefaultEntity> extends AbstractDynPageHandler { | |||
protected T bean; | |||
//新增卡片操作,初始化定义的数据集 | |||
public R add() { | |||
SwMap ret = new SwMap(); | |||
bean = addBean(ret, ModelHelper.DATASET_NAME_CARD); | |||
afterAdd(ret); | |||
return R.success(ret); | |||
} | |||
//创建一个bean,并加到返回对象中 | |||
protected <E extends DefaultEntity> E addBean(SwMap ret, String dsName) { | |||
//返回的数据,以dataset.name为key,查出的结果(bean或list)为value | |||
PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); | |||
PageDataset cardDataset = findCardDataset(dsName); | |||
ModelTable table = cardDataset._getModelTable(); | |||
if (table == null) throw new SwException("卡片主表未找到!"); | |||
final EntityDao<T> dao = DbEngine.getInstance().findDao(table.getName()); | |||
T bean = dao.createBean(us.getUserId()); | |||
bean.setEntityId(DbEngine.getInstance().nextId()); | |||
final EntityDao<E> dao = DbEngine.getInstance().findDao(table.getName()); | |||
ret.put(cardDataset.name, DynRetBean.createBean(bean)); | |||
E entity = dao.createBean(us.getUserId()); | |||
entity.setEntityId(DbEngine.getInstance().nextId()); | |||
afterAdd(ret, bean); | |||
return R.success(ret); | |||
ret.put(dsName, DynRetBean.createBean(entity)); | |||
return entity; | |||
} | |||
//新增初始化 - bean | |||
protected void afterAdd(SwMap ret, T bean) { | |||
} | |||
//加载之后 | |||
protected void afterLoad(SwMap ret, T bean) { | |||
protected void afterAdd(SwMap ret) { | |||
} | |||
public R load() { | |||
SwMap ret = new SwMap(); | |||
//过滤条件 | |||
SwMap filter = params.readMap("filter"); | |||
//对应的数据集定义 | |||
PageDataset cardDataset = LCSingleHelper.findCardDataset(datasets); | |||
load(ret, filter); | |||
return R.success(ret); | |||
} | |||
T bean = provider.loadBean(cardDataset, filter.readLong(SwConsts.NAME_ID)); | |||
ret.put(cardDataset.name, DynRetBean.createBean(bean)); | |||
//从数据库加载bean,并设到返回值 | |||
protected void load(SwMap ret, SwMap filter) { | |||
PageDataset cardDataset = findCardDataset(ModelHelper.DATASET_NAME_CARD); | |||
bean = provider.loadBean(cardDataset, filter.readLong(SwConsts.NAME_ID)); | |||
ret.put(ModelHelper.DATASET_NAME_CARD, DynRetBean.createBean(bean)); | |||
} | |||
afterLoad(ret, bean); | |||
return R.success(ret); | |||
//给子类使用的工具方法:根据数据集配置,读取bean,并加到返回值 | |||
protected <E extends DefaultEntity> E loadBean(SwMap ret, String dsName, SwMap filter) { | |||
PageDataset cardDataset = findCardDataset(dsName); | |||
E bean = provider.loadBean(cardDataset, filter); | |||
ret.put(dsName, DynRetBean.createBean(bean)); | |||
return bean; | |||
} | |||
protected DynPageListHandler getListWorker(SwMap filter, PageDataset pageDataSet) { | |||
DynPageListHandler listHandler = new DynPageListHandler(form.getId(), filter, pageDataSet); | |||
listHandler.init(params, us); | |||
@@ -70,28 +82,34 @@ public class LCSingleLoadHandler<T extends DefaultEntity> extends AbstractDynPag | |||
* | |||
* @return | |||
*/ | |||
public R list() { | |||
protected R list(String dsName) { | |||
//过滤条件 | |||
SwMap filter = params.readMap("filter"); | |||
//对应的数据集定义 | |||
PageDataset pageDataSet = LCSingleHelper.findListDataset(datasets); | |||
PageDataset pageDataSet = findListDataset(dsName); | |||
DynRetBean bean = DynRetBean.createList(getListWorker(filter, pageDataSet).buildListData()); | |||
return R.success(bean); | |||
} | |||
protected R getTotal(String dsName) { | |||
//数据集 | |||
PageDataset pageDataSet = findListDataset(dsName); | |||
//过滤条件 | |||
SwMap filter = params.readMap("filter"); | |||
return getListWorker(filter, pageDataSet).getTotal(); | |||
} | |||
public R list() { | |||
return list(ModelHelper.DATASET_NAME_LIST); | |||
} | |||
/** | |||
* 计算分页数据 | |||
* | |||
* @return | |||
*/ | |||
public R getTotal() { | |||
//数据集 | |||
PageDataset pageDataSet = LCSingleHelper.findListDataset(datasets); | |||
//过滤条件 | |||
SwMap filter = params.readMap("filter"); | |||
return getListWorker(filter, pageDataSet).getTotal(); | |||
return getTotal(ModelHelper.DATASET_NAME_LIST); | |||
} | |||
} |
@@ -1,4 +1,4 @@ | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.single; | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.abshandler; | |||
import cc.smtweb.framework.core.cache.AbstractCache; | |||
import cc.smtweb.framework.core.cache.CacheManager; | |||
@@ -27,64 +27,66 @@ import java.util.Map; | |||
/** | |||
* Created by Akmm at 2022/4/21 17:53 | |||
* 保存操作 | |||
* 模型保存操作 | |||
* 入参:{pageId, data:} | |||
*/ | |||
public class LCSingleSaveHandler<T extends DefaultEntity> extends AbstractDynPageHandler { | |||
private Map<String, List<T>> mapTreeBean = new HashMap<>(); | |||
public class ModelSaveHandler<T extends DefaultEntity> extends AbstractDynPageHandler { | |||
private Map<String, List<? extends DefaultEntity>> mapTreeBean = new HashMap<>(); | |||
protected T bean; | |||
/** | |||
* 保存指定数据集操作,入参:{pageId,dataset:"", data:{form:{},list: {total:0,rows:[]}}, filter:{}} | |||
*/ | |||
public R save() { | |||
//数据集 | |||
String dbName = params.readString("dataset"); | |||
SwMap filter = params.readMap("filter"); | |||
//待保存数据 | |||
SwMap data = params.readMap("data"); | |||
if (data == null) throw new BizException("没有收到待保存的的数据:" + dbName + "!"); | |||
//对应的数据集定义 | |||
PageDataset pageDataSet = LCSingleHelper.findCardDataset(datasets); | |||
//读取待保存的bean | |||
T bean = readBeanFromPage(pageDataSet, data); | |||
if (filter != null && bean.isNew()) {//有过滤条件,将关联的值设上 | |||
setLinkValue(pageDataSet, bean, f -> filter.get(f.name)); | |||
} | |||
checkBean(bean); | |||
if (data == null) throw new BizException("没有收到待保存的的数据!"); | |||
readFromPage(data, filter); | |||
checkValid(); | |||
DbEngine.getInstance().doTrans(new IDbWorker() { | |||
@Override | |||
public void work() { | |||
saveBean(bean); | |||
doSave(); | |||
} | |||
@Override | |||
public void doAfterDbCommit() { | |||
afterCommit(bean); | |||
doAfterCommit(); | |||
} | |||
@Override | |||
public void doAfterDbRollback() { | |||
afterRollback(bean); | |||
doAfterRollback(); | |||
} | |||
}); | |||
bean.removeStatus(); | |||
SwMap ret = LCSingleHelper.buildRetData(pageDataSet.name, bean.getData()); | |||
afterSave(ret, bean); | |||
SwMap ret = ModelHelper.buildRetData(ModelHelper.DATASET_NAME_CARD, bean.getData()); | |||
afterSave(ret); | |||
return R.success(ret); | |||
} | |||
protected void afterSave(SwMap ret, T bean) { | |||
protected void afterSave(SwMap ret) { | |||
} | |||
/** | |||
* 从页面获取待保存的bean | |||
* | |||
* @param pageDataSet | |||
* @param data | |||
* @param pageData | |||
* @return | |||
*/ | |||
protected T readBeanFromPage(PageDataset pageDataSet, SwMap pageData) { | |||
protected void readFromPage(SwMap pageData, SwMap filter) { | |||
//读取待保存的bean | |||
bean = readBeanFromPage(ModelHelper.DATASET_NAME_CARD, pageData, filter); | |||
} | |||
//给子类使用的工具方法:从页面读取一个bean | |||
protected <E extends DefaultEntity> E readBeanFromPage(String dsName, SwMap pageData, SwMap filter) { | |||
//对应的数据集定义 | |||
PageDataset pageDataSet = findCardDataset(dsName); | |||
ModelTable table = ModelTableCache.getInstance().get(pageDataSet.masterTable); | |||
if (table == null) throw new BizException("没有找到待保存的表定义:" + pageDataSet.name); | |||
@@ -94,24 +96,26 @@ public class LCSingleSaveHandler<T extends DefaultEntity> extends AbstractDynPag | |||
if (data == null) throw new BizException("没有找到待保存的表数据:" + pageDataSet.name); | |||
boolean isNew = data.readBool(DefaultEntity.statusKey); | |||
EntityDao<T> dao = DbEngine.getInstance().findDao(table.getName()); | |||
T bean; | |||
EntityDao<E> dao = DbEngine.getInstance().findDao(table.getName()); | |||
E vo; | |||
if (isNew) { | |||
bean = dao.createBean(); | |||
vo = dao.createBean(); | |||
//暂时不考虑list保存的情况 | |||
bean.getData().putAll(data); | |||
vo.getData().putAll(data); | |||
} else { | |||
long id = data.readLong(table.getIdField()); | |||
bean = dao.queryEntity(id); | |||
if (bean == null) { | |||
vo = dao.queryEntity(id); | |||
if (vo == null) { | |||
throw new BizException("没有找到待保存的记录:" + table.getName() + "." + id); | |||
} | |||
//暂时不考虑list保存的情况 | |||
bean.getData().putAll(data); | |||
bean.setIsNew(false); | |||
vo.getData().putAll(data); | |||
vo.setIsNew(false); | |||
} | |||
return bean; | |||
if (filter != null && vo.isNew()) {//有过滤条件,将关联的值设上 | |||
setLinkValue(pageDataSet, vo, f -> filter.get(f.name)); | |||
} | |||
return vo; | |||
} | |||
/** | |||
@@ -119,10 +123,15 @@ public class LCSingleSaveHandler<T extends DefaultEntity> extends AbstractDynPag | |||
* | |||
* @param bean | |||
*/ | |||
protected void checkBean(T bean) { | |||
ModelTable table = ModelTableCache.getInstance().getByName(bean.getTableName()); | |||
protected void checkValid() { | |||
checkValid(bean); | |||
} | |||
//给子类使用的工具方法:校验bean | |||
protected <E extends DefaultEntity> void checkValid(E vo) { | |||
ModelTable table = ModelTableCache.getInstance().getByName(vo.getTableName()); | |||
for (ModelField field : table.getFields()) { | |||
String value = bean.getStr(field.getName()); | |||
String value = vo.getStr(field.getName()); | |||
//非空校验 | |||
if (field.isNotNull() && StringUtils.isEmpty(value)) { | |||
throw new BizException("字段不允许为空:" + field.getTitle()); | |||
@@ -137,60 +146,77 @@ public class LCSingleSaveHandler<T extends DefaultEntity> extends AbstractDynPag | |||
} | |||
} | |||
//唯一键校验 | |||
EntityDao<T> dao = DbEngine.getInstance().findDao(bean.getTableName()); | |||
EntityDao<E> dao = DbEngine.getInstance().findDao(vo.getTableName()); | |||
for (ModelIndex mi : table.getIndexes()) { | |||
if (mi.isUnique()) { | |||
dao.checkUnique(bean, mi.getFields().split(",")); | |||
dao.checkUnique(vo, mi.getFields().split(",")); | |||
} | |||
} | |||
} | |||
protected void saveBean(T bean) { | |||
final String tableName = bean.getTableName(); | |||
EntityDao<T> dao = DbEngine.getInstance().findDao(tableName); | |||
if (bean.isNew()) { | |||
dao.insertEntity(bean); | |||
protected void doSave() { | |||
saveBean(bean); | |||
} | |||
//给子类使用的工具方法:保存bean | |||
protected <E extends DefaultEntity> void saveBean(E entity) { | |||
final String tableName = entity.getTableName(); | |||
EntityDao<E> dao = DbEngine.getInstance().findDao(tableName); | |||
if (entity.isNew()) { | |||
dao.insertEntity(entity); | |||
} else { | |||
ModelTable table = ModelTableCache.getInstance().getByName(tableName); | |||
ModelField field = table.findFieldByType(SwEnum.FieldType.UPDATE_USER.value); | |||
if (field != null) bean.put(field.getName(), us.getUserId()); | |||
if (field != null) entity.put(field.getName(), us.getUserId()); | |||
dao.updateEntity(bean); | |||
dao.updateEntity(entity); | |||
if (table.getType() == SwEnum.TableType.TYPE_TREE.value) { | |||
List<T> listTreeBean = TreeHelper.getTreeHelper(tableName).resetTreeLevel(bean); | |||
List<E> listTreeBean = TreeHelper.getTreeHelper(tableName).resetTreeLevel(entity); | |||
mapTreeBean.put(tableName, listTreeBean); | |||
} | |||
} | |||
} | |||
protected void afterCommit(T bean) { | |||
final String tableName = bean.getTableName(); | |||
//保存后 | |||
protected void doAfterCommit() { | |||
commitBean(bean); | |||
} | |||
//给子类使用的工具方法:提交后事件 | |||
protected <E extends DefaultEntity> void commitBean(E entity) { | |||
final String tableName = entity.getTableName(); | |||
ModelTable table = ModelTableCache.getInstance().getByName(tableName); | |||
if (table.isNeedCache()) { | |||
AbstractCache<DefaultEntity> cache = CacheManager.getIntance().getCache(tableName); | |||
List<T> listTreeBean = mapTreeBean.get(tableName); | |||
List<E> listTreeBean = (List<E>)mapTreeBean.get(tableName); | |||
//树型表,父亲改变了,要多处理下缓存;还有个东东:级次码 | |||
if (listTreeBean != null && !listTreeBean.isEmpty()) { | |||
for (DefaultEntity b : listTreeBean) { | |||
cache.put(b); | |||
} | |||
} else { | |||
cache.put(bean); | |||
cache.put(entity); | |||
} | |||
} | |||
} | |||
protected void afterRollback(T bean) { | |||
//事务回滚 | |||
protected void doAfterRollback() { | |||
rollBean(bean); | |||
} | |||
//给子类使用的工具方法:回滚指定的bean | |||
protected <E extends DefaultEntity> void rollBean(E bean) { | |||
final String tableName = bean.getTableName(); | |||
ModelTable table = ModelTableCache.getInstance().getByName(tableName); | |||
if (table.isNeedCache()) { | |||
AbstractCache<T> cache = CacheManager.getIntance().getCache(tableName); | |||
AbstractCache<E> cache = CacheManager.getIntance().getCache(tableName); | |||
cache.reset(bean); | |||
} | |||
} | |||
//将关联的值设上 | |||
protected void setLinkValue(PageDataset pageDataSet, T bean, IGetValue iGetValue) { | |||
protected void setLinkValue(PageDataset pageDataSet, DefaultEntity bean, IGetValue iGetValue) { | |||
ModelTable table = ModelTableCache.getInstance().getByName(bean.getTableName()); | |||
for (PageDatasetFilter f : pageDataSet.filters) { | |||
String v = bean.getStr(f.field); |
@@ -0,0 +1,77 @@ | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.abshandler; | |||
import cc.smtweb.framework.core.annotation.SwBody; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.common.SwMap; | |||
import cc.smtweb.framework.core.mvc.service.AbstractHandler; | |||
import cc.smtweb.framework.core.session.UserSession; | |||
import cc.smtweb.system.bpm.web.engine.dynPage.DynPageService; | |||
/** | |||
* Created by Akmm at 2022-08-12 15:37 | |||
* 单页面简单列表卡片服务类 | |||
*/ | |||
public class ModelService extends DynPageService { | |||
public final static String TYPE_MODEL_LIST = "modelList"; | |||
public final static String TYPE_MODEL_ADD = "modelAdd"; | |||
public final static String TYPE_MODEL_LOAD = "modelLoad"; | |||
public final static String TYPE_MODEL_SAVE = "modelSave"; | |||
public final static String TYPE_MODEL_DEL = "modelDel"; | |||
@Override | |||
protected AbstractHandler createHandler(String type) { | |||
switch (type) { | |||
case TYPE_MODEL_LIST: | |||
case TYPE_MODEL_LOAD: | |||
case TYPE_MODEL_ADD: | |||
return getLoadHandler(); | |||
case TYPE_MODEL_SAVE: | |||
return getSaveHandler(); | |||
case TYPE_MODEL_DEL: | |||
return getDelHandler(); | |||
} | |||
return super.createHandler(type); | |||
} | |||
protected ModelSaveHandler getSaveHandler() { | |||
return new ModelSaveHandler(); | |||
} | |||
protected ModelLoadHandler getLoadHandler() { | |||
return new ModelLoadHandler(); | |||
} | |||
protected ModelDelHandler getDelHandler() { | |||
return new ModelDelHandler(); | |||
} | |||
//保存 | |||
public R modelSave(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_SAVE, handler -> ((ModelSaveHandler) handler).save()); | |||
} | |||
//读取 | |||
public R modelLoad(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_LOAD, handler -> ((ModelLoadHandler) handler).load()); | |||
} | |||
//读取 | |||
public R modelAdd(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_ADD, handler -> ((ModelLoadHandler) handler).add()); | |||
} | |||
//删除 | |||
public R modelDel(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_DEL, handler -> ((ModelDelHandler) handler).del()); | |||
} | |||
//列表数据 | |||
public R modelList(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_LIST, handler -> ((ModelLoadHandler) handler).list()); | |||
} | |||
//列表总记录数及合计栏 | |||
public R modelListTotal(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_LIST, handler -> ((ModelLoadHandler) handler).getTotal()); | |||
} | |||
} |
@@ -4,7 +4,7 @@ import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.common.SwMap; | |||
import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.AbsLoadHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleHelper; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelHelper; | |||
/** | |||
* @Author:lip | |||
@@ -18,7 +18,7 @@ public class LCLC1LoadHandler extends AbsLoadHandler { | |||
*/ | |||
public R lAdd() { | |||
SwMap data = doAdd(LCLC1Define.dsLCard); | |||
return R.success(LCSingleHelper.buildRetData(LCLC1Define.dsLCard, data)); | |||
return R.success(ModelHelper.buildRetData(LCLC1Define.dsLCard, data)); | |||
} | |||
/** | |||
@@ -28,7 +28,7 @@ public class LCLC1LoadHandler extends AbsLoadHandler { | |||
*/ | |||
public R rAdd() { | |||
SwMap data = doAdd(LCLC1Define.dsRCard); | |||
return R.success(LCSingleHelper.buildRetData(LCLC1Define.dsRCard, data)); | |||
return R.success(ModelHelper.buildRetData(LCLC1Define.dsRCard, data)); | |||
} | |||
/** | |||
@@ -38,7 +38,7 @@ public class LCLC1LoadHandler extends AbsLoadHandler { | |||
*/ | |||
public R lLoad() { | |||
SwMap bean = doLoadCard(LCLC1Define.dsLCard); | |||
return R.success(LCSingleHelper.buildRetData(LCLC1Define.dsLCard, bean)); | |||
return R.success(ModelHelper.buildRetData(LCLC1Define.dsLCard, bean)); | |||
} | |||
/** | |||
@@ -48,7 +48,7 @@ public class LCLC1LoadHandler extends AbsLoadHandler { | |||
*/ | |||
public R rLoad() { | |||
SwMap bean = doLoadCard(LCLC1Define.dsRCard); | |||
return R.success(LCSingleHelper.buildRetData(LCLC1Define.dsRCard, bean)); | |||
return R.success(ModelHelper.buildRetData(LCLC1Define.dsRCard, bean)); | |||
} | |||
/** | |||
@@ -3,7 +3,7 @@ package cc.smtweb.system.bpm.web.engine.model.listcard.lclc1; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.db.impl.DefaultEntity; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.AbsSaveHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleHelper; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelHelper; | |||
/** | |||
* @Author:lip | |||
@@ -17,7 +17,7 @@ public class LCLC1SaveHandler extends AbsSaveHandler { | |||
*/ | |||
public R lSave() { | |||
DefaultEntity bean = doSave(LCLC1Define.dsLCard); | |||
return R.success(LCSingleHelper.buildRetData(LCLC1Define.dsLCard, bean.getData())); | |||
return R.success(ModelHelper.buildRetData(LCLC1Define.dsLCard, bean.getData())); | |||
} | |||
/** | |||
@@ -27,6 +27,6 @@ public class LCLC1SaveHandler extends AbsSaveHandler { | |||
*/ | |||
public R rSave() { | |||
DefaultEntity bean = doSave(LCLC1Define.dsRCard); | |||
return R.success(LCSingleHelper.buildRetData(LCLC1Define.dsRCard, bean.getData())); | |||
return R.success(ModelHelper.buildRetData(LCLC1Define.dsRCard, bean.getData())); | |||
} | |||
} |
@@ -12,7 +12,7 @@ import cc.smtweb.framework.core.exception.BizException; | |||
import cc.smtweb.system.bpm.web.design.form.define.PageDataset; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.ModelUtils; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.AbsSaveHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleHelper; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelHelper; | |||
import org.springframework.util.Assert; | |||
import java.util.ArrayList; | |||
@@ -96,6 +96,6 @@ public class LCMsSaveHandler extends AbsSaveHandler<DefaultEntity> { | |||
afterRollback(masterBean); | |||
} | |||
}); | |||
return R.success(LCSingleHelper.buildRetData(masterDataSet.name, masterBean.getData())); | |||
return R.success(ModelHelper.buildRetData(masterDataSet.name, masterBean.getData())); | |||
} | |||
} |
@@ -1,12 +0,0 @@ | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.normal; | |||
/** | |||
* @Author:lip | |||
* @Date : 2022/9/2 15:23 | |||
*/ | |||
public class LCNormalDefine { | |||
//列表里数据集 | |||
public static final String dsList = "list"; | |||
//卡片数据集 | |||
public static final String dsCard = "card"; | |||
} |
@@ -1,30 +0,0 @@ | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.normal; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.AbsDelHandler; | |||
/** | |||
* Created by Akmm at 2022/4/21 17:53 | |||
* 删除操作 | |||
*/ | |||
public class LCNormalDelHandler extends AbsDelHandler { | |||
/** | |||
* 通过列表删除 | |||
* | |||
* @return | |||
*/ | |||
public R listDel() { | |||
doDel(LCNormalDefine.dsList); | |||
return R.success(); | |||
} | |||
/** | |||
* 通过卡片删除 | |||
* | |||
* @return | |||
*/ | |||
public R cardDel() { | |||
doDel(LCNormalDefine.dsCard); | |||
return R.success(); | |||
} | |||
} |
@@ -1,44 +0,0 @@ | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.normal; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.common.SwMap; | |||
import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.ModelUtils; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.AbsLoadHandler; | |||
/** | |||
* @Author:lip | |||
* @Date : 2022/8/29 14:37 | |||
*/ | |||
public class LCNormalLoadHandler extends AbsLoadHandler { | |||
//新增卡片操作,初始化定义的数据集 | |||
public R add() { | |||
SwMap data = doAdd(LCNormalDefine.dsCard); | |||
return R.success(ModelUtils.buildRetData(LCNormalDefine.dsCard, data)); | |||
} | |||
public R load() { | |||
SwMap data = doLoadCard(LCNormalDefine.dsCard); | |||
return R.success(ModelUtils.buildRetData(LCNormalDefine.dsCard, data)); | |||
} | |||
/** | |||
* 列表数据 | |||
* | |||
* @return | |||
*/ | |||
public R list() { | |||
DynRetBean dynRetBean = doList(LCNormalDefine.dsList); | |||
return R.success(dynRetBean); | |||
} | |||
/** | |||
* 计算分页数据 | |||
* | |||
* @return | |||
*/ | |||
public R getTotal() { | |||
return doTotal(LCNormalDefine.dsList); | |||
} | |||
} |
@@ -1,21 +0,0 @@ | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.normal; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.db.impl.DefaultEntity; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.ModelUtils; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.AbsSaveHandler; | |||
/** | |||
* @Author:lip | |||
* @Date : 2022/9/2 14:56 | |||
*/ | |||
public class LCNormalSaveHandler extends AbsSaveHandler { | |||
/** | |||
* @return | |||
*/ | |||
public R save() { | |||
DefaultEntity bean = doSave(LCNormalDefine.dsCard); | |||
return R.success(ModelUtils.buildRetData(LCNormalDefine.dsCard, bean.getData())); | |||
} | |||
} |
@@ -4,69 +4,17 @@ import cc.smtweb.framework.core.annotation.SwBody; | |||
import cc.smtweb.framework.core.annotation.SwService; | |||
import cc.smtweb.framework.core.common.R; | |||
import cc.smtweb.framework.core.common.SwMap; | |||
import cc.smtweb.framework.core.mvc.service.AbstractHandler; | |||
import cc.smtweb.framework.core.session.UserSession; | |||
import cc.smtweb.system.bpm.web.engine.dynPage.DynPageService; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelSaveHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelDelHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelLoadHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelService; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleService; | |||
/** | |||
* @Author:lip | |||
* @Date : 2022/8/27 13:54 | |||
*/ | |||
@SwService | |||
public class LCNormalService extends DynPageService { | |||
protected final static String TYPE_MODEL_LIST = "modelList"; | |||
protected final static String TYPE_MODEL_ADD = "modelAdd"; | |||
protected final static String TYPE_MODEL_LOAD = "modelLoad"; | |||
protected final static String TYPE_MODEL_SAVE = "modelSave"; | |||
protected final static String TYPE_MODEL_DEL = "modelDel"; | |||
@Override | |||
protected AbstractHandler createHandler(String type) { | |||
switch (type) { | |||
case TYPE_MODEL_LIST: | |||
case TYPE_MODEL_LOAD: | |||
case TYPE_MODEL_ADD: | |||
return new LCNormalLoadHandler(); | |||
case TYPE_MODEL_SAVE: | |||
return new LCNormalSaveHandler(); | |||
case TYPE_MODEL_DEL: | |||
return new LCNormalDelHandler(); | |||
} | |||
return super.createHandler(type); | |||
} | |||
//保存 | |||
public R modelSave(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_SAVE, handler -> ((LCNormalSaveHandler) handler).save()); | |||
} | |||
//列表删除 | |||
public R modelLDel(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_DEL, handler -> ((LCNormalDelHandler) handler).listDel()); | |||
} | |||
//卡片删除 | |||
public R modelCDel(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_DEL, handler -> ((LCNormalDelHandler) handler).cardDel()); | |||
} | |||
//读取 | |||
public R modelLoad(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_LOAD, handler -> ((LCNormalLoadHandler) handler).load()); | |||
} | |||
//读取 | |||
public R modelAdd(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_ADD, handler -> ((LCNormalLoadHandler) handler).add()); | |||
} | |||
//列表数据 | |||
public R modelList(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_LIST, handler -> ((LCNormalLoadHandler) handler).list()); | |||
} | |||
//列表总记录数及合计栏 | |||
public R modelListTotal(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_LIST, handler -> ((LCNormalLoadHandler) handler).getTotal()); | |||
} | |||
public class LCNormalService extends ModelService { | |||
} |
@@ -1,43 +0,0 @@ | |||
package cc.smtweb.system.bpm.web.engine.model.listcard.single; | |||
import cc.smtweb.framework.core.common.SwEnum; | |||
import cc.smtweb.framework.core.common.SwMap; | |||
import cc.smtweb.framework.core.exception.SwException; | |||
import cc.smtweb.system.bpm.web.design.form.define.PageDataset; | |||
import cc.smtweb.system.bpm.web.design.form.define.PageDatasets; | |||
import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; | |||
/** | |||
* Created by Akmm at 2022-08-16 16:07 | |||
* 常量定义 | |||
*/ | |||
public interface LCSingleHelper { | |||
String DATASET_NAME_LIST = "list"; | |||
String DATASET_NAME_CARD = "card"; | |||
//卡片数据集 | |||
static PageDataset findCardDataset(PageDatasets datasets) { | |||
PageDataset cardDataset = datasets.findByName(DATASET_NAME_CARD); | |||
if (cardDataset == null) throw new SwException("没有找到卡片数据集!"); | |||
if (!SwEnum.DatasetType.FORM.value.equals(cardDataset.type)) {//单表 | |||
throw new SwException("卡片数据集定义错误!"); | |||
} | |||
return cardDataset; | |||
} | |||
//列表数据集 | |||
static PageDataset findListDataset(PageDatasets datasets) { | |||
PageDataset cardDataset = datasets.findByName(DATASET_NAME_LIST); | |||
if (cardDataset == null) throw new SwException("没有找到列表数据集!"); | |||
if (!SwEnum.DatasetType.LIST.value.equals(cardDataset.type)) {//列表 | |||
throw new SwException("列表数据集定义错误!"); | |||
} | |||
return cardDataset; | |||
} | |||
static SwMap buildRetData(String dsName, SwMap data) { | |||
SwMap mapRet = new SwMap(); | |||
mapRet.put(dsName, DynRetBean.createBean(data)); | |||
return mapRet; | |||
} | |||
} |
@@ -7,73 +7,13 @@ import cc.smtweb.framework.core.common.SwMap; | |||
import cc.smtweb.framework.core.mvc.service.AbstractHandler; | |||
import cc.smtweb.framework.core.session.UserSession; | |||
import cc.smtweb.system.bpm.web.engine.dynPage.DynPageService; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelSaveHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelService; | |||
/** | |||
* Created by Akmm at 2022-08-12 15:37 | |||
* 单页面简单列表卡片服务类 | |||
*/ | |||
@SwService | |||
public class LCSingleService extends DynPageService { | |||
public final static String TYPE_MODEL_LIST = "modelList"; | |||
public final static String TYPE_MODEL_ADD = "modelAdd"; | |||
public final static String TYPE_MODEL_LOAD = "modelLoad"; | |||
public final static String TYPE_MODEL_SAVE = "modelSave"; | |||
public final static String TYPE_MODEL_DEL = "modelDel"; | |||
@Override | |||
protected AbstractHandler createHandler(String type) { | |||
switch (type) { | |||
case TYPE_MODEL_LIST: | |||
case TYPE_MODEL_LOAD: | |||
case TYPE_MODEL_ADD: | |||
return getLoadHandler(); | |||
case TYPE_MODEL_SAVE: | |||
return getSaveHandler(); | |||
case TYPE_MODEL_DEL: | |||
return getDelHandler(); | |||
} | |||
return super.createHandler(type); | |||
} | |||
protected LCSingleSaveHandler getSaveHandler() { | |||
return new LCSingleSaveHandler(); | |||
} | |||
protected LCSingleLoadHandler getLoadHandler() { | |||
return new LCSingleLoadHandler(); | |||
} | |||
protected LCSingleDelHandler getDelHandler() { | |||
return new LCSingleDelHandler(); | |||
} | |||
//保存 | |||
public R modelSave(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_SAVE, handler -> ((LCSingleSaveHandler) handler).save()); | |||
} | |||
//读取 | |||
public R modelLoad(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_LOAD, handler -> ((LCSingleLoadHandler) handler).load()); | |||
} | |||
//读取 | |||
public R modelAdd(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_ADD, handler -> ((LCSingleLoadHandler) handler).add()); | |||
} | |||
//删除 | |||
public R modelDel(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_DEL, handler -> ((LCSingleDelHandler) handler).del()); | |||
} | |||
//列表数据 | |||
public R modelList(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_LIST, handler -> ((LCSingleLoadHandler) handler).list()); | |||
} | |||
//列表总记录数及合计栏 | |||
public R modelListTotal(@SwBody SwMap params, UserSession us) { | |||
return pageHandler(params, us, TYPE_MODEL_LIST, handler -> ((LCSingleLoadHandler) handler).getTotal()); | |||
} | |||
public class LCSingleService extends ModelService { | |||
} |
@@ -1,16 +1,16 @@ | |||
package cc.smtweb.system.bpm.web.sys.base.billType; | |||
import cc.smtweb.framework.core.exception.BizException; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleSaveHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelSaveHandler; | |||
import org.apache.commons.lang3.StringUtils; | |||
/** | |||
* Created by Akmm at 2022-08-25 19:11 | |||
*/ | |||
public class BillTypeSaveHandler extends LCSingleSaveHandler<BillType> { | |||
public class BillTypeSaveHandler extends ModelSaveHandler<BillType> { | |||
@Override | |||
protected void checkBean(BillType bean) { | |||
super.checkBean(bean); | |||
protected void checkValid() { | |||
super.checkValid(); | |||
if (StringUtils.isEmpty(bean.getCode())) { | |||
throw new BizException("编码不能为空!"); | |||
} | |||
@@ -3,7 +3,7 @@ package cc.smtweb.system.bpm.web.sys.base.billType; | |||
import cc.smtweb.framework.core.annotation.SwService; | |||
import cc.smtweb.framework.core.mvc.service.AbstractHandler; | |||
import cc.smtweb.framework.core.mvc.service.DefaultComboHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleSaveHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.abshandler.ModelSaveHandler; | |||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleService; | |||
/** | |||
@@ -19,7 +19,7 @@ public class BillTypeService extends LCSingleService { | |||
} | |||
@Override | |||
protected LCSingleSaveHandler getSaveHandler() { | |||
protected ModelSaveHandler<BillType> getSaveHandler() { | |||
return new BillTypeSaveHandler(); | |||
} | |||
} |