Browse Source

关联表单组件新增时展示所有数据标题作为下拉选项

lwx_v1
liwenxuan 1 year ago
parent
commit
d2861623dc
  1. 4
      src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java
  2. 5
      src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java
  3. 8
      src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java
  4. 2
      src/main/java/com/hxgk/lowcode/service/CustomerFormService.java
  5. 92
      src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java
  6. 2
      src/main/resources/mapper/CustomerFormvViewMapper.xml
  7. 12
      src/main/resources/mapper/FieldRecordMapper.xml

4
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<String> dataTitles = customerFormService.getAsfDataTitles(formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString);
ArrayList<CustomerFormTableSingleFieldValue> dataTitles = customerFormService.getAsfDataTitles(formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString);
/*if(null==fieldList){
return JsonData.buildError("非法请求");
}*/
return JsonData.buildSuccess(formId);
return JsonData.buildSuccess(dataTitles);
}

5
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<CustomerFormTableSingleFieldValue> getFieldRecord(@Param("formIdOrTableKey") String formIdOrTableKey, @Param("fieldKey")String fieldKey);
List<TreeMap<String, Object>> getDataTitles(@Param("asfFormName") String asfFormName, @Param("fields") List<String> toSelectDataTitles);
}

8
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() {
}
}

2
src/main/java/com/hxgk/lowcode/service/CustomerFormService.java

@ -15,5 +15,5 @@ public interface CustomerFormService {
ArrayList<CustomerFormTableSingleFieldValue> getFieldRecord(String key, String token, String[] optionsValue3FieldArray);
ArrayList<String> getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString);
ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString);
}

92
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<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;
}

2
src/main/resources/mapper/CustomerFormvViewMapper.xml

@ -29,7 +29,7 @@
<select id="getTableNameByCfid" resultType="com.hxgk.lowcode.model.entity.CustomerFormView">
select
id,tablekey,version,status,time,creater,edit_time,table_structure,dict,cfid,name,classify,flowkey,signCode
id,tablekey,version,status,time,creater,edit_time,table_structure,dict,cfid,name,classify,flowkey,signCode,mastesformjson
from customer_form_view
where status = 1 and cfid = #{formId}
</select>

12
src/main/resources/mapper/FieldRecordMapper.xml

@ -9,4 +9,16 @@
</select>
<select id="getDataTitles" resultType="java.util.TreeMap" statementType="STATEMENT">
select id as value,
<foreach collection="fields" index="index" item="item" separator="," >
${item}
</foreach>
from ${asfFormName} where states = 1
</select>
</mapper>
Loading…
Cancel
Save