From 4cc6bdb63f72b8f7189d51cadac4304bcc499201 Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Wed, 28 Aug 2024 16:49:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E8=A1=A8=E5=A1=AB=E5=85=85=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AssociatedFormsController.java | 8 +- .../lowcode/mapper/FieldRecordMapper.java | 7 +- .../CustomerFormTableSingleFieldValue.java | 37 +++++++ .../lowcode/service/CustomerFormService.java | 3 +- .../service/impl/CustomerFormServiceImpl.java | 96 ++++++++++++++++++- .../resources/mapper/FieldRecordMapper.xml | 16 ++++ 6 files changed, 156 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java b/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java index 4a9eb91..e3a5b40 100644 --- a/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java +++ b/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java @@ -1,5 +1,6 @@ package com.hxgk.lowcode.controller; +import com.alibaba.fastjson2.JSON; import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue; import com.hxgk.lowcode.model.entity.Option; import com.hxgk.lowcode.model.entity.Tree; @@ -124,7 +125,12 @@ public class AssociatedFormsController { String hideFormula = requestBody.get("hideFormula"); String hideString = requestBody.get("hideString"); String masterOnField = requestBody.get("masterOnField"); - ArrayList dataTitles = customerFormService.getAsfDataTitles(key,token,formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString,masterOnField); + String fillFieldsMaster = requestBody.get("fillFieldsMaster"); + String fillFieldsChild = requestBody.get("fillFieldsChild"); + System.out.println(fillFieldsChild); + + com.alibaba.fastjson2.JSONArray fillFieldsChildJsonObject = JSON.parseArray(fillFieldsChild); + ArrayList dataTitles = customerFormService.getAsfDataTitles(key,token,formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString,masterOnField,fillFieldsMaster,fillFieldsChildJsonObject); return JsonData.buildSuccess(dataTitles); diff --git a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java index b759181..858f984 100644 --- a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java +++ b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java @@ -5,10 +5,7 @@ import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue; 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; +import java.util.*; @DS("tidbintranetcustomerform") @Mapper @@ -34,4 +31,6 @@ public interface FieldRecordMapper { @Param("parent") String parent,@Param("fields") List toSelectDataTitles, @Param("child") String child, @Param("whereConditionField") String whereConditionField, @Param("operator") String operator, @Param("whereConditionValue") String whereConditionValue ); + + List> getAsfDetail(@Param("asfFormName") String asfFormName, @Param("fields") List toSelectDataTitles,@Param("ids") List ids); } 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 166f347..c832086 100644 --- a/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java +++ b/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java @@ -2,6 +2,9 @@ package com.hxgk.lowcode.model.entity; import org.springframework.stereotype.Repository; +import java.util.HashMap; +import java.util.Map; + @Repository public class CustomerFormTableSingleFieldValue { @@ -19,6 +22,8 @@ public class CustomerFormTableSingleFieldValue { private String creater; + private Map fillRolesFieldsMap; + public String getCreater() { return creater; } @@ -93,6 +98,37 @@ public class CustomerFormTableSingleFieldValue { this.org = org; } + public Map getFillRolesFieldsMap() { + return fillRolesFieldsMap; + } + + public void setFillRolesFieldsMap(Map fillRolesFieldsMap) { + this.fillRolesFieldsMap = fillRolesFieldsMap; + } + + /*Map map1 = new HashMap() {{ + put("key5", "value5"); + put("key6", "value6"); + }}; + + public Map getFillRolesFieldsMap() { + return map1; + } + + public void setFillRolesFieldsMap(Map fillRolesFieldsMap) { + this.fillRolesFieldsMap = map1; + } + */ + public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org, String creater,HashMapfillRolesFieldsMap) { + this.value = value; + this.label = label; + this.asfMasterId = asfMasterId; + this.field = field; + this.owner = owner; + this.org = org; + this.creater = creater; + this.fillRolesFieldsMap = fillRolesFieldsMap; + } public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org, String creater) { this.value = value; this.label = label; @@ -101,6 +137,7 @@ public class CustomerFormTableSingleFieldValue { this.owner = owner; this.org = org; this.creater = creater; + } @Override diff --git a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java index 1cd4c2e..f8484bf 100644 --- a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java +++ b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java @@ -1,6 +1,7 @@ package com.hxgk.lowcode.service; +import com.alibaba.fastjson2.JSONArray; import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue; import com.hxgk.lowcode.model.entity.Tree; @@ -16,7 +17,7 @@ public interface CustomerFormService { ArrayList getFieldRecord(String key, String token, String[] optionsValue3FieldArray); - ArrayList getAsfDataTitles(String key, String token,String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString,String masterOnField); + ArrayList getAsfDataTitles(String key, String token, String formId, String dataTitle, String rangeFormula, String rangeString, String hideFormula, String hideString, String masterOnField, String fillFieldsMaster, JSONArray fillFieldsChild); ArrayList getAsfDataTitlesByIds(String AsfFormId,ArrayList> ids); Boolean queryIfOrgOrPersonContainsCurrentUser(String key, String token, String targetOrgOrPerson, String condition, String currentUser); 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 8df9618..ddf9d4f 100644 --- a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java +++ b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java @@ -26,6 +26,7 @@ import org.apache.logging.log4j.Logger; import java.io.IOException; +import java.lang.reflect.Array; import java.util.*; @Service @@ -589,10 +590,12 @@ public class CustomerFormServiceImpl implements CustomerFormService { String org = ""; String owner = ""; String creater = ""; + HashMap filedMap = new HashMap<>(); treeMap.remove("value"); boolean containsOrg = false; boolean containsOwner = false; boolean containsCreater= true; + boolean containsFiledMap= false; for (String key : treeMap.keySet()) { if (key.equals("org")) { containsOrg = true; @@ -605,6 +608,13 @@ public class CustomerFormServiceImpl implements CustomerFormService { break; } } + + for (String key : treeMap.keySet()) { + if (key.equals("filedMap")) { + containsFiledMap = true; + break; + } + } if(containsOrg){ org = treeMapx.get("org").toString(); } @@ -614,12 +624,14 @@ public class CustomerFormServiceImpl implements CustomerFormService { if(containsCreater){ creater = treeMapx.get("creater").toString(); } - + if(containsFiledMap){ + filedMap = (HashMap) treeMapx.get("filedMap"); + } 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")){ + if(key.toString().equals("org")||key.toString().equals("owner")||key.toString().equals("creater")||key.toString().equals("filedMap")){ }else{ labelBuilder.append(value.toString()).append(" "); @@ -627,7 +639,13 @@ public class CustomerFormServiceImpl implements CustomerFormService { } String label = labelBuilder.toString().substring(0, labelBuilder.length() - 1); - return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater); + + if(containsFiledMap){ + return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater,filedMap); + }else{ + return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater); + } + } //数据标题截取最后一个空格 public static String removeAfterLastSpace(String str) { @@ -643,9 +661,10 @@ public class CustomerFormServiceImpl implements CustomerFormService { }*/ /* 关联表单组件下拉数据标题选项获取(已经可以解析数据范围条件) + */ @Override - public ArrayList getAsfDataTitles(String key, String token,String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString,String masterOnField) { + public ArrayList getAsfDataTitles(String key, String token,String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString,String masterOnField, String fillFieldsMaster, JSONArray fillFieldsChild) { //关联表单的id String AsfFormId = formId; //根据formId(cfid)查询关联表单表名 @@ -678,6 +697,14 @@ public class CustomerFormServiceImpl implements CustomerFormService { dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); //System.out.println(dataTitleMapList); }else{ + /*数据填充start*/ + + + + + + + /*数据填充end*/ HashMap leftOperatorsAndRight = splitString(rangeFormula); if(null!=leftOperatorsAndRight){ String left = leftOperatorsAndRight.get("left"); @@ -1532,10 +1559,58 @@ public class CustomerFormServiceImpl implements CustomerFormService { return 1; } else if (key2.equals("owner")) { return -1; + }else if (key1.equals("filedMap")) { + return 1; + } else if (key2.equals("filedMap")) { + return -1; } return 0; } }; + + + //数据填充规则数据字段准备 start + ArrayList masterFillRoleFields = new ArrayList<>(); + if(fillFieldsMaster.length()>0){ + fillFieldsMaster = fillFieldsMaster.substring(0, fillFieldsMaster.length() - 1); + String[] masterFillRoleFieldsArray = fillFieldsMaster.split(";"); + for(String masterFillRoleField :masterFillRoleFieldsArray){ + System.out.println("############################################################################################################################"); + System.out.println(masterFillRoleField); + Map masterFillRoleFieldMap = convert(masterFillRoleField); + System.out.println(1); + masterFillRoleFields.add(masterFillRoleFieldMap.get("left").split(":")[2]); + + } + + ArrayList masterIds = new ArrayList<>(); + for(TreeMap toSortTreeMap : dataTitleMapList){ + + masterIds.add(toSortTreeMap.get("value").toString()); + + } + + //asfFormName 关联表单的表名 + //关联表单子表名数组 + if(masterIds.size()>0){ + List> asfDetailList = fieldRecordMapper.getAsfDetail(asfFormName, masterFillRoleFields, masterIds); + System.out.println(asfDetailList); + for(TreeMap toSortTreeMap : dataTitleMapList){ + for(HashMap map :asfDetailList){ + if(map.get("value").toString().equals(toSortTreeMap.get("value").toString())){ + System.out.println(toSortTreeMap); + System.out.println(1); + toSortTreeMap.put("filedMap",map); + } + } + } + } + + } + + //数据填充规则数据字段准备 end + + ArrayList> sortedDataTitleMapList = new ArrayList<>(); for(TreeMap toSortTreeMap : dataTitleMapList){ // 对 TreeMap 进行排序 @@ -1566,7 +1641,18 @@ public class CustomerFormServiceImpl implements CustomerFormService { return toReturnSortedDataTitleList; } - + public static Map convert(String str) { + String[] parts = str.split("_"); + if (parts.length == 3) { + Map map = new HashMap<>(); + map.put("id", parts[0]); + map.put("left", parts[1]); + map.put("right", parts[2]); + return map; + } else { + return null; + } + } public static boolean isNumeric(String str) { try { diff --git a/src/main/resources/mapper/FieldRecordMapper.xml b/src/main/resources/mapper/FieldRecordMapper.xml index 85df6ea..4030921 100644 --- a/src/main/resources/mapper/FieldRecordMapper.xml +++ b/src/main/resources/mapper/FieldRecordMapper.xml @@ -107,4 +107,20 @@ + + + \ No newline at end of file