From e9331610f538428704190448ceb86ab6d3507e8b Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Thu, 12 Sep 2024 16:28:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E8=81=94=E8=A1=A8=E5=8D=95=E5=AD=90?= =?UTF-8?q?=E8=A1=A8=E6=95=B0=E6=8D=AE=E5=A1=AB=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AssociatedFormsController.java | 6 +- .../lowcode/mapper/FieldRecordMapper.java | 4 + .../model/entity/AsfTableFillResult.java | 1 + .../lowcode/service/CustomerFormService.java | 2 +- .../service/impl/CustomerFormServiceImpl.java | 142 +++++++++++++++++- .../resources/mapper/FieldRecordMapper.xml | 17 +++ 6 files changed, 160 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java b/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java index 8831427..d5a5dff 100644 --- a/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java +++ b/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java @@ -220,12 +220,10 @@ public class AssociatedFormsController { String currentVal = requestBody.get("currentVal"); String fillFieldsChild = requestBody.get("fillFieldsChild"); //System.out.println(fillFieldsChild); - //根据formId(cfid)查询关联表单表名 - String asfFormName = customerFormViewMapper.getTableNameByCfid(asfFormId).getTablekey(); com.alibaba.fastjson2.JSONArray fillFieldsChildJsonObject = JSON.parseArray(fillFieldsChild); - ArrayList results = customerFormService.getAsfTableFill(key,token,asfFormName,glbbddbd,currentVal,fillFieldsChildJsonObject); + ArrayList results = customerFormService.getAsfTableFill(key,token,asfFormId,glbbddbd,currentVal,fillFieldsChildJsonObject); - return JsonData.buildSuccess("1"); + return JsonData.buildSuccess(results); } diff --git a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java index 858f984..ea8b97b 100644 --- a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java +++ b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java @@ -33,4 +33,8 @@ public interface FieldRecordMapper { ); List> getAsfDetail(@Param("asfFormName") String asfFormName, @Param("fields") List toSelectDataTitles,@Param("ids") List ids); + + ArrayList> queryAsfLeftMapList(@Param("leftTableName") String leftTableName, @Param("toSelectTableFeilds") ArrayList toSelectTableFeilds, @Param("currentMastersKey")String currentMastersKey); + + String queryCurrentMastersKey(@Param("id") String currentVal,@Param("leftTableName") String leftTableName); } diff --git a/src/main/java/com/hxgk/lowcode/model/entity/AsfTableFillResult.java b/src/main/java/com/hxgk/lowcode/model/entity/AsfTableFillResult.java index d116c04..b7f178e 100644 --- a/src/main/java/com/hxgk/lowcode/model/entity/AsfTableFillResult.java +++ b/src/main/java/com/hxgk/lowcode/model/entity/AsfTableFillResult.java @@ -7,6 +7,7 @@ import java.util.HashMap; @Repository public class AsfTableFillResult { + //关联关联表单的子表 private String tableName; private ArrayList> tableDetail; diff --git a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java index 22c547c..d071946 100644 --- a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java +++ b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java @@ -25,5 +25,5 @@ public interface CustomerFormService { Boolean queryHideRoleCondition(String key, String token, String targetOrgOrPerson, String condition, String currentUser); - ArrayList getAsfTableFill(String key, String token, String asfFormName, String glbbddbd, String currentVal,JSONArray fillFieldsChildJsonObject); + ArrayList getAsfTableFill(String key, String token, String asfFormId, String glbbddbd, String currentVal,JSONArray fillFieldsChildJsonObject); } 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 544ad05..a1dfab8 100644 --- a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java +++ b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java @@ -320,7 +320,7 @@ public class CustomerFormServiceImpl implements CustomerFormService { System.out.println("token:"+token);*/ try { post = HttpUtils.send(url, param, HTTP.UTF_8, userKey, token); - //System.out.println("post:"+post.toString()); + System.out.println("post:"+post.toString()); } catch (IOException e) { e.printStackTrace(); } @@ -2077,7 +2077,7 @@ public class CustomerFormServiceImpl implements CustomerFormService { } @Override - public ArrayList getAsfTableFill(String key, String token, String asfFormName, String glbbddbd, String currentVal,JSONArray fillFieldsChild) { + public ArrayList getAsfTableFill(String key, String token, String asfFormId, String glbbddbd, String currentVal,JSONArray fillFieldsChild) { //获取当前用户信息 从redis中根据userkey和usertoken拿到userdetail Map keytokenmap = new HashMap<>(); keytokenmap.put("userkey",key); @@ -2087,11 +2087,76 @@ public class CustomerFormServiceImpl implements CustomerFormService { return null; }else{ - //System.out.println(fillFieldsChild); + System.out.println(fillFieldsChild); if(fillFieldsChild.size()>0){ + ArrayList resultList = new ArrayList<>(); + //根据formId(cfid)查询关联表单表名 + String asfFormName = customerFormViewMapper.getTableNameByCfid(asfFormId).getTablekey(); + HashSet laterIgnoreRightTableNames = new HashSet<>(); for(int i = 0; i"+item); + System.out.println("被关联的关联表单的子表---->"+tableName); + System.out.println("被关联的关联表单---->"+asfFormName); + System.out.println("关联关联表单的表单---->"+glbbddbd); + System.out.println("当前被关联的关联表单当前选中的值---->"+currentVal); + + JSONArray childRoles = item.getJSONArray("childRoles"); + ArrayList> singleAsfChildTableFillRoleMapList = new ArrayList<>(); + + + + for(int j = 0; j map = new HashMap(); + com.alibaba.fastjson2.JSONObject element = (com.alibaba.fastjson2.JSONObject)childRoles.get(j); + String left = element.get("leftValue").toString(); + String leftTableName = left.split(":")[2]; + String leftTableField = left.split(":")[3]; + String right = element.get("rightValue").toString(); + String rightTableName = right.split(":")[2]; + String rightTableField = right.split(":")[3]; + + map.put("leftTableName",leftTableName); + map.put("leftTableField",leftTableField); + map.put("rightTableName",rightTableName); + map.put("rightTableField",rightTableField); + int equalCount = 0; + for (String item1 : laterIgnoreRightTableNames) { + if(item1.equals(rightTableName)){ + equalCount++; + } + } + if(equalCount==0){ + singleAsfChildTableFillRoleMapList.add(map); + } + + + } + //在此循环中添加本轮新出现的要在之后忽略的rightTableName + for(int j = 0; j>> singleAsfChildTableFillRoleMapListsGroupedByRightTableName = splitListByRightTableName(singleAsfChildTableFillRoleMapList); + //当前asf子表的条件按照www各子表名分类的查询结果list + HashMap>> leftTableDetailMap = new HashMap<>(); + + + + + + System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"); com.alibaba.fastjson2.JSONObject filterCondition = (com.alibaba.fastjson2.JSONObject)singleAsfChildTableFillRoleObject.get("filterCondition"); String singleAsfChildTableConditionHtml = filterCondition.get("conditionHtml").toString(); if(!StringUtils.isBlank(singleAsfChildTableConditionHtml)){//设置了筛选条件 @@ -2099,17 +2164,80 @@ public class CustomerFormServiceImpl implements CustomerFormService { String singleAsfChildTableMathsFormula = ((com.alibaba.fastjson2.JSONObject) filterCondition.get("gongShi")).get("mathsFormula").toString(); String singleAsfChildTableMathsString = ((com.alibaba.fastjson2.JSONObject) filterCondition.get("gongShi")).get("mathsString").toString(); }else{//没有设置筛选条件 - //fieldRecordMapper.getDataTitlesByIds(asfFormName,currentVal,); - System.out.println(fillFieldsChild.get(i)); - System.out.println(asfFormName); + + + for(List> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ + ArrayList toSelectTableFeilds = new ArrayList<>(); + HashMap toSelectTableFeildsMap = new HashMap<>(); + for(Map map :list){ + System.out.println("map===>"+map); + toSelectTableFeilds.add("`"+map.get("leftTableField")+"`"); + toSelectTableFeildsMap.put(map.get("leftTableField"),map.get("rightTableField")); + } + if(list.size()>0){ + String leftTableName = "`"+list.get(0).get("leftTableName")+"`"; + String rightTableName = list.get(0).get("rightTableName"); + //根据currentVal获取currentMastersKey + String currentMastersKey = fieldRecordMapper.queryCurrentMastersKey(currentVal,asfFormName); + System.out.println(list.get(0).get("leftTableName")); + System.out.println(toSelectTableFeilds); + ArrayList> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + replaceKeys(leftTableDetail,toSelectTableFeildsMap); + leftTableDetailMap.put(rightTableName,leftTableDetail); + } + + } + + // 遍历 + for (Map.Entry>> entry : leftTableDetailMap.entrySet()) { + //当前子表拼装结果 + AsfTableFillResult afr = new AsfTableFillResult(); + + String keyx = entry.getKey(); + ArrayList> valueList = entry.getValue(); + System.out.println("Key: " + keyx); + afr.setTableName(keyx); + afr.setTableDetail(valueList); + resultList.add(afr); + } + System.out.println(1); + } } + if(resultList.size()>0){ + return resultList; + }else{ + return null; + } }else{ return null; } - return null; + } } + public static List>> splitListByRightTableName(ArrayList> singleAsfChildTableFillRoleMapList) { + Map>> groupedMaps = new HashMap<>(); + for (HashMap map : singleAsfChildTableFillRoleMapList) { + String rightTableName = map.get("rightTableName"); + if (rightTableName!= null) { + groupedMaps.computeIfAbsent(rightTableName, k -> new ArrayList<>()).add(map); + } + } + return new ArrayList<>(groupedMaps.values()); + } + + + public static void replaceKeys(ArrayList> list, HashMap map) { + for (HashMap item : list) { + for (String key : item.keySet().toArray(new String[0])) { + if (map.containsKey(key)) { + Object value = item.remove(key); + item.put(map.get(key), value); + } + } + } + } + } diff --git a/src/main/resources/mapper/FieldRecordMapper.xml b/src/main/resources/mapper/FieldRecordMapper.xml index 5967a9c..4cb175d 100644 --- a/src/main/resources/mapper/FieldRecordMapper.xml +++ b/src/main/resources/mapper/FieldRecordMapper.xml @@ -123,4 +123,21 @@ + + + \ No newline at end of file