diff --git a/src/main/java/neatlogic/framework/form/dao/mapper/FormMapper.java b/src/main/java/neatlogic/framework/form/dao/mapper/FormMapper.java index 862b879a8dcfe777025fb581154f44405c008cd1..e1f58cccee25f5f3b111f3c99d678a42fdc7ad6a 100644 --- a/src/main/java/neatlogic/framework/form/dao/mapper/FormMapper.java +++ b/src/main/java/neatlogic/framework/form/dao/mapper/FormMapper.java @@ -16,12 +16,16 @@ package neatlogic.framework.form.dao.mapper; +import neatlogic.framework.common.dto.BasePageVo; import neatlogic.framework.common.dto.ValueTextVo; -import neatlogic.framework.form.dto.*; -import org.apache.ibatis.annotations.Param; +import neatlogic.framework.form.dto.FormAttributeVo; +import neatlogic.framework.form.dto.FormCustomItemVo; +import neatlogic.framework.form.dto.FormVersionVo; +import neatlogic.framework.form.dto.FormVo; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; @Component("processFormMapper") public interface FormMapper { @@ -67,7 +71,9 @@ public interface FormMapper { List getFormAttributeListByFormUuidList(List formUuidList); - List getFormAttributeMatrixByMatrixUuid(@Param("matrixUuid") String matrixUuid, @Param("startNum") int startNum, @Param("pageSize") int pageSize); + int getFormAttributeMatrixCount(); + + List> getFormAttributeMatrixList(BasePageVo searchVo); List getFormVersionListByFormConfigLikeKeyword(String value); @@ -75,8 +81,6 @@ public interface FormMapper { int insertForm(FormVo formVo); - int insertFormAttributeMatrix(FormAttributeMatrixVo componentVo); - int resetFormVersionIsActiveByFormUuid(String formUuid); int updateFormVersion(FormVersionVo formVersionVo); @@ -101,7 +105,5 @@ public interface FormMapper { int deleteFormVersionByUuid(String uuid); - int deleteFormAttributeMatrixByFormVersionUuid(String formVersionUuid); - void deleteFormCustomItem(Long id); } diff --git a/src/main/java/neatlogic/framework/form/dao/mapper/FormMapper.xml b/src/main/java/neatlogic/framework/form/dao/mapper/FormMapper.xml index 888660967a3f1aef5c340979a16be4213a6d8cfa..96596d27b7a378bbee9e5616921cb27874da5bab 100644 --- a/src/main/java/neatlogic/framework/form/dao/mapper/FormMapper.xml +++ b/src/main/java/neatlogic/framework/form/dao/mapper/FormMapper.xml @@ -308,18 +308,16 @@ limitations under the License. - + SELECT COUNT(1) FROM `form_attribute_matrix` + + + @@ -480,17 +478,6 @@ limitations under the License. #{data}) - - INSERT IGNORE INTO `form_attribute_matrix` (`form_version_uuid`, - `matrix_uuid`, - `form_attribute_uuid`, - `form_attribute_label`) - VALUES (#{formVersionUuid}, - #{matrixUuid}, - #{formAttributeUuid}, - #{formAttributeLabel}) - - DELETE FROM `form_attribute` @@ -515,12 +502,6 @@ limitations under the License. WHERE `uuid` = #{uuid} - - DELETE - FROM `form_attribute_matrix` - WHERE `form_version_uuid` = #{formVersionUuid} - - DELETE FROM `form_customitem` diff --git a/src/main/java/neatlogic/framework/form/dto/FormAttributeMatrixVo.java b/src/main/java/neatlogic/framework/form/dto/FormAttributeMatrixVo.java deleted file mode 100644 index b7472c5065fd381e9645458960dca09270e22110..0000000000000000000000000000000000000000 --- a/src/main/java/neatlogic/framework/form/dto/FormAttributeMatrixVo.java +++ /dev/null @@ -1,88 +0,0 @@ -/* -Copyright(c) 2023 NeatLogic Co., Ltd. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - */ - -package neatlogic.framework.form.dto; - -/** - * @program: neatlogic - * @description: - * @create: 2020-03-27 15:57 - **/ -public class FormAttributeMatrixVo { - private String matrixUuid; - private String formVersionUuid; - private String formAttributeUuid; - private String formAttributeLabel; - private String formName; - private String formUuid; - private String version; - - public String getMatrixUuid() { - return matrixUuid; - } - - public void setMatrixUuid(String matrixUuid) { - this.matrixUuid = matrixUuid; - } - - public String getFormVersionUuid() { - return formVersionUuid; - } - - public void setFormVersionUuid(String formVersionUuid) { - this.formVersionUuid = formVersionUuid; - } - - public String getFormAttributeUuid() { - return formAttributeUuid; - } - - public void setFormAttributeUuid(String formAttributeUuid) { - this.formAttributeUuid = formAttributeUuid; - } - - public String getFormAttributeLabel() { - return formAttributeLabel; - } - - public void setFormAttributeLabel(String formAttributeLabel) { - this.formAttributeLabel = formAttributeLabel; - } - - public String getFormName() { - return formName; - } - - public void setFormName(String formName) { - this.formName = formName; - } - - public String getFormUuid() { - return formUuid; - } - - public void setFormUuid(String formUuid) { - this.formUuid = formUuid; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } -} diff --git a/src/main/java/neatlogic/framework/form/service/IFormCrossoverService.java b/src/main/java/neatlogic/framework/form/service/IFormCrossoverService.java index 6c4e0f73f45c8e19b868ec8f4029abf5f351ac16..229c46c662fa9b195cfdf53d899ee80e64f66d52 100644 --- a/src/main/java/neatlogic/framework/form/service/IFormCrossoverService.java +++ b/src/main/java/neatlogic/framework/form/service/IFormCrossoverService.java @@ -27,12 +27,17 @@ import neatlogic.framework.form.exception.AttributeValidException; import java.util.List; public interface IFormCrossoverService extends ICrossoverService { - /** * 保存表单属性与其他功能的引用关系 - * @param formAttributeVo + * @param formVersion + */ + void saveDependency(FormVersionVo formVersion); + + /** + * 删除表单属性与其他功能的引用关系 + * @param formVersion */ - void saveDependency(FormAttributeVo formAttributeVo); + void deleteDependency(FormVersionVo formVersion); /** * 表格输入组件密码类型加密 @@ -63,6 +68,13 @@ public interface IFormCrossoverService extends ICrossoverService { Object getFormSelectAttributeValueByOriginalValue(Object originalValue); + /** + * 根据表单配置信息解析出表单的所有组件列表,包括子表单中的组件 + * @param formConfig + * @return + */ + List getAllFormAttributeList(JSONObject formConfig); + /** * 获取表单组件类型 * @param attributeUuid 属性唯一标识 diff --git a/src/main/java/neatlogic/module/framework/dependency/handler/Integration2FormAttrDependencyHandler.java b/src/main/java/neatlogic/module/framework/dependency/handler/Integration2FormAttrDependencyHandler.java index 58661259c592c4e9dea8ae119311a8398bfa26bf..c2350478c60fbdac545f765bab481fd0b5f2677e 100644 --- a/src/main/java/neatlogic/module/framework/dependency/handler/Integration2FormAttrDependencyHandler.java +++ b/src/main/java/neatlogic/module/framework/dependency/handler/Integration2FormAttrDependencyHandler.java @@ -16,6 +16,7 @@ limitations under the License. package neatlogic.module.framework.dependency.handler; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.asynchronization.threadlocal.TenantContext; import neatlogic.framework.dependency.constvalue.FrameworkFromType; import neatlogic.framework.dependency.core.FixedTableDependencyHandlerBase; @@ -26,11 +27,9 @@ import neatlogic.framework.form.dao.mapper.FormMapper; import neatlogic.framework.form.dto.FormAttributeVo; import neatlogic.framework.form.dto.FormVersionVo; import neatlogic.framework.form.dto.FormVo; -import com.alibaba.fastjson.JSONObject; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.ArrayList; @@ -38,11 +37,12 @@ import java.util.List; import java.util.Objects; /** - * 表单属性引用矩阵属性关系处理器 + * 表单属性引用集成属性关系处理器 * @author linbq * @since 2022/1/7 15:50 **/ -@Component +//@Component +@Deprecated public class Integration2FormAttrDependencyHandler extends FixedTableDependencyHandlerBase { @Resource diff --git a/src/main/java/neatlogic/module/framework/dependency/handler/Matrix2FormAttributeDependencyHandler.java b/src/main/java/neatlogic/module/framework/dependency/handler/Matrix2FormAttributeDependencyHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..b31038c6929fd6f4a5a461639dc98658c8df6dcb --- /dev/null +++ b/src/main/java/neatlogic/module/framework/dependency/handler/Matrix2FormAttributeDependencyHandler.java @@ -0,0 +1,108 @@ +package neatlogic.module.framework.dependency.handler; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.asynchronization.threadlocal.TenantContext; +import neatlogic.framework.dependency.constvalue.FrameworkFromType; +import neatlogic.framework.dependency.core.FixedTableDependencyHandlerBase; +import neatlogic.framework.dependency.core.IFromType; +import neatlogic.framework.dependency.dto.DependencyInfoVo; +import neatlogic.framework.dependency.dto.DependencyVo; +import neatlogic.framework.form.dao.mapper.FormMapper; +import neatlogic.framework.form.dto.FormAttributeVo; +import neatlogic.framework.form.dto.FormVersionVo; +import neatlogic.framework.form.dto.FormVo; +import neatlogic.module.framework.form.service.FormService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@Component +public class Matrix2FormAttributeDependencyHandler extends FixedTableDependencyHandlerBase { + + @Resource + private FormMapper formMapper; + + @Resource + private FormService formService; + + @Override + protected DependencyInfoVo parse(DependencyVo dependencyVo) { + JSONObject config = dependencyVo.getConfig(); + if (MapUtils.isEmpty(config)) { + return null; + } + String formVersionUuid = config.getString("formVersionUuid"); + if (StringUtils.isBlank(formVersionUuid)) { + return null; + } + FormVersionVo formVersionVo = formMapper.getFormVersionByUuid(formVersionUuid); + if (formVersionVo == null) { + return null; + } + FormVo formVo = formMapper.getFormByUuid(formVersionVo.getFormUuid()); + if (formVo == null) { + return null; + } + JSONObject dependencyInfoConfig = new JSONObject(); + dependencyInfoConfig.put("formUuid", formVo.getUuid()); + dependencyInfoConfig.put("formVersionUuid", formVersionVo.getUuid()); + List pathList = new ArrayList<>(); + pathList.add("表单管理"); + pathList.add(formVo.getName()); + pathList.add(formVersionVo.getVersion().toString()); + String sceneName = getSceneName(formVersionVo, config.getString("sceneUuid")); + if (StringUtils.isNotBlank(sceneName)) { + pathList.add(sceneName); + } + String lastName = getFormAttributeLabel(formVersionVo, dependencyVo.getTo()); + String urlFormat = "/" + TenantContext.get().getTenantUuid() + "/framework.html#/form-edit?uuid=${DATA.formUuid}¤tVersionUuid=${DATA.formVersionUuid}"; + return new DependencyInfoVo(dependencyVo.getTo(), dependencyInfoConfig, lastName, pathList, urlFormat, this.getGroupName()); + } + + private String getSceneName(FormVersionVo formVersion, String sceneUuid) { + JSONObject formConfig = formVersion.getFormConfig(); + String uuid = formConfig.getString("uuid"); + if (Objects.equals(uuid, sceneUuid)) { +// String name = formConfig.getString("name"); +// return name; + return null; + } + JSONArray sceneList = formConfig.getJSONArray("sceneList"); + if (CollectionUtils.isNotEmpty(sceneList)) { + for (int i = 0; i < sceneList.size(); i++) { + JSONObject sceneObj = sceneList.getJSONObject(i); + if (MapUtils.isEmpty(sceneObj)) { + continue; + } + uuid = sceneObj.getString("uuid"); + if (Objects.equals(uuid, sceneUuid)) { + String name = sceneObj.getString("name"); + return name; + } + } + } + return null; + } + + private String getFormAttributeLabel(FormVersionVo formVersion, String formAttributeUuid) { + List allFormAttributeList = formService.getAllFormAttributeList(formVersion.getFormConfig()); + for (FormAttributeVo formAttribute : allFormAttributeList) { + if (Objects.equals(formAttribute.getUuid(), formAttributeUuid)) { + return formAttribute.getLabel(); + } + } + return ""; + } + + @Override + public IFromType getFromType() { + return FrameworkFromType.MATRIX; + } +} diff --git a/src/main/java/neatlogic/module/framework/dependency/handler/MatrixFormAttributeDependencyHandler.java b/src/main/java/neatlogic/module/framework/dependency/handler/MatrixFormAttributeDependencyHandler.java index 0ab6006419b2aac7b8be041a79415daf3cd2fd97..c5324e8156835e4584daa4e367dabe55aa5327dc 100644 --- a/src/main/java/neatlogic/module/framework/dependency/handler/MatrixFormAttributeDependencyHandler.java +++ b/src/main/java/neatlogic/module/framework/dependency/handler/MatrixFormAttributeDependencyHandler.java @@ -16,15 +16,11 @@ limitations under the License. package neatlogic.module.framework.dependency.handler; -import neatlogic.framework.asynchronization.threadlocal.TenantContext; import neatlogic.framework.dependency.constvalue.FrameworkFromType; import neatlogic.framework.dependency.core.CustomTableDependencyHandlerBase; import neatlogic.framework.dependency.core.IFromType; import neatlogic.framework.dependency.dto.DependencyInfoVo; import neatlogic.framework.form.dao.mapper.FormMapper; -import neatlogic.framework.form.dto.FormAttributeMatrixVo; -import com.alibaba.fastjson.JSONObject; -import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; @@ -36,7 +32,8 @@ import java.util.List; * @author: linbq * @since: 2021/4/1 11:42 **/ -@Service +//@Service +@Deprecated public class MatrixFormAttributeDependencyHandler extends CustomTableDependencyHandlerBase { @Resource @@ -88,23 +85,23 @@ public class MatrixFormAttributeDependencyHandler extends CustomTableDependencyH if (dependencyObj == null) { return null; } - if (dependencyObj instanceof FormAttributeMatrixVo) { - FormAttributeMatrixVo formAttributeMatrixVo = (FormAttributeMatrixVo) dependencyObj; - JSONObject dependencyInfoConfig = new JSONObject(); - dependencyInfoConfig.put("formUuid", formAttributeMatrixVo.getFormUuid()); -// dependencyInfoConfig.put("formName", formAttributeMatrixVo.getFormName()); -// dependencyInfoConfig.put("formVersion", formAttributeMatrixVo.getVersion()); - dependencyInfoConfig.put("formVersionUuid", formAttributeMatrixVo.getFormVersionUuid()); -// dependencyInfoConfig.put("attributeLabel", formAttributeMatrixVo.getFormAttributeLabel()); - List pathList = new ArrayList<>(); - pathList.add("表单管理"); - pathList.add(formAttributeMatrixVo.getFormName()); - pathList.add(formAttributeMatrixVo.getVersion()); - String lastName = formAttributeMatrixVo.getFormAttributeLabel(); -// String pathFormat = "表单-${DATA.formName}-${DATA.formVersion}-${DATA.attributeLabel}"; - String urlFormat = "/" + TenantContext.get().getTenantUuid() + "/framework.html#/form-edit?uuid=${DATA.formUuid}¤tVersionUuid=${DATA.formVersionUuid}"; - return new DependencyInfoVo(formAttributeMatrixVo.getFormAttributeUuid(), dependencyInfoConfig, lastName, pathList, urlFormat, this.getGroupName()); - } +// if (dependencyObj instanceof FormAttributeMatrixVo) { +// FormAttributeMatrixVo formAttributeMatrixVo = (FormAttributeMatrixVo) dependencyObj; +// JSONObject dependencyInfoConfig = new JSONObject(); +// dependencyInfoConfig.put("formUuid", formAttributeMatrixVo.getFormUuid()); +//// dependencyInfoConfig.put("formName", formAttributeMatrixVo.getFormName()); +//// dependencyInfoConfig.put("formVersion", formAttributeMatrixVo.getVersion()); +// dependencyInfoConfig.put("formVersionUuid", formAttributeMatrixVo.getFormVersionUuid()); +//// dependencyInfoConfig.put("attributeLabel", formAttributeMatrixVo.getFormAttributeLabel()); +// List pathList = new ArrayList<>(); +// pathList.add("表单管理"); +// pathList.add(formAttributeMatrixVo.getFormName()); +// pathList.add(formAttributeMatrixVo.getVersion()); +// String lastName = formAttributeMatrixVo.getFormAttributeLabel(); +//// String pathFormat = "表单-${DATA.formName}-${DATA.formVersion}-${DATA.attributeLabel}"; +// String urlFormat = "/" + TenantContext.get().getTenantUuid() + "/framework.html#/form-edit?uuid=${DATA.formUuid}¤tVersionUuid=${DATA.formVersionUuid}"; +// return new DependencyInfoVo(formAttributeMatrixVo.getFormAttributeUuid(), dependencyInfoConfig, lastName, pathList, urlFormat, this.getGroupName()); +// } return null; } @@ -129,13 +126,13 @@ public class MatrixFormAttributeDependencyHandler extends CustomTableDependencyH @Override public List getDependencyList(Object from, int startNum, int pageSize) { List resultList = new ArrayList<>(); - List callerList = formMapper.getFormAttributeMatrixByMatrixUuid((String) from, startNum, pageSize); - for (FormAttributeMatrixVo caller : callerList) { - DependencyInfoVo valueTextVo = parse(caller); - if (valueTextVo != null) { - resultList.add(valueTextVo); - } - } +// List callerList = formMapper.getFormAttributeMatrixByMatrixUuid((String) from, startNum, pageSize); +// for (FormAttributeMatrixVo caller : callerList) { +// DependencyInfoVo valueTextVo = parse(caller); +// if (valueTextVo != null) { +// resultList.add(valueTextVo); +// } +// } return resultList; } } diff --git a/src/main/java/neatlogic/module/framework/form/service/FormService.java b/src/main/java/neatlogic/module/framework/form/service/FormService.java index 7841665b97f6c24402b5be92bd8062c46e868918..e5b86033e3217ef62485d408b581d809fec739a4 100644 --- a/src/main/java/neatlogic/module/framework/form/service/FormService.java +++ b/src/main/java/neatlogic/module/framework/form/service/FormService.java @@ -29,9 +29,15 @@ import java.util.List; public interface FormService { /** * 保存表单属性与其他功能的引用关系 - * @param formAttributeVo + * @param formVersion */ - void saveDependency(FormAttributeVo formAttributeVo); + void saveDependency(FormVersionVo formVersion); + + /** + * 删除表单属性与其他功能的引用关系 + * @param formVersion + */ + void deleteDependency(FormVersionVo formVersion); /** * 表格输入组件密码类型加密 diff --git a/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java b/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java index 29568c82bdaa8db38732285318a70e30432a0939..d1b0b63c82de8ca35cf256f79f700897736670db 100644 --- a/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java +++ b/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java @@ -23,9 +23,7 @@ import neatlogic.framework.dependency.core.DependencyManager; import neatlogic.framework.form.attribute.core.FormAttributeHandlerFactory; import neatlogic.framework.form.attribute.core.IFormAttributeHandler; import neatlogic.framework.form.constvalue.FormHandler; -import neatlogic.framework.form.dao.mapper.FormMapper; import neatlogic.framework.form.dto.AttributeDataVo; -import neatlogic.framework.form.dto.FormAttributeMatrixVo; import neatlogic.framework.form.dto.FormAttributeVo; import neatlogic.framework.form.dto.FormVersionVo; import neatlogic.framework.form.exception.AttributeValidException; @@ -41,7 +39,7 @@ import neatlogic.framework.matrix.dto.MatrixKeywordFilterVo; import neatlogic.framework.matrix.dto.MatrixVo; import neatlogic.framework.matrix.exception.MatrixDataSourceHandlerNotFoundException; import neatlogic.framework.matrix.exception.MatrixNotFoundException; -import neatlogic.module.framework.dependency.handler.Integration2FormAttrDependencyHandler; +import neatlogic.module.framework.dependency.handler.Matrix2FormAttributeDependencyHandler; import neatlogic.module.framework.dependency.handler.MatrixAttr2FormAttrDependencyHandler; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -49,71 +47,172 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; @Service public class FormServiceImpl implements FormService, IFormCrossoverService { - @Resource - private FormMapper formMapper; - @Resource private MatrixMapper matrixMapper; - /** - * 保存表单属性与其他功能的引用关系 - * @param formAttributeVo - */ @Override - public void saveDependency(FormAttributeVo formAttributeVo) { - String formUuid = formAttributeVo.getFormUuid(); - String formVersionUuid = formAttributeVo.getFormVersionUuid(); - IFormAttributeHandler formAttributeHandler = FormAttributeHandlerFactory.getHandler(formAttributeVo.getHandler()); - if (formAttributeHandler == null) { -// throw new FormAttributeHandlerNotFoundException(formAttributeVo.getHandler()); + public void saveDependency(FormVersionVo formVersion) { + saveOrDeleteDependency(true, formVersion); + } + + @Override + public void deleteDependency(FormVersionVo formVersion) { + saveOrDeleteDependency(false, formVersion); + } + + private void saveOrDeleteDependency(boolean isSave, FormVersionVo formVersion) { + JSONObject formConfig = formVersion.getFormConfig(); + if (MapUtils.isEmpty(formConfig)) { return; } - formAttributeHandler.makeupFormAttribute(formAttributeVo); - Set matrixUuidSet = formAttributeVo.getMatrixUuidSet(); - if (CollectionUtils.isNotEmpty(matrixUuidSet)) { - for (String matrixUuid : matrixUuidSet) { - FormAttributeMatrixVo formAttributeMatrixVo = new FormAttributeMatrixVo(); - formAttributeMatrixVo.setMatrixUuid(matrixUuid); - formAttributeMatrixVo.setFormVersionUuid(formVersionUuid); - formAttributeMatrixVo.setFormAttributeLabel(formAttributeVo.getLabel()); - formAttributeMatrixVo.setFormAttributeUuid(formAttributeVo.getUuid()); - formMapper.insertFormAttributeMatrix(formAttributeMatrixVo); - } + String sceneUuid = formConfig.getString("uuid"); + doSaveOrDeleteDependency(isSave, formVersion.getFormUuid(), formVersion.getUuid(), sceneUuid, formConfig); + } + + private void doSaveOrDeleteDependency(boolean isSave, String formUuid, String formVersionUuid, String sceneUuid, JSONObject formConfig) { + if (MapUtils.isEmpty(formConfig)) { + return; } + JSONArray tableList = formConfig.getJSONArray("tableList"); + if (CollectionUtils.isNotEmpty(tableList)) { + for (int i = 0; i < tableList.size(); i++) { + JSONObject tableObj = tableList.getJSONObject(i); + if (MapUtils.isEmpty(tableObj)) { + continue; + } + JSONObject component = tableObj.getJSONObject("component"); + doSaveOrDeleteComponentDependency(isSave, formUuid, formVersionUuid, sceneUuid, component); - Set integrationUuidSet = formAttributeVo.getIntegrationUuidSet(); - if (CollectionUtils.isNotEmpty(integrationUuidSet)) { - JSONObject config = new JSONObject(); - config.put("formUuid", formUuid); - config.put("formVersionUuid", formVersionUuid); - config.put("formAttributeUuid", formAttributeVo.getUuid()); - for (String integrationUuid : integrationUuidSet) { - config.put("integrationUuid", integrationUuid); - DependencyManager.insert(Integration2FormAttrDependencyHandler.class, integrationUuid, formAttributeVo.getUuid(), config); } } + JSONArray sceneList = formConfig.getJSONArray("sceneList"); + if (CollectionUtils.isNotEmpty(sceneList)) { + for (int i = 0; i < sceneList.size(); i++) { + JSONObject sceneObj = sceneList.getJSONObject(i); + String sceneUuid2 = sceneObj.getString("uuid"); + doSaveOrDeleteDependency(isSave, formUuid, formVersionUuid, sceneUuid2, sceneObj); + } + } + } + + private void doSaveOrDeleteComponentDependency(boolean isSave, String formUuid, String formVersionUuid, String sceneUuid, JSONObject component) { + if (MapUtils.isEmpty(component)) { + return; + } + Boolean inherit = component.getBoolean("inherit"); + if (Objects.equals(inherit, true)) { + return; + } + List handlerList = new ArrayList<>(); + handlerList.add(FormHandler.FORMSELECT.getHandler()); + handlerList.add(FormHandler.FORMRADIO.getHandler()); + handlerList.add(FormHandler.FORMCHECKBOX.getHandler()); + handlerList.add(FormHandler.FORMTABLESELECTOR.getHandler()); + String handler = component.getString("handler"); + if (handlerList.contains(handler)) { + String uuid = component.getString("uuid"); + // 单选框、复选框、下拉框、表格选择组件 + JSONObject config = component.getJSONObject("config"); + if (MapUtils.isEmpty(config)) { + return; + } + String dataSource = config.getString("dataSource"); + if (!Objects.equals(dataSource, "matrix")) { + return; + } + String matrixUuid = config.getString("matrixUuid"); + if (StringUtils.isBlank(matrixUuid)) { + return; + } + if (isSave) { + JSONObject dependencyConfig = new JSONObject(); + dependencyConfig.put("formUuid", formUuid); + dependencyConfig.put("formVersionUuid", formVersionUuid); + dependencyConfig.put("sceneUuid", sceneUuid); + DependencyManager.insert(Matrix2FormAttributeDependencyHandler.class, matrixUuid, uuid, dependencyConfig); - Map> matrixUuidAttributeUuidSetMap = formAttributeVo.getMatrixUuidAttributeUuidSetMap(); - if (MapUtils.isNotEmpty(matrixUuidAttributeUuidSetMap)) { - JSONObject config = new JSONObject(); - config.put("formUuid", formUuid); - config.put("formVersionUuid", formVersionUuid); - for (Map.Entry> entry : matrixUuidAttributeUuidSetMap.entrySet()) { - String matrixUuid = entry.getKey(); - config.put("matrixUuid", matrixUuid); - Set attributeUuidSet = entry.getValue(); - if (CollectionUtils.isNotEmpty(attributeUuidSet)) { - for (String attributeUuid : attributeUuidSet) { - DependencyManager.insert(MatrixAttr2FormAttrDependencyHandler.class, attributeUuid, formAttributeVo.getUuid(), config); + dependencyConfig.put("matrixUuid", matrixUuid); + if (Objects.equals(handler, FormHandler.FORMTABLESELECTOR.getHandler())) { + JSONArray dataConfig = config.getJSONArray("dataConfig"); + if (CollectionUtils.isEmpty(dataConfig)) { + return; + } + for (int i = 0; i < dataConfig.size(); i++) { + JSONObject dataObj = dataConfig.getJSONObject(i); + if (MapUtils.isEmpty(dataObj)) { + continue; + } + String columnUuid = dataObj.getString("uuid"); + if (StringUtils.isBlank(columnUuid)) { + continue; + } + DependencyManager.insert(MatrixAttr2FormAttrDependencyHandler.class, columnUuid, uuid, dependencyConfig); + } + } else { + JSONObject mapping = config.getJSONObject("mapping"); + if (MapUtils.isEmpty(mapping)) { + return; + } + String value = mapping.getString("value"); + String text = mapping.getString("text"); + if (StringUtils.isNotBlank(value)) { + DependencyManager.insert(MatrixAttr2FormAttrDependencyHandler.class, value, uuid, dependencyConfig); + } + if (StringUtils.isNotBlank(text)) { + DependencyManager.insert(MatrixAttr2FormAttrDependencyHandler.class, text, uuid, dependencyConfig); } } + } else { + DependencyManager.delete(Matrix2FormAttributeDependencyHandler.class, uuid); + DependencyManager.delete(MatrixAttr2FormAttrDependencyHandler.class, uuid); + } + } else if (Objects.equals(handler, FormHandler.FORMTABLEINPUTER.getHandler())) { + // 表格输入组件 + JSONObject config = component.getJSONObject("config"); + if (MapUtils.isEmpty(config)) { + return; + } + JSONArray dataConfig = config.getJSONArray("dataConfig"); + for (int i = 0; i < dataConfig.size(); i++) { + JSONObject dataObj = dataConfig.getJSONObject(i); + if (Objects.equals(dataObj.getString("handler"), "formtable")) { + JSONObject config1 = dataObj.getJSONObject("config"); + if (MapUtils.isEmpty(config1)) { + continue; + } + JSONArray dataConfig1 = config1.getJSONArray("dataConfig"); + for (int j = 0; j < dataConfig1.size(); j++) { + JSONObject dataObj1 = dataConfig1.getJSONObject(j); + doSaveOrDeleteComponentDependency(isSave, formUuid, formVersionUuid, sceneUuid, dataObj1); + } + } else { + doSaveOrDeleteComponentDependency(isSave, formUuid, formVersionUuid, sceneUuid, dataObj); + } + } + } else if (Objects.equals(handler, FormHandler.FORMTAB.getHandler()) || Objects.equals(handler, FormHandler.FORMCOLLAPSE.getHandler())) { + // 选项卡、折叠面板 + JSONArray componentArray = component.getJSONArray("component"); + for (int i = 0; i < componentArray.size(); i++) { + JSONObject componentObj = componentArray.getJSONObject(i); + doSaveOrDeleteComponentDependency(isSave, formUuid, formVersionUuid, sceneUuid, componentObj); + } + } else if (Objects.equals(handler, FormHandler.FORMSUBASSEMBLY.getHandler())) { + // 子表单 + JSONObject formData = component.getJSONObject("formData"); + if (MapUtils.isEmpty(formData)) { + return; } + JSONObject formConfig = formData.getJSONObject("formConfig"); + doSaveOrDeleteDependency(isSave, formUuid, formVersionUuid, sceneUuid, formConfig); } } diff --git a/src/main/java/neatlogic/module/framework/importexport/handler/FormImportExportHandler.java b/src/main/java/neatlogic/module/framework/importexport/handler/FormImportExportHandler.java index ceacb072a3c6bce145f3ac6d34e1c5eccd067030..219c57a836e3cf01f41e872beda7cc1320db773d 100644 --- a/src/main/java/neatlogic/module/framework/importexport/handler/FormImportExportHandler.java +++ b/src/main/java/neatlogic/module/framework/importexport/handler/FormImportExportHandler.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.asynchronization.threadlocal.UserContext; import neatlogic.framework.crossover.CrossoverServiceFactory; -import neatlogic.framework.dependency.core.DependencyManager; import neatlogic.framework.form.constvalue.FormHandler; import neatlogic.framework.form.dao.mapper.FormMapper; import neatlogic.framework.form.dto.FormAttributeVo; @@ -19,8 +18,6 @@ import neatlogic.framework.importexport.core.ImportExportHandlerType; import neatlogic.framework.importexport.dto.ImportExportBaseInfoVo; import neatlogic.framework.importexport.dto.ImportExportPrimaryChangeVo; import neatlogic.framework.importexport.dto.ImportExportVo; -import neatlogic.module.framework.dependency.handler.Integration2FormAttrDependencyHandler; -import neatlogic.module.framework.dependency.handler.MatrixAttr2FormAttrDependencyHandler; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -107,20 +104,14 @@ public class FormImportExportHandler extends ImportExportHandlerBase { importHandle(formVersion, primaryChangeList); + IFormCrossoverService formCrossoverService = CrossoverServiceFactory.getApi(IFormCrossoverService.class); // 处理表单版本 formVersion.setFormUuid(form.getUuid()); formVersion.setIsActive(0); FormVersionVo oldFormVersion = formMapper.getFormVersionByUuid(formVersion.getUuid()); if (oldFormVersion != null) { // 删除依赖 - formMapper.deleteFormAttributeMatrixByFormVersionUuid(oldFormVersion.getUuid()); - List formAttributeList = oldFormVersion.getFormAttributeList(); - if (CollectionUtils.isNotEmpty(formAttributeList)) { - for (FormAttributeVo formAttributeVo : formAttributeList) { - DependencyManager.delete(MatrixAttr2FormAttrDependencyHandler.class, formAttributeVo.getUuid()); - DependencyManager.delete(Integration2FormAttrDependencyHandler.class, formAttributeVo.getUuid()); - } - } + formCrossoverService.deleteDependency(oldFormVersion); formVersion.setLcu(UserContext.get().getUserUuid()); formMapper.updateFormVersion(formVersion); } else { @@ -134,13 +125,9 @@ public class FormImportExportHandler extends ImportExportHandlerBase { formVersion.setFcu(UserContext.get().getUserUuid()); formMapper.insertFormVersion(formVersion); } - - IFormCrossoverService formCrossoverService = CrossoverServiceFactory.getApi(IFormCrossoverService.class); // 插入依赖 + formCrossoverService.saveDependency(formVersion); List formAttributeList = formVersion.getFormAttributeList(); - for (FormAttributeVo formAttributeVo : formAttributeList) { - formCrossoverService.saveDependency(formAttributeVo); - } // 激活版本 FormVersionVo oldActiveFormVersion = formMapper.getActionFormVersionByFormUuid(form.getUuid()); if (oldActiveFormVersion != null) { diff --git a/src/main/resources/neatlogic/resources/framework/sqlscript/ddl.sql b/src/main/resources/neatlogic/resources/framework/sqlscript/ddl.sql index 45bbd727b0e9079234598acf6c4ac4c788da1170..af378a8d916559e0009b0695332414e580256c1f 100644 --- a/src/main/resources/neatlogic/resources/framework/sqlscript/ddl.sql +++ b/src/main/resources/neatlogic/resources/framework/sqlscript/ddl.sql @@ -238,17 +238,6 @@ CREATE TABLE IF NOT EXISTS `form_attribute` ( PRIMARY KEY (`form_uuid`,`formversion_uuid`,`uuid`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='表单版本属性'; --- ---------------------------- --- Table structure for form_attribute_matrix --- ---------------------------- -CREATE TABLE IF NOT EXISTS `form_attribute_matrix` ( - `form_version_uuid` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单版本uuid', - `matrix_uuid` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '矩阵uuid', - `form_attribute_label` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '表单组件名称', - `form_attribute_uuid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单组件uuid', - PRIMARY KEY (`form_version_uuid`,`matrix_uuid`,`form_attribute_uuid`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='表单属性引用矩阵关系表'; - -- ---------------------------- -- Table structure for form_customitem -- ---------------------------- diff --git a/src/main/resources/neatlogic/resources/framework/sqlscript/dmldemo.sql b/src/main/resources/neatlogic/resources/framework/sqlscript/dmldemo.sql index 477620e9deee11565926aec4ba7a7ea12720c348..3bc5adc442d87f1e0ea5266f1ea2fdfa89515e01 100644 --- a/src/main/resources/neatlogic/resources/framework/sqlscript/dmldemo.sql +++ b/src/main/resources/neatlogic/resources/framework/sqlscript/dmldemo.sql @@ -4095,6 +4095,20 @@ insert into `dependency`(`from`,`type`,`to`,`config`) values ('dda6117e828e4071 insert into `dependency`(`from`,`type`,`to`,`config`) values ('f7a6b24f9d08496f958aa9366fb5e382','MatrixAttr2FormAttrDependencyHandler','8873b3e08bd348538e320198ce514385','{\"formUuid\":\"16ef78f5652d49f497f5217a95c8b288\",\"matrixUuid\":\"8b237e7b2623429d98d3d4d39976479e\",\"formVersionUuid\":\"cc26c80cab3c4beea44b971186f91957\"}'); insert into `dependency`(`from`,`type`,`to`,`config`) values ('f7a6b24f9d08496f958aa9366fb5e382','MatrixAttr2FormAttrDependencyHandler','e1fbf19abc99480fabb44b8a5685404c','{\"formUuid\":\"16ef78f5652d49f497f5217a95c8b288\",\"matrixUuid\":\"8b237e7b2623429d98d3d4d39976479e\",\"formVersionUuid\":\"cc26c80cab3c4beea44b971186f91957\"}'); insert into `dependency`(`from`,`type`,`to`,`config`) values ('f9122278c76e47a59eec72b122f08ab9','FormScene2ProcessStepDependencyHandler','f12b51f2a993450ba54cbbd583536aea','{\"stepUuid\":\"f12b51f2a993450ba54cbbd583536aea\",\"processName\":\"业务系统下线流程\",\"stepName\":\"主机下线\",\"processUuid\":\"03e672b2575041d588ec6dec33784dc0\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','25995d3ea4f348d8bce9ebcedfb3ed9a','{\"formVersionUuid\":\"32a6240130ed4dfaafc98ea117bcc235\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','6c7f84927f6a46ffbce15113649ca18f','{\"formVersionUuid\":\"32a6240130ed4dfaafc98ea117bcc235\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','f848092950f448c4b25497562d42410d','{\"formVersionUuid\":\"32a6240130ed4dfaafc98ea117bcc235\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('b988295c268035b49dfb3df26171ddc3','Matrix2FormAttributeDependencyHandler','b87b1c1e909f4a0da369a6b244aa4ffc','{\"formVersionUuid\":\"57479a5a1efa47018c5fdcad19097b62\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','2b6db28780c4419b9824fe81996a6e0d','{\"formVersionUuid\":\"b165e7c5646240a6bbee5fbb85afb7a8\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','357b422b64c34ba9b9a1bbd5d28d4705','{\"formVersionUuid\":\"b165e7c5646240a6bbee5fbb85afb7a8\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','6c9a36fbd0a64efe85b94edc91291a77','{\"formVersionUuid\":\"b165e7c5646240a6bbee5fbb85afb7a8\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','f5ef8e9b1a454fb8bc0223b28da03630','{\"formVersionUuid\":\"b165e7c5646240a6bbee5fbb85afb7a8\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('a5dc289dc20d44b5b07ce975a0c5615e','Matrix2FormAttributeDependencyHandler','ef2876cd511c4b128c06d1cc578bbf7c','{\"formVersionUuid\":\"b165e7c5646240a6bbee5fbb85afb7a8\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('b988295c268035b49dfb3df26171ddc3','Matrix2FormAttributeDependencyHandler','f81a4a27bec049298185ece2000aa7aa','{\"formVersionUuid\":\"b60158c538bf4527bb74ead2a06d0d4a\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','3f210303c9954c5cb572140caa06f109','{\"formVersionUuid\":\"cc26c80cab3c4beea44b971186f91957\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','8873b3e08bd348538e320198ce514385','{\"formVersionUuid\":\"cc26c80cab3c4beea44b971186f91957\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','90de2e5e01df4511b65432f04501324c','{\"formVersionUuid\":\"cc26c80cab3c4beea44b971186f91957\"}'); +insert into `dependency`(`from`,`type`,`to`,`config`) values ('8b237e7b2623429d98d3d4d39976479e','Matrix2FormAttributeDependencyHandler','e1fbf19abc99480fabb44b8a5685404c','{\"formVersionUuid\":\"cc26c80cab3c4beea44b971186f91957\"}'); @@ -4303,20 +4317,6 @@ insert into `form_attribute`(`form_uuid`,`formversion_uuid`,`uuid`,`label`,`typ -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('32a6240130ed4dfaafc98ea117bcc235','8b237e7b2623429d98d3d4d39976479e','系统优先级','25995d3ea4f348d8bce9ebcedfb3ed9a'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('32a6240130ed4dfaafc98ea117bcc235','8b237e7b2623429d98d3d4d39976479e','系统中文名','6c7f84927f6a46ffbce15113649ca18f'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('32a6240130ed4dfaafc98ea117bcc235','8b237e7b2623429d98d3d4d39976479e','系统编码','f848092950f448c4b25497562d42410d'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('57479a5a1efa47018c5fdcad19097b62','b988295c268035b49dfb3df26171ddc3','优先级','b87b1c1e909f4a0da369a6b244aa4ffc'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('b165e7c5646240a6bbee5fbb85afb7a8','8b237e7b2623429d98d3d4d39976479e','系统编码','2b6db28780c4419b9824fe81996a6e0d'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('b165e7c5646240a6bbee5fbb85afb7a8','8b237e7b2623429d98d3d4d39976479e','系统类别','357b422b64c34ba9b9a1bbd5d28d4705'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('b165e7c5646240a6bbee5fbb85afb7a8','8b237e7b2623429d98d3d4d39976479e','系统中文名称','6c9a36fbd0a64efe85b94edc91291a77'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('b165e7c5646240a6bbee5fbb85afb7a8','8b237e7b2623429d98d3d4d39976479e','系统搜索','f5ef8e9b1a454fb8bc0223b28da03630'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('b165e7c5646240a6bbee5fbb85afb7a8','a5dc289dc20d44b5b07ce975a0c5615e','源服务器使用人','ef2876cd511c4b128c06d1cc578bbf7c'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('b60158c538bf4527bb74ead2a06d0d4a','b988295c268035b49dfb3df26171ddc3','优先级','f81a4a27bec049298185ece2000aa7aa'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('cc26c80cab3c4beea44b971186f91957','8b237e7b2623429d98d3d4d39976479e','系统类别','3f210303c9954c5cb572140caa06f109'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('cc26c80cab3c4beea44b971186f91957','8b237e7b2623429d98d3d4d39976479e','系统搜索','8873b3e08bd348538e320198ce514385'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('cc26c80cab3c4beea44b971186f91957','8b237e7b2623429d98d3d4d39976479e','系统编码','90de2e5e01df4511b65432f04501324c'); -insert into `form_attribute_matrix`(`form_version_uuid`,`matrix_uuid`,`form_attribute_label`,`form_attribute_uuid`) values ('cc26c80cab3c4beea44b971186f91957','8b237e7b2623429d98d3d4d39976479e','系统中文名称','e1fbf19abc99480fabb44b8a5685404c'); @@ -5530,4 +5530,4 @@ insert into `worktime_range`(`worktime_uuid`,`year`,`date`,`start_time`,`end_ti insert into `worktime_range`(`worktime_uuid`,`year`,`date`,`start_time`,`end_time`) values ('83f4bd7ab8354ce2ab11377e75352272',2023,'2023-12-28',1703743200000,1703757600000); insert into `worktime_range`(`worktime_uuid`,`year`,`date`,`start_time`,`end_time`) values ('83f4bd7ab8354ce2ab11377e75352272',2023,'2023-12-29',1703808000000,1703822400000); insert into `worktime_range`(`worktime_uuid`,`year`,`date`,`start_time`,`end_time`) values ('83f4bd7ab8354ce2ab11377e75352272',2023,'2023-12-29',1703829600000,1703844000000); -COMMIT; \ No newline at end of file +COMMIT;