From 4bef00b6fe35d74034fab279390a9a52a13e34a5 Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Wed, 4 Sep 2024 15:24:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3sql=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E4=B8=8D=E6=94=AF=E6=8C=81=E6=9F=90=E4=BA=9B=E4=B8=8D=E8=A7=84?= =?UTF-8?q?=E8=8C=83=E5=AD=97=E6=AE=B5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AssociatedFormsController.java | 27 ++++ .../model/entity/AsfTableFillResult.java | 28 ++++ .../lowcode/service/CustomerFormService.java | 3 + .../service/impl/CustomerFormServiceImpl.java | 121 +++++++++++------- .../resources/mapper/FieldRecordMapper.xml | 2 +- 5 files changed, 136 insertions(+), 45 deletions(-) create mode 100644 src/main/java/com/hxgk/lowcode/model/entity/AsfTableFillResult.java diff --git a/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java b/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java index 691998b..8831427 100644 --- a/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java +++ b/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java @@ -1,6 +1,8 @@ package com.hxgk.lowcode.controller; import com.alibaba.fastjson2.JSON; +import com.hxgk.lowcode.mapper.CustomerFormViewMapper; +import com.hxgk.lowcode.model.entity.AsfTableFillResult; import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue; import com.hxgk.lowcode.model.entity.Option; import com.hxgk.lowcode.model.entity.Tree; @@ -30,6 +32,8 @@ public class AssociatedFormsController { private AsfDataTitlesByIdsQueryParam asfDataTitlesByIdsQueryParam; @Autowired private HrService hrService; + @Autowired + private CustomerFormViewMapper customerFormViewMapper; public AssociatedFormsController() { } @@ -202,4 +206,27 @@ public class AssociatedFormsController { } + + /*获取关联表单当前选择值的子表填充数据*/ + @RequestMapping(value = "AssociatedForms/getAsfTableFill") + public JsonData getAsfTableFill(@RequestHeader(value = "User-Key") String key, + @RequestHeader(value = "User-Token") String token, + @RequestBody Map requestBody) { + if(StringUtils.isBlank(key)||StringUtils.isBlank(token)){ + return JsonData.buildError("非法请求"); + } + String asfFormId = requestBody.get("asfFormId"); + String glbbddbd = requestBody.get("glbbddbd"); + 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); + + return JsonData.buildSuccess("1"); + + } + } diff --git a/src/main/java/com/hxgk/lowcode/model/entity/AsfTableFillResult.java b/src/main/java/com/hxgk/lowcode/model/entity/AsfTableFillResult.java new file mode 100644 index 0000000..d116c04 --- /dev/null +++ b/src/main/java/com/hxgk/lowcode/model/entity/AsfTableFillResult.java @@ -0,0 +1,28 @@ +package com.hxgk.lowcode.model.entity; + +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.HashMap; + +@Repository +public class AsfTableFillResult { + private String tableName; + private ArrayList> tableDetail; + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public ArrayList> getTableDetail() { + return tableDetail; + } + + public void setTableDetail(ArrayList> tableDetail) { + this.tableDetail = tableDetail; + } +} diff --git a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java index 70c7cd0..22c547c 100644 --- a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java +++ b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java @@ -2,6 +2,7 @@ package com.hxgk.lowcode.service; import com.alibaba.fastjson2.JSONArray; +import com.hxgk.lowcode.model.entity.AsfTableFillResult; import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue; import com.hxgk.lowcode.model.entity.Tree; @@ -23,4 +24,6 @@ public interface CustomerFormService { Boolean queryIfOrgOrPersonContainsCurrentUser(String key, String token, String targetOrgOrPerson, String condition, String currentUser); 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); } 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 444da5e..544ad05 100644 --- a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java +++ b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java @@ -697,14 +697,6 @@ 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"); @@ -1570,37 +1562,8 @@ public class CustomerFormServiceImpl implements CustomerFormService { //数据填充规则数据字段准备 start - - - System.out.println(fillFieldsChild); - - if(fillFieldsChild.size()>0){ - for(int i = 0; i masterFillRoleFields = new ArrayList<>(); + ArrayList masterFillRoleFields1 = new ArrayList<>(); if(fillFieldsMaster.length()>0){ fillFieldsMaster = fillFieldsMaster.substring(0, fillFieldsMaster.length() - 1); String[] masterFillRoleFieldsArray = fillFieldsMaster.split(";"); @@ -1623,7 +1586,10 @@ public class CustomerFormServiceImpl implements CustomerFormService { //asfFormName 关联表单的表名 //关联表单子表名数组 if(masterIds.size()>0){ - List> asfDetailList = fieldRecordMapper.getAsfDetail(asfFormName, masterFillRoleFields, masterIds); + for (int i = 0; i < masterFillRoleFields.size(); i++) { + masterFillRoleFields1.add(i, "`" + masterFillRoleFields.get(i) + "`"); + } + List> asfDetailList = fieldRecordMapper.getAsfDetail(asfFormName, masterFillRoleFields1, masterIds); System.out.println(asfDetailList); for(TreeMap toSortTreeMap : dataTitleMapList){ for(HashMap map :asfDetailList){ @@ -1720,6 +1686,7 @@ public class CustomerFormServiceImpl implements CustomerFormService { } return false; } + public static HashMap splitString(String str) { List operators = Arrays.asList("==", ">", ">=", "<", "<=", "!=", "不包含", "包含"); @@ -1740,7 +1707,14 @@ public class CustomerFormServiceImpl implements CustomerFormService { private List> getDataTitles(String asfFormName,ArrayList toSelectDataTitles){ List> newDataTitles = new ArrayList<>(); - List> dataTitles = fieldRecordMapper.getDataTitles(asfFormName, toSelectDataTitles); + /*for(String item :toSelectDataTitles){ + item = "`"+item+"`"; + }*/ + ArrayList toSelectDataTitles1 = new ArrayList<>(); + for (int i = 0; i < toSelectDataTitles.size(); i++) { + toSelectDataTitles1.add(i, "`" + toSelectDataTitles.get(i) + "`"); + } + List> dataTitles = fieldRecordMapper.getDataTitles(asfFormName, toSelectDataTitles1); //没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner //没有org的 processDataTitles(dataTitles); @@ -1748,7 +1722,17 @@ public class CustomerFormServiceImpl implements CustomerFormService { } private List> getDataTitlesWithWhere_Asf_NotTable(String asfFormName,ArrayList toSelectDataTitles,String operator,String whereCondition,String leftValue){ List> newDataTitles = new ArrayList<>(); - List> dataTitles = fieldRecordMapper.getDataTitlesWithWhere_Asf_NotTable(asfFormName, toSelectDataTitles,operator,whereCondition,leftValue); + /*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 + "`"; + } + List> dataTitles = fieldRecordMapper.getDataTitlesWithWhere_Asf_NotTable(asfFormName, toSelectDataTitles1,operator,whereCondition,leftValue); //没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner //没有org的 processDataTitles(dataTitles); @@ -1757,10 +1741,14 @@ public class CustomerFormServiceImpl implements CustomerFormService { 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){ - String a = "asf."+item; + String a = "asf.`"+item+"`"; toSelectDataTitles1.add(a); } List> newDataTitles = new ArrayList<>(); + if(!StringUtils.isBlank(whereConditionField)){ + whereConditionField = "asf.`"+whereConditionField+"`"; + } + List> dataTitles = fieldRecordMapper.getDataTitlesWithWhere_Master_NotTable(asfFormName, toSelectDataTitles1,masterFormName,masterOnField,whereConditionField,operator,whereConditionValue); //没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner //没有org的 @@ -1772,9 +1760,12 @@ public class CustomerFormServiceImpl implements CustomerFormService { private List> getDataTitlesWithWhere_Master_IsTable(String parent,ArrayList toSelectDataTitles, String child, String whereConditionField, String operator, String whereConditionValue) { ArrayList toSelectDataTitles1 = new ArrayList<>(); for(String item : toSelectDataTitles){ - String a = "parent."+item; + String a = "parent.`"+item+"`"; toSelectDataTitles1.add(a); } + if(!StringUtils.isBlank(whereConditionField)){ + whereConditionField = "`"+whereConditionField+"`"; + } List> newDataTitles = new ArrayList<>(); List> dataTitles = fieldRecordMapper.getDataTitlesWithWhere_Master_IsTable(parent, toSelectDataTitles1,child,whereConditionField,operator,whereConditionValue); //没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner @@ -1840,6 +1831,7 @@ public class CustomerFormServiceImpl implements CustomerFormService { //关联表单的数据标题list ArrayList toSelectDataTitles = new ArrayList<>(); + ArrayList toSelectDataTitles1 = new ArrayList<>(); for(String title : dataTitleArray){ String[] titleArr = title.split(":"); toSelectDataTitles.add(titleArr[2]); @@ -1849,8 +1841,14 @@ public class CustomerFormServiceImpl implements CustomerFormService { if(toSelectDataTitles.size()==0){ toSelectDataTitles.add("id"); } + /*for(String item : toSelectDataTitles){ + item = "`"+item+"`"; + }*/ - List> dataTitleMapList = fieldRecordMapper.getDataTitlesByIds(asfFormName,toSelectDataTitles,asfIds); + for (int i = 0; i < toSelectDataTitles.size(); i++) { + toSelectDataTitles1.add(i, "`" + toSelectDataTitles.get(i) + "`"); + } + List> dataTitleMapList = fieldRecordMapper.getDataTitlesByIds(asfFormName,toSelectDataTitles1,asfIds); // 自定义比较器用以排序dataTitleMapList Comparator customComparator = new Comparator() { @@ -2078,5 +2076,40 @@ public class CustomerFormServiceImpl implements CustomerFormService { } + @Override + public ArrayList getAsfTableFill(String key, String token, String asfFormName, String glbbddbd, String currentVal,JSONArray fillFieldsChild) { + //获取当前用户信息 从redis中根据userkey和usertoken拿到userdetail + Map keytokenmap = new HashMap<>(); + keytokenmap.put("userkey",key); + keytokenmap.put("usertoken",token); + UserDetail userDetail = userService.getUserDetailFromRedis(keytokenmap); + if(userDetail==null){ + return null; + }else{ + + //System.out.println(fillFieldsChild); + + if(fillFieldsChild.size()>0){ + for(int i = 0; i - select id as value,${fieldKey} as label from ${formIdOrTableKey} where states = 1 + select id as value,`${fieldKey}` as label from ${formIdOrTableKey} where states = 1