Browse Source

关联表单双变量数据范围条件示例(关联的表单.字段a==当前表单.字段b)

master
liwenxuan 1 year ago
parent
commit
8b668ae51d
  1. 2
      src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java
  2. 19
      src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java
  3. 82
      src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java
  4. 18
      src/main/resources/mapper/FieldRecordMapper.xml

2
src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java

@ -22,6 +22,8 @@ public interface FieldRecordMapper {
List<TreeMap<String, Object>> getDataTitlesWithWhere_Asf_NotTable(@Param("asfFormName") String asfFormName, @Param("fields") List<String> toSelectDataTitles,@Param("operator") String operator,@Param("whereCondition") String whereCondition,@Param("leftField") String leftField);
List<TreeMap<String, Object>> getDataTitlesWithWhere_Asf_NotTable_DoubleCondi(@Param("asfFormName") String asfFormName, @Param("fields") List<String> toSelectDataTitles,@Param("operator") String operator,@Param("whereCondition") String whereCondition,@Param("leftField") String leftField);
List<TreeMap<String, Object>> getDataTitlesWithWhere_Master_NotTable(
@Param("asfFormName") String asfFormName,@Param("fields") List<String> toSelectDataTitles, @Param("masterFormName") String masterFormName, @Param("masterOnField") String masterOnField,
@Param("whereConditionField") String whereConditionField, @Param("operator") String operator, @Param("whereConditionValue") String whereConditionValue

19
src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java

@ -24,6 +24,8 @@ public class CustomerFormTableSingleFieldValue {
private Map<String,Object> fillRolesFieldsMap;
private String doubleCondiVal;
public String getCreater() {
return creater;
}
@ -70,6 +72,14 @@ public class CustomerFormTableSingleFieldValue {
this.asfMasterId = asfMasterId;
}
public String getDoubleCondiVal() {
return doubleCondiVal;
}
public void setDoubleCondiVal(String doubleCondiVal) {
this.doubleCondiVal = doubleCondiVal;
}
public CustomerFormTableSingleFieldValue() {
}
@ -119,7 +129,7 @@ public class CustomerFormTableSingleFieldValue {
this.fillRolesFieldsMap = map1;
}
*/
public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org, String creater,HashMap<String,Object>fillRolesFieldsMap) {
public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org, String creater,HashMap<String,Object>fillRolesFieldsMap,String doubleCondiVal) {
this.value = value;
this.label = label;
this.asfMasterId = asfMasterId;
@ -128,8 +138,9 @@ public class CustomerFormTableSingleFieldValue {
this.org = org;
this.creater = creater;
this.fillRolesFieldsMap = fillRolesFieldsMap;
this.doubleCondiVal = doubleCondiVal;
}
public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org, String creater) {
public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org, String creater,String doubleCondiVal) {
this.value = value;
this.label = label;
this.asfMasterId = asfMasterId;
@ -137,9 +148,11 @@ public class CustomerFormTableSingleFieldValue {
this.owner = owner;
this.org = org;
this.creater = creater;
this.doubleCondiVal = doubleCondiVal;
}
@Override
public String toString() {
return "CustomerFormTableSingleFieldValue{" +

82
src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java

@ -815,11 +815,13 @@ public class CustomerFormServiceImpl implements CustomerFormService {
String owner = "";
String creater = "";
HashMap<String,Object> filedMap = new HashMap<>();
String doubleCondiVal = "";
treeMap.remove("value");
boolean containsOrg = false;
boolean containsOwner = false;
boolean containsCreater= true;
boolean containsFiledMap= false;
boolean containsDoubleCondiVal = false;
for (String key : treeMap.keySet()) {
if (key.equals("org")) {
containsOrg = true;
@ -839,6 +841,12 @@ public class CustomerFormServiceImpl implements CustomerFormService {
break;
}
}
for (String key : treeMap.keySet()) {
if (key.equals("doubleCondiVal")) {
containsDoubleCondiVal = true;
break;
}
}
if(containsOrg){
org = treeMapx.get("org").toString();
}
@ -851,11 +859,14 @@ public class CustomerFormServiceImpl implements CustomerFormService {
if(containsFiledMap){
filedMap = (HashMap<String, Object>) treeMapx.get("filedMap");
}
if(containsDoubleCondiVal){
doubleCondiVal = treeMapx.get("doubleCondiVal").toString();
}
StringBuilder labelBuilder = new StringBuilder();
for (Map.Entry<String, Object> entry : treeMap.entrySet()) {
Object value = entry.getValue();
Object key = entry.getKey();
if(key.toString().equals("org")||key.toString().equals("owner")||key.toString().equals("creater")||key.toString().equals("filedMap")){
if(key.toString().equals("org")||key.toString().equals("owner")||key.toString().equals("creater")||key.toString().equals("filedMap")||key.toString().equals("doubleCondiVal")){
}else{
labelBuilder.append(value.toString()).append(" ");
@ -865,9 +876,9 @@ public class CustomerFormServiceImpl implements CustomerFormService {
String label = labelBuilder.toString().substring(0, labelBuilder.length() - 1);
if(containsFiledMap){
return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater,filedMap);
return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater,filedMap,doubleCondiVal);
}else{
return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater);
return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater,doubleCondiVal);
}
}
@ -1734,8 +1745,8 @@ public class CustomerFormServiceImpl implements CustomerFormService {
}else{
dataTitleMapList = getDataTitlesWithWhere_Asf_NotTable(asfFormName,toSelectDataTitles,operator,right,leftValue);//根据where条件查询数据标题
//dataTitleMapList = getDataTitlesWithWhere_Asf_NotTable(asfFormName,toSelectDataTitles,operator,right,leftValue);//根据where条件查询数据标题
dataTitleMapList = getDataTitlesWithWhere_Asf_NotTable1(asfFormName,toSelectDataTitles,operator,right,leftValue);//根据where条件查询数据标题
}
}
}
@ -1779,6 +1790,10 @@ public class CustomerFormServiceImpl implements CustomerFormService {
return 1;
} else if (key2.equals("filedMap")) {
return -1;
}else if (key1.equals("doubleCondiVal")) {
return 1;
} else if (key2.equals("doubleCondiVal")) {
return -1;
}
return 0;
}
@ -1834,10 +1849,18 @@ public class CustomerFormServiceImpl implements CustomerFormService {
ArrayList<TreeMap<String, Object>> sortedDataTitleMapList = new ArrayList<>();
for(TreeMap<String,Object> toSortTreeMap : dataTitleMapList){
// 对 TreeMap 进行排序
if(toSortTreeMap.containsKey("doubleCondiVal")){
//System.out.println(1);
TreeMap<String, Object> sortedTreeMap = new TreeMap<>(customComparator);
sortedTreeMap.putAll(toSortTreeMap);
sortedDataTitleMapList.add(sortedTreeMap);
}else{
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){
@ -1956,12 +1979,47 @@ public class CustomerFormServiceImpl implements CustomerFormService {
if(!StringUtils.isBlank(leftValue)) {
leftValue = "`" + leftValue + "`";
}
List<TreeMap<String, Object>> dataTitles = fieldRecordMapper.getDataTitlesWithWhere_Asf_NotTable(asfFormName, toSelectDataTitles1,operator,whereCondition,leftValue);
//没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner
//没有org的
processDataTitles(dataTitles);
return dataTitles;
}
private List<TreeMap<String, Object>> getDataTitlesWithWhere_Asf_NotTable1(String asfFormName,ArrayList<String> toSelectDataTitles,String operator,String whereCondition,String leftValue){
List<TreeMap<String, Object>> newDataTitles = new ArrayList<>();
/*for(String item :toSelectDataTitles){
item = "`"+item+"`";
}*/
ArrayList<String> toSelectDataTitles1 = new ArrayList<>();
for (int i = 0; i < toSelectDataTitles.size(); i++) {
toSelectDataTitles1.add(i, "`" + toSelectDataTitles.get(i) + "`");
}
if(!StringUtils.isBlank(leftValue)) {
leftValue = "`" + leftValue + "`";
}
//双变量条件,页面初始化时,数据范围不做筛选
if(whereCondition.startsWith("'formField:")&&(!whereCondition.contains(":table"))){
String[] a = (whereCondition.substring(1, whereCondition.length() - 1)).split(":");
String b = a[a.length-1];
b = "`"+b+"`";
List<TreeMap<String, Object>> dataTitles = fieldRecordMapper.getDataTitlesWithWhere_Asf_NotTable_DoubleCondi(asfFormName, toSelectDataTitles1,operator,b,leftValue);
processDataTitles(dataTitles);
return dataTitles;
}else{
List<TreeMap<String, Object>> dataTitles = fieldRecordMapper.getDataTitlesWithWhere_Asf_NotTable(asfFormName, toSelectDataTitles1,operator,whereCondition,leftValue);
//没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner
//没有org的
processDataTitles(dataTitles);
return dataTitles;
}
}
private List<TreeMap<String, Object>> getDataTitlesWithWhere_Master_NotTable(String asfFormName,ArrayList<String> toSelectDataTitles, String masterFormName, String masterOnField, String whereConditionField, String operator, String whereConditionValue) {
ArrayList<String> toSelectDataTitles1 = new ArrayList<>();
for(String item : toSelectDataTitles){
@ -2790,14 +2848,24 @@ public class CustomerFormServiceImpl implements CustomerFormService {
//修改查询代码 start
try {
// 可能会抛出异常的代码块
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapListWithWhereCondition(leftTableName,toSelectTableFeilds,currentMastersKey,whereLeft,whereOperator,whereRight);
replaceKeys(leftTableDetail,toSelectTableFeildsMap);
leftTableDetailMap.put(rightTableName,leftTableDetail);
} catch (Exception e1) {
// 针对ExceptionType1类型异常的处理逻辑
//e1.printStackTrace();
} finally {
// 无论是否发生异常,都会执行的代码块(可选)
}
//修改查询代码 end
replaceKeys(leftTableDetail,toSelectTableFeildsMap);
leftTableDetailMap.put(rightTableName,leftTableDetail);
}
}

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

@ -66,6 +66,24 @@
</select>
<select id="getDataTitlesWithWhere_Asf_NotTable_DoubleCondi" resultType="java.util.TreeMap" statementType="STATEMENT">
select id as value,${leftField} as doubleCondiVal,
<foreach collection="fields" index="index" item="item" separator="," >
${item}
</foreach>
from ${asfFormName} where states = 1
</select>
<select id="getDataTitlesWithWhere_Master_NotTable" resultType="java.util.TreeMap" statementType="STATEMENT">
SELECT

Loading…
Cancel
Save