|
|
|
@ -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<String, Object> treeMap) { |
|
|
|
TreeMap<String,Object> 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<String> getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString) { |
|
|
|
//
|
|
|
|
return null; |
|
|
|
public ArrayList<CustomerFormTableSingleFieldValue> 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<String> dataTitleArray = dataTitleJsonArray.toJavaList(String.class); |
|
|
|
//关联表单的数据标题list
|
|
|
|
ArrayList<String> toSelectDataTitles = new ArrayList<>(); |
|
|
|
for(String title : dataTitleArray){ |
|
|
|
String[] titleArr = title.split(":"); |
|
|
|
toSelectDataTitles.add(titleArr[2]); |
|
|
|
} |
|
|
|
|
|
|
|
List<TreeMap<String, Object>> dataTitleMapList = fieldRecordMapper.getDataTitles(asfFormName,toSelectDataTitles); |
|
|
|
|
|
|
|
// 自定义比较器用以排序dataTitleMapList
|
|
|
|
Comparator<String> customComparator = new Comparator<String>() { |
|
|
|
@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<TreeMap<String, Object>> sortedDataTitleMapList = new ArrayList<>(); |
|
|
|
for(TreeMap<String,Object> toSortTreeMap : dataTitleMapList){ |
|
|
|
// 对 TreeMap 进行排序
|
|
|
|
TreeMap<String, Object> sortedTreeMap = new TreeMap<>(customComparator); |
|
|
|
sortedTreeMap.putAll(toSortTreeMap); |
|
|
|
sortedDataTitleMapList.add(sortedTreeMap); |
|
|
|
} |
|
|
|
//转为CustomerFormTableSingleFieldValue对象list
|
|
|
|
ArrayList<CustomerFormTableSingleFieldValue> toReturnSortedDataTitleList = new ArrayList<>(); |
|
|
|
for(TreeMap<String,Object> 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; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|