diff --git a/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java b/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java index 37afe51..26eea39 100644 --- a/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java +++ b/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java @@ -122,11 +122,11 @@ public class AssociatedFormsController { System.out.println(rangeString); System.out.println(hideFormula); System.out.println(hideString);*/ - ArrayList dataTitles = customerFormService.getAsfDataTitles(formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString); + ArrayList dataTitles = customerFormService.getAsfDataTitles(formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString); /*if(null==fieldList){ return JsonData.buildError("非法请求"); }*/ - return JsonData.buildSuccess(formId); + return JsonData.buildSuccess(dataTitles); } diff --git a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java index 688ccb1..fb8774b 100644 --- a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java +++ b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java @@ -6,10 +6,15 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; @DS("tidbintranetcustomerform") @Mapper public interface FieldRecordMapper { ArrayList getFieldRecord(@Param("formIdOrTableKey") String formIdOrTableKey, @Param("fieldKey")String fieldKey); + + List> getDataTitles(@Param("asfFormName") String asfFormName, @Param("fields") List toSelectDataTitles); } diff --git a/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java b/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java index 018f0f1..9f10092 100644 --- a/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java +++ b/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java @@ -24,4 +24,12 @@ public class CustomerFormTableSingleFieldValue { public void setLabel(String label) { this.label = label; } + + public CustomerFormTableSingleFieldValue(String value, String label) { + this.value = value; + this.label = label; + } + + public CustomerFormTableSingleFieldValue() { + } } diff --git a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java index 7d11e5a..748d60c 100644 --- a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java +++ b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java @@ -15,5 +15,5 @@ public interface CustomerFormService { ArrayList getFieldRecord(String key, String token, String[] optionsValue3FieldArray); - ArrayList getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString); + ArrayList getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString); } diff --git a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java index 46f4f27..252c826 100644 --- a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java +++ b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java @@ -2,6 +2,8 @@ package com.hxgk.lowcode.service.impl; import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -21,10 +23,7 @@ import org.springframework.stereotype.Service; import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; +import java.util.*; @Service public class CustomerFormServiceImpl implements CustomerFormService { @@ -566,11 +565,90 @@ public class CustomerFormServiceImpl implements CustomerFormService { * */ } } + public static CustomerFormTableSingleFieldValue generateCustomerFormTableSingleFieldValue(TreeMap treeMap) { + TreeMap treeMapx = new TreeMap<>(); + treeMapx.putAll(treeMap); + String lastValue = treeMapx.get("value").toString(); + treeMap.remove("value"); + StringBuilder labelBuilder = new StringBuilder(); + for (Object value : treeMap.values()) { + labelBuilder.append(value.toString()).append(" "); + } + String label = labelBuilder.toString().substring(0, labelBuilder.length() - 1); + return new CustomerFormTableSingleFieldValue(lastValue, label); + } + public static String removeAfterLastSpace(String str) { + int lastSpaceIndex = str.lastIndexOf(' '); + if (lastSpaceIndex!= -1) { + return str.substring(0, lastSpaceIndex); + } + return str; + } @Override - public ArrayList getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString) { - // - return null; + public ArrayList getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString) { + //关联表单的id + String AsfFormId = formId; + //根据formId(cfid)查询关联表单表名 + String asfFormName = customerFormViewMapper.getTableNameByCfid(formId).getTablekey(); + //查询关联表单的数据标题 + String mastesformjson = customerFormViewMapper.getTableNameByCfid(formId).getMastesformjson(); + com.alibaba.fastjson2.JSONObject jsonObject = JSON.parseObject(mastesformjson); + JSONArray dataTitleJsonArray = jsonObject.getJSONObject("form").getJSONArray("dataTitle"); + List dataTitleArray = dataTitleJsonArray.toJavaList(String.class); + //关联表单的数据标题list + ArrayList toSelectDataTitles = new ArrayList<>(); + for(String title : dataTitleArray){ + String[] titleArr = title.split(":"); + toSelectDataTitles.add(titleArr[2]); + } + + List> dataTitleMapList = fieldRecordMapper.getDataTitles(asfFormName,toSelectDataTitles); + + // 自定义比较器用以排序dataTitleMapList + Comparator customComparator = new Comparator() { + @Override + public int compare(String key1, String key2) { + if (toSelectDataTitles.contains(key1) && toSelectDataTitles.contains(key2)) { + int index1 = toSelectDataTitles.indexOf(key1); + int index2 = toSelectDataTitles.indexOf(key2); + return Integer.compare(index1, index2); + } else if (key1.equals("value")) { + return 1; + } else if (key2.equals("value")) { + return -1; + } + return 0; + } + }; + ArrayList> sortedDataTitleMapList = new ArrayList<>(); + for(TreeMap toSortTreeMap : dataTitleMapList){ + // 对 TreeMap 进行排序 + TreeMap sortedTreeMap = new TreeMap<>(customComparator); + sortedTreeMap.putAll(toSortTreeMap); + sortedDataTitleMapList.add(sortedTreeMap); + } + //转为CustomerFormTableSingleFieldValue对象list + ArrayList toReturnSortedDataTitleList = new ArrayList<>(); + for(TreeMap sortedDataTitleMap : sortedDataTitleMapList){ + CustomerFormTableSingleFieldValue customerFormTableSingleFieldValue = generateCustomerFormTableSingleFieldValue(sortedDataTitleMap); + customerFormTableSingleFieldValue.setLabel(removeAfterLastSpace(customerFormTableSingleFieldValue.getLabel())); + toReturnSortedDataTitleList.add(customerFormTableSingleFieldValue); + } + //当前表单的id + String currentFormId = ""; + if(StringUtils.isBlank(dataTitle)){ + System.out.println("无数据标题"); + }else{ + //System.out.println(dataTitle); + String[] dataTitles = dataTitle.split("###"); + for (String title : dataTitles) { + //System.out.println(title+"@@@"); + String[] titleArr = title.split(":"); + currentFormId = titleArr[1]; + } + } + return toReturnSortedDataTitleList; } diff --git a/src/main/resources/mapper/CustomerFormvViewMapper.xml b/src/main/resources/mapper/CustomerFormvViewMapper.xml index afa3b75..f6328e0 100644 --- a/src/main/resources/mapper/CustomerFormvViewMapper.xml +++ b/src/main/resources/mapper/CustomerFormvViewMapper.xml @@ -29,7 +29,7 @@ diff --git a/src/main/resources/mapper/FieldRecordMapper.xml b/src/main/resources/mapper/FieldRecordMapper.xml index c87da34..872fa49 100644 --- a/src/main/resources/mapper/FieldRecordMapper.xml +++ b/src/main/resources/mapper/FieldRecordMapper.xml @@ -9,4 +9,16 @@ + + \ No newline at end of file