mirror of
https://github.com/hs-web/hsweb-framework.git
synced 2026-06-09 09:24:03 +08:00
优化动态表单
This commit is contained in:
@@ -3,7 +3,9 @@ package org.hsweb.web.controller.form;
|
||||
import org.hsweb.web.bean.common.InsertMapParam;
|
||||
import org.hsweb.web.bean.common.QueryParam;
|
||||
import org.hsweb.web.bean.common.UpdateMapParam;
|
||||
import org.hsweb.web.bean.po.form.Form;
|
||||
import org.hsweb.web.core.authorize.annotation.Authorize;
|
||||
import org.hsweb.web.core.exception.BusinessException;
|
||||
import org.hsweb.web.core.logger.annotation.AccessLogger;
|
||||
import org.hsweb.web.core.message.ResponseMessage;
|
||||
import org.hsweb.web.service.form.DynamicFormService;
|
||||
@@ -41,6 +43,15 @@ public class DynamicFormController {
|
||||
return ResponseMessage.ok(formService.selectDeployed(name));
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/{name}/v/{version}", method = RequestMethod.GET)
|
||||
@Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,#paramsMap,'R')")
|
||||
public ResponseMessage latest(@PathVariable(value = "name") String name,
|
||||
@PathVariable(value = "version") Integer version) throws Exception {
|
||||
Form form = formService.selectByVersion(name, version);
|
||||
if (form == null) throw new BusinessException("表单不存在", 404);
|
||||
return ResponseMessage.ok(form);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/{name}", method = RequestMethod.GET)
|
||||
@AccessLogger("查看列表")
|
||||
@Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,#paramsMap,'R')")
|
||||
@@ -70,7 +81,7 @@ public class DynamicFormController {
|
||||
@Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,#paramsMap,'C')")
|
||||
public ResponseMessage insert(@PathVariable("name") String name,
|
||||
@RequestBody(required = true) Map<String, Object> data) throws Exception {
|
||||
String pk = dynamicFormService.insert(name,data);
|
||||
String pk = dynamicFormService.insert(name, data);
|
||||
return ResponseMessage.ok(pk);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
package org.hsweb.web.service.impl.form;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import org.hsweb.ezorm.meta.FieldMetaData;
|
||||
import org.hsweb.ezorm.meta.TableMetaData;
|
||||
import org.hsweb.ezorm.meta.expand.PropertyWrapper;
|
||||
import org.hsweb.ezorm.run.*;
|
||||
import org.hsweb.concurrent.lock.annotation.LockName;
|
||||
import org.hsweb.concurrent.lock.annotation.ReadLock;
|
||||
import org.hsweb.concurrent.lock.annotation.WriteLock;
|
||||
import org.hsweb.web.bean.common.*;
|
||||
import org.hsweb.ezorm.meta.FieldMetaData;
|
||||
import org.hsweb.ezorm.meta.TableMetaData;
|
||||
import org.hsweb.ezorm.meta.expand.OptionConverter;
|
||||
import org.hsweb.ezorm.meta.expand.PropertyWrapper;
|
||||
import org.hsweb.ezorm.run.*;
|
||||
import org.hsweb.web.bean.common.DeleteParam;
|
||||
import org.hsweb.web.bean.common.PagerResult;
|
||||
import org.hsweb.web.bean.common.QueryParam;
|
||||
import org.hsweb.web.bean.common.UpdateParam;
|
||||
import org.hsweb.web.bean.po.GenericPo;
|
||||
@@ -271,6 +273,24 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
|
||||
return query.single();
|
||||
}
|
||||
|
||||
protected void putExcelHeader(String fieldPrefix, FieldMetaData fieldMetaData, List<Header> headers) {
|
||||
if (fieldMetaData == null) return;
|
||||
PropertyWrapper valueWrapper = fieldMetaData.getProperty("export-excel", false);
|
||||
if (fieldPrefix.length() > 0) fieldPrefix += ".";
|
||||
if (valueWrapper.isTrue()) {
|
||||
String title = fieldMetaData.getProperty("export-header", fieldMetaData.getComment()).toString();
|
||||
if (StringUtils.isNullOrEmpty(title)) {
|
||||
title = fieldMetaData.getName();
|
||||
}
|
||||
String field = fieldMetaData.getName();
|
||||
OptionConverter converter = fieldMetaData.getOptionConverter();
|
||||
if (converter != null) {
|
||||
field = converter.getFieldName();
|
||||
}
|
||||
headers.add(new Header(title, fieldPrefix + field));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ReadLock
|
||||
@LockName(value = "'form.lock.'+#name", isExpression = true)
|
||||
@@ -281,27 +301,16 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
|
||||
TableMetaData metaData = table.getMeta();
|
||||
List<Header> headers = new LinkedList<>();
|
||||
Map<String, Object> sample = dataList.isEmpty() ? new HashMap<>() : (Map) dataList.get(0);
|
||||
int[] index = new int[1];
|
||||
index[0] = 1;
|
||||
metaData.getFields().forEach(fieldMetaData -> {
|
||||
PropertyWrapper valueWrapper = fieldMetaData.getProperty("export-excel", false);
|
||||
if (valueWrapper.isTrue()) {
|
||||
String title = fieldMetaData.getProperty("export-header", fieldMetaData.getComment()).toString();
|
||||
if (StringUtils.isNullOrEmpty(title)) {
|
||||
title = "字段" + index[0]++;
|
||||
}
|
||||
String field = fieldMetaData.getName();
|
||||
Set<String> includes = param.getIncludes();
|
||||
Set<String> excludes = param.getExcludes();
|
||||
if (!includes.isEmpty()) {
|
||||
if (!includes.contains(field)) return;
|
||||
}
|
||||
if (!excludes.isEmpty()) {
|
||||
if (excludes.contains(field)) return;
|
||||
}
|
||||
if (sample.get(field + "_text") != null)
|
||||
field = field + "_text";
|
||||
headers.add(new Header(title, field));
|
||||
sample.forEach((key, value) -> {
|
||||
if (value instanceof Map) {
|
||||
((Map) value).forEach((k, v) -> {
|
||||
String fieldName = key + "." + k;
|
||||
FieldMetaData field = metaData.findFieldByName(fieldName);
|
||||
putExcelHeader(fieldName,field, headers);
|
||||
});
|
||||
} else {
|
||||
FieldMetaData field = metaData.findFieldByName(key);
|
||||
putExcelHeader("",field, headers);
|
||||
}
|
||||
});
|
||||
if (metaData.triggerIsSupport("export.excel")) {
|
||||
|
||||
@@ -75,7 +75,6 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
|
||||
|
||||
@Override
|
||||
public String insert(Form data) throws Exception {
|
||||
|
||||
List<Form> old = this.select(QueryParam.build().where("name", data.getName()));
|
||||
Assert.isTrue(old.isEmpty(), "表单 [" + data.getName() + "] 已存在!");
|
||||
data.setCreateDate(new Date());
|
||||
@@ -87,11 +86,17 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(value = {CACHE_KEY}, key = "#data.id")
|
||||
@Caching(
|
||||
evict = {
|
||||
@CacheEvict(value = {CACHE_KEY}, key = "#data.id"),
|
||||
@CacheEvict(value = {CACHE_KEY}, key = "#data.name+':'+#data.version")
|
||||
}
|
||||
)
|
||||
public int update(Form data) throws Exception {
|
||||
Form old = this.selectByPk(data.getId());
|
||||
assertNotNull(old, "表单不存在!");
|
||||
data.setUpdateDate(new Date());
|
||||
data.setVersion(old.getVersion());
|
||||
data.setRevision(old.getRevision() + 1);
|
||||
UpdateParam<Form> param = UpdateParam.build(data).excludes("createDate", "release", "version", "using");
|
||||
return getMapper().update(param);
|
||||
@@ -119,6 +124,7 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
|
||||
}
|
||||
|
||||
@Override
|
||||
@Cacheable(value = CACHE_KEY, key = "#name+':'+#version")
|
||||
public Form selectByVersion(String name, int version) throws Exception {
|
||||
QueryParam param = QueryParam.build()
|
||||
.where("name", name).where("version", version);
|
||||
|
||||
Reference in New Issue
Block a user