From 2ee65e2884c4b3b0798c8112924ab0d468cf827d Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 12 Jun 2024 15:55:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20IT=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?-=E7=AC=AC=E4=B8=89=E6=96=B9=E4=B8=8A=E6=8A=A5=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E6=8E=A5=E5=8F=A3=E8=A1=A8=E5=8D=95=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E6=A1=86=E6=95=B0=E6=8D=AE=E9=9C=80=E8=A6=81=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E5=B1=9E=E6=80=A7=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #[1177509075320832]IT服务-第三方上报工单接口表单下拉框数据需要补充隐藏属性值 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1177509075320832 --- .../IFormAttributeDataConversionHandler.java | 9 + .../attribute/handler/CheckboxHandler.java | 5 + .../form/attribute/handler/RadioHandler.java | 5 + .../form/attribute/handler/SelectHandler.java | 5 + .../attribute/handler/UserSelectHandler.java | 38 +++ .../framework/form/service/FormService.java | 8 + .../form/service/FormServiceImpl.java | 232 +++++++++++++++++- 7 files changed, 294 insertions(+), 8 deletions(-) diff --git a/src/main/java/neatlogic/framework/form/attribute/core/IFormAttributeDataConversionHandler.java b/src/main/java/neatlogic/framework/form/attribute/core/IFormAttributeDataConversionHandler.java index 736992130..016b47821 100644 --- a/src/main/java/neatlogic/framework/form/attribute/core/IFormAttributeDataConversionHandler.java +++ b/src/main/java/neatlogic/framework/form/attribute/core/IFormAttributeDataConversionHandler.java @@ -51,6 +51,15 @@ public interface IFormAttributeDataConversionHandler { return originalValue; } + /** + * 通过简单值获取标准值,例如下拉框的简单值为a或A,返回标准值为{"value":"a", "text":"A"} + * @param simpleValue + * @return + */ + default Object getStandardValueBySimpleValue(Object simpleValue, JSONObject configObj) { + return simpleValue; + } + /** * 数据转换,用于邮件模板展示表单信息 * diff --git a/src/main/java/neatlogic/module/framework/form/attribute/handler/CheckboxHandler.java b/src/main/java/neatlogic/module/framework/form/attribute/handler/CheckboxHandler.java index d6f24f7b3..be3a160ea 100644 --- a/src/main/java/neatlogic/module/framework/form/attribute/handler/CheckboxHandler.java +++ b/src/main/java/neatlogic/module/framework/form/attribute/handler/CheckboxHandler.java @@ -83,6 +83,11 @@ public class CheckboxHandler extends FormHandlerBase { return FormUtil.getFormSelectAttributeValueByOriginalValue(originalValue); } + @Override + public Object getStandardValueBySimpleValue(Object simpleValue, JSONObject configObj) { + return formService.getSelectStandardValueBySimpleValue(simpleValue, configObj); + } + @Override public Object dataTransformationForEmail(AttributeDataVo attributeDataVo, JSONObject configObj) { JSONObject resultObj = getMyDetailedData(attributeDataVo, configObj); diff --git a/src/main/java/neatlogic/module/framework/form/attribute/handler/RadioHandler.java b/src/main/java/neatlogic/module/framework/form/attribute/handler/RadioHandler.java index 3dc91b2ba..e40ea9eda 100644 --- a/src/main/java/neatlogic/module/framework/form/attribute/handler/RadioHandler.java +++ b/src/main/java/neatlogic/module/framework/form/attribute/handler/RadioHandler.java @@ -100,6 +100,11 @@ public class RadioHandler extends FormHandlerBase { return FormUtil.getFormSelectAttributeValueByOriginalValue(originalValue); } + @Override + public Object getStandardValueBySimpleValue(Object simpleValue, JSONObject configObj) { + return formService.getSelectStandardValueBySimpleValue(simpleValue, configObj); + } + @Override public Object dataTransformationForEmail(AttributeDataVo attributeDataVo, JSONObject configObj) { JSONObject resultObj = getMyDetailedData(attributeDataVo, configObj); diff --git a/src/main/java/neatlogic/module/framework/form/attribute/handler/SelectHandler.java b/src/main/java/neatlogic/module/framework/form/attribute/handler/SelectHandler.java index d6def83bc..0f2e08f93 100644 --- a/src/main/java/neatlogic/module/framework/form/attribute/handler/SelectHandler.java +++ b/src/main/java/neatlogic/module/framework/form/attribute/handler/SelectHandler.java @@ -194,6 +194,11 @@ public class SelectHandler extends FormHandlerBase { return FormUtil.getFormSelectAttributeValueByOriginalValue(originalValue); } + @Override + public Object getStandardValueBySimpleValue(Object simpleValue, JSONObject configObj) { + return formService.getSelectStandardValueBySimpleValue(simpleValue, configObj); + } + @Override public Object dataTransformationForEmail(AttributeDataVo attributeDataVo, JSONObject configObj) { JSONObject resultObj = getMyDetailedData(attributeDataVo, configObj); diff --git a/src/main/java/neatlogic/module/framework/form/attribute/handler/UserSelectHandler.java b/src/main/java/neatlogic/module/framework/form/attribute/handler/UserSelectHandler.java index efd4ee5d0..e00cf6181 100644 --- a/src/main/java/neatlogic/module/framework/form/attribute/handler/UserSelectHandler.java +++ b/src/main/java/neatlogic/module/framework/form/attribute/handler/UserSelectHandler.java @@ -125,6 +125,44 @@ public class UserSelectHandler extends FormHandlerBase { // return dataObj; } + @Override + public Object getStandardValueBySimpleValue(Object dataObj, JSONObject configObj) { + boolean isMultiple = configObj.getBooleanValue("isMultiple"); + if (isMultiple) { + boolean flag = false; + for (Object data : (List) dataObj) { + String dataStr = data.toString(); + if (dataStr.contains(GroupSearch.COMMON.getValuePlugin()) + || dataStr.contains(GroupSearch.USER.getValuePlugin()) + || dataStr.contains(GroupSearch.TEAM.getValuePlugin()) + || dataStr.contains(GroupSearch.ROLE.getValuePlugin())) { + flag = true; + break; + } + } + if (flag) { + return dataObj; + } else { + return textConversionValue(dataObj, configObj); + } + + } else { + Object data = dataObj; + if (dataObj instanceof List) { + data = ((List) dataObj).get(0); + } + String dataStr = data.toString(); + if (dataStr.contains(GroupSearch.COMMON.getValuePlugin()) + || dataStr.contains(GroupSearch.USER.getValuePlugin()) + || dataStr.contains(GroupSearch.TEAM.getValuePlugin()) + || dataStr.contains(GroupSearch.ROLE.getValuePlugin())) { + return data; + } else { + return textConversionValue(data, configObj); + } + } + } + @Override public Object dataTransformationForEmail(AttributeDataVo attributeDataVo, JSONObject configObj) { JSONObject resultObj = getMyDetailedData(attributeDataVo, configObj); 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 1317360c2..71615c087 100644 --- a/src/main/java/neatlogic/module/framework/form/service/FormService.java +++ b/src/main/java/neatlogic/module/framework/form/service/FormService.java @@ -48,4 +48,12 @@ public interface FormService { * @return 组件列表 */ List getFormAttributeList(String formUuid, String formName, String tag); + + /** + * 通过简单值获取标准值,例如下拉框的简单值为a或A,返回标准值为{"value":"a", "text":"A"} + * @param simpleValue + * @param configObj + * @return + */ + Object getSelectStandardValueBySimpleValue(Object simpleValue, JSONObject configObj); } 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 cccb4829a..ae9313358 100644 --- a/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java +++ b/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java @@ -29,10 +29,7 @@ import neatlogic.framework.matrix.core.IMatrixDataSourceHandler; import neatlogic.framework.matrix.core.MatrixDataSourceHandlerFactory; import neatlogic.framework.matrix.core.MatrixPrivateDataSourceHandlerFactory; import neatlogic.framework.matrix.dao.mapper.MatrixMapper; -import neatlogic.framework.matrix.dto.MatrixDataVo; -import neatlogic.framework.matrix.dto.MatrixDefaultValueFilterVo; -import neatlogic.framework.matrix.dto.MatrixKeywordFilterVo; -import neatlogic.framework.matrix.dto.MatrixVo; +import neatlogic.framework.matrix.dto.*; import neatlogic.framework.matrix.exception.MatrixDataSourceHandlerNotFoundException; import neatlogic.framework.matrix.exception.MatrixNotFoundException; import org.apache.commons.collections4.CollectionUtils; @@ -43,10 +40,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; @Service @@ -394,6 +388,132 @@ public class FormServiceImpl implements FormService, IFormCrossoverService { return null; } + private JSONObject getSelectStandardValueBySimpleValue(String matrixUuid, ValueTextVo mapping, List hiddenFieldList, String value) { + if (StringUtils.isBlank(value)) { + return null; + } + try { + MatrixVo matrixVo = MatrixPrivateDataSourceHandlerFactory.getMatrixVo(matrixUuid); + if (matrixVo == null) { + matrixVo = matrixMapper.getMatrixByUuid(matrixUuid); + if (matrixVo == null) { + throw new MatrixNotFoundException(matrixUuid); + } + } + IMatrixDataSourceHandler matrixDataSourceHandler = MatrixDataSourceHandlerFactory.getHandler(matrixVo.getType()); + if (matrixDataSourceHandler == null) { + throw new MatrixDataSourceHandlerNotFoundException(matrixVo.getType()); + } + List matrixAttributeList = matrixDataSourceHandler.getAttributeList(matrixVo); +// List attributeList = matrixAttributeList.stream().map(MatrixAttributeVo::getUuid).collect(Collectors.toList()); + Set notNullColumnSet = new HashSet<>(); + String valueField = (String) mapping.getValue(); + String textField = mapping.getText(); + MatrixDataVo dataVo = new MatrixDataVo(); + dataVo.setMatrixUuid(matrixUuid); + notNullColumnSet.add(valueField); + dataVo.setKeywordColumn(textField); + notNullColumnSet.add(textField); + List columnList = new ArrayList<>(); + columnList.add(valueField); + columnList.add(textField); + if (CollectionUtils.isNotEmpty(hiddenFieldList)) { + for (int i = 0; i < hiddenFieldList.size(); i++) { + String hiddenField = hiddenFieldList.get(i); + if (StringUtils.isNotBlank(hiddenField)) { +// if (!attributeList.contains(hiddenField)) { +// throw new MatrixAttributeNotFoundException(matrixVo.getName(), hiddenField); +// } + columnList.add(hiddenField); + } + } + } + dataVo.setColumnList(columnList); + dataVo.setNotNullColumnList(new ArrayList<>(notNullColumnSet)); + { + List defaultValueFilterList = new ArrayList<>(); + MatrixDefaultValueFilterVo matrixDefaultValueFilterVo = new MatrixDefaultValueFilterVo( + null, + new MatrixKeywordFilterVo(textField, SearchExpression.EQ.getExpression(), value) + ); + defaultValueFilterList.add(matrixDefaultValueFilterVo); + dataVo.setDefaultValueFilterList(defaultValueFilterList); + for (int i = 0; i < 10; i++) { + List> tbodyList = matrixDataSourceHandler.searchTableDataNew(dataVo); + for (Map tbody : tbodyList) { + JSONObject textObj = tbody.get(textField); + if (MapUtils.isEmpty(textObj)) { + continue; + } + if (Objects.equals(value, textObj.getString("text"))) { + JSONObject valueObj = tbody.get(valueField); + if (MapUtils.isEmpty(valueObj)) { + continue; + } + JSONObject resultObj = new JSONObject(); + resultObj.put("value", valueObj.getString("value")); + resultObj.put("text", textObj.getString("text")); + for (String hiddenField : hiddenFieldList) { + JSONObject hiddenFieldObj = tbody.get(hiddenField); + if (MapUtils.isNotEmpty(hiddenFieldObj)) { + String hiddenFieldValue = hiddenFieldObj.getString("value"); + resultObj.put(hiddenField, hiddenFieldValue); + } + } + return resultObj; + } + } + if (dataVo.getCurrentPage() >= dataVo.getPageCount()) { + break; + } + dataVo.setCurrentPage(dataVo.getCurrentPage() + 1); + } + } + { + List defaultValueFilterList = new ArrayList<>(); + MatrixDefaultValueFilterVo matrixDefaultValueFilterVo = new MatrixDefaultValueFilterVo( + new MatrixKeywordFilterVo(valueField, SearchExpression.EQ.getExpression(), value), + null + ); + defaultValueFilterList.add(matrixDefaultValueFilterVo); + dataVo.setDefaultValueFilterList(defaultValueFilterList); + for (int i = 0; i < 10; i++) { + List> tbodyList = matrixDataSourceHandler.searchTableDataNew(dataVo); + for (Map tbody : tbodyList) { + JSONObject valueObj = tbody.get(valueField); + if (MapUtils.isEmpty(valueObj)) { + continue; + } + if (Objects.equals(value, valueObj.getString("value"))) { + JSONObject textObj = tbody.get(textField); + if (MapUtils.isEmpty(textObj)) { + continue; + } + JSONObject resultObj = new JSONObject(); + resultObj.put("value", valueObj.getString("value")); + resultObj.put("text", textObj.getString("text")); + for (String hiddenField : hiddenFieldList) { + JSONObject hiddenFieldObj = tbody.get(hiddenField); + if (MapUtils.isNotEmpty(hiddenFieldObj)) { + String hiddenFieldValue = hiddenFieldObj.getString("value"); + resultObj.put(hiddenField, hiddenFieldValue); + } + } + return resultObj; + } + } + if (dataVo.getCurrentPage() >= dataVo.getPageCount()) { + break; + } + dataVo.setCurrentPage(dataVo.getCurrentPage() + 1); + } + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + @Override public List getFormAttributeList(String formUuid, String formName, String tag) { FormVersionVo formVersion = formMapper.getActionFormVersionByFormUuid(formUuid); @@ -426,4 +546,100 @@ public class FormServiceImpl implements FormService, IFormCrossoverService { resultList.addAll(formExtendAttributeList); return resultList; } + + @Override + public Object getSelectStandardValueBySimpleValue(Object dataObj, JSONObject configObj) { + JSONArray resultList = new JSONArray(); + if (Objects.equals(configObj.getString("dataSource"), "static")) { + JSONArray dataArray = configObj.getJSONArray("dataList"); + if (CollectionUtils.isNotEmpty(dataArray)) { + if (dataObj instanceof JSONArray) { + JSONArray valueArray = (JSONArray) dataObj; + if (CollectionUtils.isNotEmpty(valueArray)) { + for (Object valueObj : valueArray) { + if (valueObj instanceof JSONObject) { + JSONObject jsonObj = (JSONObject) valueObj; + if (dataArray.contains(jsonObj)) { + resultList.add(jsonObj); + } + } else { + for (int i = 0; i < dataArray.size(); i++) { + JSONObject jsonObj = dataArray.getJSONObject(i); + if (MapUtils.isNotEmpty(jsonObj)) { + if (jsonObj.containsValue(valueObj)) { + resultList.add(jsonObj); + } + } + } + } + } + } + } else if (dataObj instanceof JSONObject) { + JSONObject jsonObj = (JSONObject) dataObj; + if (dataArray.contains(jsonObj)) { + resultList.add(jsonObj); + } + } else { + for (int i = 0; i < dataArray.size(); i++) { + JSONObject jsonObj = dataArray.getJSONObject(i); + if (MapUtils.isNotEmpty(jsonObj)) { + if (jsonObj.containsValue(dataObj)) { + resultList.add(jsonObj); + } + } + } + } + } + } else { + String matrixUuid = configObj.getString("matrixUuid"); + JSONObject mappingObj = configObj.getJSONObject("mapping"); + ValueTextVo mapping = mappingObj.toJavaObject(ValueTextVo.class); + List hiddenFieldUuidList = new ArrayList<>(); + JSONArray hiddenFieldArray = configObj.getJSONArray("hiddenFieldList"); + if (CollectionUtils.isNotEmpty(hiddenFieldArray)) { + for (int i = 0; i < hiddenFieldArray.size(); i++) { + JSONObject hiddenFieldObj = hiddenFieldArray.getJSONObject(i); + if (MapUtils.isNotEmpty(hiddenFieldObj)) { + hiddenFieldUuidList.add(hiddenFieldObj.getString("uuid")); + } + } + } + if (dataObj instanceof JSONArray) { + JSONArray valueArray = (JSONArray) dataObj; + if (CollectionUtils.isNotEmpty(valueArray)) { + for (int i = 0; i < valueArray.size(); i++) { + Object obj = valueArray.get(i); + if (obj instanceof JSONObject) { + JSONObject jsonObj = (JSONObject) obj; + resultList.add(jsonObj); + } else { + String value = obj.toString(); + JSONObject jsonObj = getSelectStandardValueBySimpleValue(matrixUuid, mapping, hiddenFieldUuidList, value); + if (jsonObj != null) { + resultList.add(jsonObj); + } + } + } + } + } else if (dataObj instanceof JSONObject) { + JSONObject jsonObj = (JSONObject) dataObj; + resultList.add(jsonObj); + } else { + String value = dataObj.toString(); + JSONObject jsonObj = getSelectStandardValueBySimpleValue(matrixUuid, mapping, hiddenFieldUuidList, value); + if (jsonObj != null) { + resultList.add(jsonObj); + } + } + } + if (CollectionUtils.isNotEmpty(resultList)) { + boolean isMultiple = configObj.getBooleanValue("isMultiple"); + if (isMultiple) { + return resultList; + } else { + return resultList.get(0); + } + } + return null; + } } -- Gitee From d2faca8e2dcef49eb33691f20d9d71d034f2b6bf Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 12 Jun 2024 15:57:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20IT=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?-=E7=AC=AC=E4=B8=89=E6=96=B9=E4=B8=8A=E6=8A=A5=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E6=8E=A5=E5=8F=A3=E8=A1=A8=E5=8D=95=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E6=A1=86=E6=95=B0=E6=8D=AE=E9=9C=80=E8=A6=81=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E5=B1=9E=E6=80=A7=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #[1177509075320832]IT服务-第三方上报工单接口表单下拉框数据需要补充隐藏属性值 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1177509075320832 --- .../module/framework/form/service/FormServiceImpl.java | 5 ----- 1 file changed, 5 deletions(-) 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 ae9313358..58b735476 100644 --- a/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java +++ b/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java @@ -404,8 +404,6 @@ public class FormServiceImpl implements FormService, IFormCrossoverService { if (matrixDataSourceHandler == null) { throw new MatrixDataSourceHandlerNotFoundException(matrixVo.getType()); } - List matrixAttributeList = matrixDataSourceHandler.getAttributeList(matrixVo); -// List attributeList = matrixAttributeList.stream().map(MatrixAttributeVo::getUuid).collect(Collectors.toList()); Set notNullColumnSet = new HashSet<>(); String valueField = (String) mapping.getValue(); String textField = mapping.getText(); @@ -421,9 +419,6 @@ public class FormServiceImpl implements FormService, IFormCrossoverService { for (int i = 0; i < hiddenFieldList.size(); i++) { String hiddenField = hiddenFieldList.get(i); if (StringUtils.isNotBlank(hiddenField)) { -// if (!attributeList.contains(hiddenField)) { -// throw new MatrixAttributeNotFoundException(matrixVo.getName(), hiddenField); -// } columnList.add(hiddenField); } } -- Gitee