From 8b668ae51dcd0474b5b398b76b050801ce9f4d17 Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Thu, 21 Nov 2024 08:34:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E8=81=94=E8=A1=A8=E5=8D=95=E5=8F=8C?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E6=95=B0=E6=8D=AE=E8=8C=83=E5=9B=B4=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E7=A4=BA=E4=BE=8B(=E5=85=B3=E8=81=94=E7=9A=84?= =?UTF-8?q?=E8=A1=A8=E5=8D=95.=E5=AD=97=E6=AE=B5a=3D=3D=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E8=A1=A8=E5=8D=95.=E5=AD=97=E6=AE=B5b)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lowcode/mapper/FieldRecordMapper.java | 2 + .../CustomerFormTableSingleFieldValue.java | 19 +++- .../service/impl/CustomerFormServiceImpl.java | 90 ++++++++++++++++--- .../resources/mapper/FieldRecordMapper.xml | 18 ++++ 4 files changed, 115 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java index 27887a1..21a2257 100644 --- a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java +++ b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java @@ -22,6 +22,8 @@ public interface FieldRecordMapper { List> getDataTitlesWithWhere_Asf_NotTable(@Param("asfFormName") String asfFormName, @Param("fields") List toSelectDataTitles,@Param("operator") String operator,@Param("whereCondition") String whereCondition,@Param("leftField") String leftField); + List> getDataTitlesWithWhere_Asf_NotTable_DoubleCondi(@Param("asfFormName") String asfFormName, @Param("fields") List toSelectDataTitles,@Param("operator") String operator,@Param("whereCondition") String whereCondition,@Param("leftField") String leftField); + List> getDataTitlesWithWhere_Master_NotTable( @Param("asfFormName") String asfFormName,@Param("fields") List toSelectDataTitles, @Param("masterFormName") String masterFormName, @Param("masterOnField") String masterOnField, @Param("whereConditionField") String whereConditionField, @Param("operator") String operator, @Param("whereConditionValue") String whereConditionValue 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 c832086..ce2ae83 100644 --- a/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java +++ b/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java @@ -24,6 +24,8 @@ public class CustomerFormTableSingleFieldValue { private Map 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,HashMapfillRolesFieldsMap) { + public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org, String creater,HashMapfillRolesFieldsMap,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{" + 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 3fd9260..8234c16 100644 --- a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java +++ b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java @@ -815,11 +815,13 @@ public class CustomerFormServiceImpl implements CustomerFormService { String owner = ""; String creater = ""; HashMap 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) treeMapx.get("filedMap"); } + if(containsDoubleCondiVal){ + doubleCondiVal = treeMapx.get("doubleCondiVal").toString(); + } StringBuilder labelBuilder = new StringBuilder(); for (Map.Entry 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,9 +1849,17 @@ public class CustomerFormServiceImpl implements CustomerFormService { ArrayList> sortedDataTitleMapList = new ArrayList<>(); for(TreeMap toSortTreeMap : dataTitleMapList){ // 对 TreeMap 进行排序 - TreeMap sortedTreeMap = new TreeMap<>(customComparator); - sortedTreeMap.putAll(toSortTreeMap); - sortedDataTitleMapList.add(sortedTreeMap); + if(toSortTreeMap.containsKey("doubleCondiVal")){ + //System.out.println(1); + TreeMap sortedTreeMap = new TreeMap<>(customComparator); + sortedTreeMap.putAll(toSortTreeMap); + sortedDataTitleMapList.add(sortedTreeMap); + }else{ + TreeMap sortedTreeMap = new TreeMap<>(customComparator); + sortedTreeMap.putAll(toSortTreeMap); + sortedDataTitleMapList.add(sortedTreeMap); + } + } //转为CustomerFormTableSingleFieldValue对象list ArrayList toReturnSortedDataTitleList = new ArrayList<>(); @@ -1956,12 +1979,47 @@ public class CustomerFormServiceImpl implements CustomerFormService { if(!StringUtils.isBlank(leftValue)) { leftValue = "`" + leftValue + "`"; } + List> 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> getDataTitlesWithWhere_Asf_NotTable1(String asfFormName,ArrayList toSelectDataTitles,String operator,String whereCondition,String leftValue){ + List> newDataTitles = new ArrayList<>(); + /*for(String item :toSelectDataTitles){ + item = "`"+item+"`"; + }*/ + ArrayList 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> dataTitles = fieldRecordMapper.getDataTitlesWithWhere_Asf_NotTable_DoubleCondi(asfFormName, toSelectDataTitles1,operator,b,leftValue); + processDataTitles(dataTitles); + return dataTitles; + + }else{ + List> 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> getDataTitlesWithWhere_Master_NotTable(String asfFormName,ArrayList toSelectDataTitles, String masterFormName, String masterOnField, String whereConditionField, String operator, String whereConditionValue) { ArrayList toSelectDataTitles1 = new ArrayList<>(); for(String item : toSelectDataTitles){ @@ -2790,14 +2848,24 @@ public class CustomerFormServiceImpl implements CustomerFormService { //修改查询代码 start - ArrayList> leftTableDetail = fieldRecordMapper.queryAsfLeftMapListWithWhereCondition(leftTableName,toSelectTableFeilds,currentMastersKey,whereLeft,whereOperator,whereRight); + try { + // 可能会抛出异常的代码块 + ArrayList> 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); + } } diff --git a/src/main/resources/mapper/FieldRecordMapper.xml b/src/main/resources/mapper/FieldRecordMapper.xml index 5341344..d663f3f 100644 --- a/src/main/resources/mapper/FieldRecordMapper.xml +++ b/src/main/resources/mapper/FieldRecordMapper.xml @@ -66,6 +66,24 @@ + + + + +