diff --git a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/impl/DatabaseUtil.java b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/impl/DatabaseUtil.java index eec8cb9..8c2ea3b 100644 --- a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/impl/DatabaseUtil.java +++ b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/impl/DatabaseUtil.java @@ -104,7 +104,7 @@ public class DatabaseUtil { "实体定义:[" + modelFieldType.sqlType + "]!"; log.error(message, MODULE); } - if (modelFieldType.dataLength != -1 && ccInfo.columnSize != -1 && modelFieldType.dataLength != ccInfo.columnSize) { + if (modelFieldType.dataLength != 0 && ccInfo.columnSize != -1 && modelFieldType.dataLength != ccInfo.columnSize) { String message = "警告: 表[" + entity.getName() + "]字段[" + ccInfo.columnName + "] 字段长度不一致:::数据库:[" + ccInfo.columnSize + "], " + "实体定义:[" + modelFieldType.dataLength + "]!"; log.debug(message, MODULE); diff --git a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/vo/ModelField.java b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/vo/ModelField.java index 7bb395a..0263245 100644 --- a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/vo/ModelField.java +++ b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/vo/ModelField.java @@ -1,5 +1,6 @@ package cc.smtweb.framework.core.db.vo; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; @@ -29,10 +30,10 @@ public class ModelField { @JsonProperty("default") private String defaultValue; //外键关联表 - private String link; + private long link; //控件类型:TEXT/TextArea/NUMBER/COMBO private String editor; - + @JsonIgnore public boolean isNotNull() { return notNull == 1; } diff --git a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/vo/ModelTable.java b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/vo/ModelTable.java index ee4f00b..1174764 100644 --- a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/vo/ModelTable.java +++ b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/vo/ModelTable.java @@ -247,7 +247,7 @@ public class ModelTable extends DefaultEntity { public List findLinkeNames() { List list = new ArrayList<>(); for (ModelField field : fields) { - if (StringUtils.isEmpty(field.getLink())) { + if (field.getLink()<=0) { continue; } ModelTable linkTable = ModelTableCache.getInstance().get(field.getLink()); diff --git a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/util/CommUtil.java b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/util/CommUtil.java index d2688b5..f616640 100644 --- a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/util/CommUtil.java +++ b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/util/CommUtil.java @@ -121,6 +121,16 @@ public class CommUtil { public static int chineseCompare(String s1, String s2) { return chineseCollator.compare(s1, s2); } + public static int compareStr(String s1, String s2) { + if (StringUtils.isEmpty(s1) && StringUtils.isEmpty(s2)) return 0; + if (StringUtils.isEmpty(s1)) return -1; + if (StringUtils.isEmpty(s2)) return 1; + return chineseCollator.compare(s1, s2); + } + + public static boolean isStrEquals(String s1, String s2) { + return compareStr(s1, s2) == 0; + } //获取字段字符串长度 public static int getStrLenB(String s) { diff --git a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/util/JsonUtil.java b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/util/JsonUtil.java index 39cb25f..182de44 100644 --- a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/util/JsonUtil.java +++ b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/util/JsonUtil.java @@ -12,6 +12,9 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.databind.ser.FilterProvider; +import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; +import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -22,6 +25,7 @@ import java.io.InputStream; import java.lang.reflect.Method; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; @@ -46,6 +50,8 @@ public class JsonUtil { init(API_OBJECT_MAPPER); API_OBJECT_MAPPER.getSerializerProvider().setNullValueSerializer(new NullSerializer()); + + FilterProvider filters = new SimpleFilterProvider().addFilter("apiFilter", SimpleBeanPropertyFilter.serializeAllExcept(new HashSet<>())); } private static void init(ObjectMapper mapper) { diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java index 45f623c..626f51b 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormHelper.java @@ -5,6 +5,9 @@ import cc.smtweb.framework.core.common.SwMap; import cc.smtweb.framework.core.cache.AbstractCache; import cc.smtweb.framework.core.cache.CacheManager; import cc.smtweb.framework.core.common.SwEnum; +import cc.smtweb.framework.core.db.cache.ModelTableCache; +import cc.smtweb.framework.core.db.vo.ModelField; +import cc.smtweb.framework.core.db.vo.ModelTable; import cc.smtweb.framework.core.mvc.variable.SwVariableFactory; import cc.smtweb.framework.core.session.UserSession; import cc.smtweb.framework.core.util.CommUtil; @@ -52,7 +55,7 @@ public class ModelFormHelper { PageDataSet[] list = JsonUtil.parse(jsonStr, PageDataSet[].class); Map map = new LinkedHashMap<>(list.length); for (PageDataSet ds : list) { - map.put(ds.name, ds); + map.put(ds.id, ds); ds.resetFields(); } return map; @@ -121,43 +124,83 @@ public class ModelFormHelper { } } - + /** + * 保存的数据集,删除掉一些不必要的字段信息 + * @param jsonStr + * @return + */ public static String buildSaveDataset(String jsonStr) { Map map = parsePageDataset(jsonStr); if (map == null) return null; - try { - return buildSaveDataset(map.values()); - } catch (JsonProcessingException e) { - throw new SwException(e); + for (PageDataSet dataSet: map.values()) { + buildSaveDataSetFields(dataSet.fields); + buildSaveDataSetFields(dataSet.filters); } + return JsonUtil.encodeString(map.values()); } /** * 构建待保存的数据集 * - * @param datasets * @return * @throws JsonProcessingException */ - public static String buildSaveDataset(Collection datasets) throws JsonProcessingException { - - ObjectMapper mapper = new ObjectMapper(); - FilterProvider filters = new SimpleFilterProvider().addFilter("datasetField", new SimpleBeanPropertyFilter() { - private final String includes = "name,label,field,table"; - - @Override - protected boolean include(PropertyWriter writer) { - return includes.contains(writer.getName()); + public static void buildSaveDataSetFields(List fields) { + ModelTable table = null; + for (PageDatasetField field: fields) { + if (field.table <= 0) continue; + if (table == null || table.getEntityId() != field.table) { + table = ModelTableCache.getInstance().get(field.table); } - }).addFilter("datasetFilter", new SimpleBeanPropertyFilter() { - private final String includes = ",name,label,field,table,dataType,type,linkDb,linkField,value"; + if (table == null) continue; + ModelField tf = table.findFieldByName(field.field); + if (tf == null) continue; + if (CommUtil.isStrEquals(tf.getTitle(), field.label)) field.label = null; + if (CommUtil.isStrEquals(tf.getDataType(),field.dataType)) field.dataType = null; + if (CommUtil.isStrEquals(tf.getRemark(), field.remark)) field.remark = null; + if (CommUtil.isStrEquals(tf.getEditor(), field.editor)) field.editor = null; + } + } + + /** + * 构建请求的数据集,补充表定义信息 + * + * @return + * @throws JsonProcessingException + */ + public static String buildReqDataset(String jsonStr) { + Map map = parsePageDataset(jsonStr); + if (map == null) return ""; + for (PageDataSet dataSet: map.values()) { + buildReqDataSetFields(dataSet.fields); + buildReqDataSetFields(dataSet.filters); + } + return JsonUtil.encodeString(map.values()); + } - @Override - protected boolean include(PropertyWriter writer) { - return includes.contains("," + writer.getName()); + /** + * 构建请求的数据集,补充表定义信息 + * + * @return + * @throws JsonProcessingException + */ + public static void buildReqDataSetFields(List fields) { + ModelTable table = null; + for (PageDatasetField field: fields) { + if (field.table <= 0) continue; + if (table == null || table.getEntityId() != field.table) { + table = ModelTableCache.getInstance().get(field.table); } - }); - return mapper.writer(filters).writeValueAsString(datasets); + if (table == null) continue; + ModelField tf = table.findFieldByName(field.field); + if (tf == null) continue; + if (StringUtils.isEmpty(field.label)) field.label = tf.getTitle(); + if (StringUtils.isEmpty(field.dataType)) field.dataType = tf.getDataType(); + if (StringUtils.isEmpty(field.remark)) field.remark = tf.getRemark(); + if (StringUtils.isEmpty(field.editor)) field.editor = tf.getEditor(); + field.notNull = tf.getNotNull(); + field.link = tf.getLink(); + } } /** diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java index 456d691..bb81b50 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/ModelFormLoadHandler.java @@ -30,9 +30,7 @@ public class ModelFormLoadHandler extends DefaultLoadHandler { long id = params.readLong("id"); ModelForm bean = super.loadComp(id); if (bean == null) throw new SwException("没有找到指定定义信息!id=" + id); - Map map = ModelFormHelper.parsePageDataset(bean.getDataset()); - if (map == null) return R.success(""); - return R.success(JsonUtil.encodeString(map.values())); + return R.success(ModelFormHelper.buildReqDataset(bean.getDataset())); } //页面设计 - 加载页面model定义 diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDataSet.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDataSet.java index 687d7fe..fff44d0 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDataSet.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDataSet.java @@ -16,6 +16,7 @@ import java.util.Map; * 数据集定义 */ public class PageDataSet { + public String id; //名称 public String name; //中文名 diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDatasetField.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDatasetField.java index 0fa32f1..4a89379 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDatasetField.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDatasetField.java @@ -1,14 +1,15 @@ package cc.smtweb.system.bpm.web.design.form.define; import com.fasterxml.jackson.annotation.JsonFilter; +import com.fasterxml.jackson.annotation.JsonIgnore; /** * Created by Akmm at 2022/4/20 18:15 */ //字段要素 -@JsonFilter("datasetField") public class PageDatasetField { //表 public long table; + public String table_text; //字段 public String field; //有别名取别名,无别名同字段名 @@ -29,10 +30,11 @@ public class PageDatasetField { */ public int notNull; //外键关联表 - public String link; + public long link; //控件类型:TEXT/TextArea/NUMBER/COMBO public String editor; + @JsonIgnore public boolean isNotNull() { return notNull == 1; } diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDatasetFilter.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDatasetFilter.java index ff833f8..cf90921 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDatasetFilter.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/form/define/PageDatasetFilter.java @@ -5,7 +5,6 @@ import com.fasterxml.jackson.annotation.JsonFilter; /** * Created by Akmm at 2022/4/20 18:15 */ //过滤条件信息 -@JsonFilter("datasetFilter") public class PageDatasetFilter extends PageDatasetField { //param-参数/link/const public String type; diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java index e4409f5..64436ef 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/FlowInstance.java @@ -1,6 +1,8 @@ package cc.smtweb.system.bpm.web.engine.flow; import cc.smtweb.system.bpm.web.design.flow.ModelProc; +import cc.smtweb.system.bpm.web.engine.flow.define.ProcinstEntity; +import cc.smtweb.system.bpm.web.engine.flow.define.TaskEntity; import java.util.*; diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CandidateEntity.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/CandidateEntity.java similarity index 95% rename from smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CandidateEntity.java rename to smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/CandidateEntity.java index 42836d0..ed03bf6 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CandidateEntity.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/CandidateEntity.java @@ -1,4 +1,4 @@ -package cc.smtweb.system.bpm.web.engine.flow; +package cc.smtweb.system.bpm.web.engine.flow.define; import cc.smtweb.framework.core.annotation.SwTable; import cc.smtweb.framework.core.db.impl.DefaultEntity; diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CareEntity.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/CareEntity.java similarity index 94% rename from smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CareEntity.java rename to smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/CareEntity.java index 15bdc11..437a1bf 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CareEntity.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/CareEntity.java @@ -1,4 +1,4 @@ -package cc.smtweb.system.bpm.web.engine.flow; +package cc.smtweb.system.bpm.web.engine.flow.define; import cc.smtweb.framework.core.annotation.SwTable; import cc.smtweb.framework.core.db.impl.DefaultEntity; diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CommentEntity.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/CommentEntity.java similarity index 96% rename from smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CommentEntity.java rename to smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/CommentEntity.java index 260e8b2..b2670d7 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/CommentEntity.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/CommentEntity.java @@ -1,4 +1,4 @@ -package cc.smtweb.system.bpm.web.engine.flow; +package cc.smtweb.system.bpm.web.engine.flow.define; import cc.smtweb.framework.core.annotation.SwTable; import cc.smtweb.framework.core.db.impl.DefaultEntity; diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/ProcinstEntity.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/ProcinstEntity.java similarity index 98% rename from smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/ProcinstEntity.java rename to smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/ProcinstEntity.java index a0e260e..4080977 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/ProcinstEntity.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/ProcinstEntity.java @@ -1,4 +1,4 @@ -package cc.smtweb.system.bpm.web.engine.flow; +package cc.smtweb.system.bpm.web.engine.flow.define; import cc.smtweb.framework.core.annotation.SwTable; import cc.smtweb.framework.core.db.impl.DefaultEntity; diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/SignEntity.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/SignEntity.java similarity index 96% rename from smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/SignEntity.java rename to smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/SignEntity.java index 8c23378..4693005 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/SignEntity.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/SignEntity.java @@ -1,4 +1,4 @@ -package cc.smtweb.system.bpm.web.engine.flow; +package cc.smtweb.system.bpm.web.engine.flow.define; import cc.smtweb.framework.core.annotation.SwTable; import cc.smtweb.framework.core.db.impl.DefaultEntity; diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/TaskEntity.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/TaskEntity.java similarity index 98% rename from smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/TaskEntity.java rename to smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/TaskEntity.java index 69631eb..d21dcab 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/TaskEntity.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/TaskEntity.java @@ -1,4 +1,4 @@ -package cc.smtweb.system.bpm.web.engine.flow; +package cc.smtweb.system.bpm.web.engine.flow.define; import cc.smtweb.framework.core.annotation.SwTable; import cc.smtweb.framework.core.db.impl.DefaultEntity; diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/TaskRelEntity.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/TaskRelEntity.java similarity index 95% rename from smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/TaskRelEntity.java rename to smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/TaskRelEntity.java index cde90ab..d06feab 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/TaskRelEntity.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/flow/define/TaskRelEntity.java @@ -1,4 +1,4 @@ -package cc.smtweb.system.bpm.web.engine.flow; +package cc.smtweb.system.bpm.web.engine.flow.define; import cc.smtweb.framework.core.annotation.SwTable; import cc.smtweb.framework.core.db.impl.DefaultEntity;