diff --git a/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java b/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java index 26eea39..1689dfa 100644 --- a/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java +++ b/src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java @@ -2,8 +2,9 @@ package com.hxgk.lowcode.controller; import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue; import com.hxgk.lowcode.model.entity.Option; -import com.hxgk.lowcode.model.entity.SystemRole; import com.hxgk.lowcode.model.entity.Tree; +import com.hxgk.lowcode.model.entity.requestParam.AsfDataTitlesByIdsQueryParam; +import com.hxgk.lowcode.model.entity.response.AsfDataTitlesByIdsResponseEntity; import com.hxgk.lowcode.service.CustomerFormService; import com.hxgk.lowcode.service.HrService; import com.hxgk.lowcode.utils.JsonData; @@ -12,7 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; -import java.util.HashMap; +import java.util.List; import java.util.Map; /* @@ -25,8 +26,13 @@ public class AssociatedFormsController { @Autowired private CustomerFormService customerFormService; @Autowired + private AsfDataTitlesByIdsQueryParam asfDataTitlesByIdsQueryParam; + @Autowired private HrService hrService; + public AssociatedFormsController() { + } + /*获取用户有权限的启用状态的表单列表树形结构*/ @RequestMapping(value = "/AssociatedForms/getCustomerFormList") public JsonData getCustomerFormList(@RequestHeader(value = "User-Key") String key, @@ -116,18 +122,35 @@ public class AssociatedFormsController { String hideFormula = requestBody.get("hideFormula"); String hideString = requestBody.get("hideString"); - /*System.out.println(formId); - System.out.println(dataTitle); - System.out.println(rangeFormula); - System.out.println(rangeString); - System.out.println(hideFormula); - System.out.println(hideString);*/ ArrayList dataTitles = customerFormService.getAsfDataTitles(formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString); - /*if(null==fieldList){ - return JsonData.buildError("非法请求"); - }*/ + return JsonData.buildSuccess(dataTitles); } + /*列表页获取关联表单数据标题*/ + @RequestMapping(value = "AssociatedForms/getAsfDataTitlesByIds") + public JsonData getAsfDataTitlesByIds(@RequestHeader(value = "User-Key") String key, + @RequestHeader(value = "User-Token") String token, + @RequestBody List param) { + if(StringUtils.isBlank(key)||StringUtils.isBlank(token)){ + return JsonData.buildError("非法请求"); + } + ArrayList list = new ArrayList<>(); + for(AsfDataTitlesByIdsQueryParam a: param){ + + ArrayList dataTitles = customerFormService.getAsfDataTitlesByIds(a.getFormId(),a.getAsfToSelectIds()); + AsfDataTitlesByIdsResponseEntity asfDataTitlesByIdsResponseEntity = new AsfDataTitlesByIdsResponseEntity(); + asfDataTitlesByIdsResponseEntity.setField(a.getField()); + + asfDataTitlesByIdsResponseEntity.setList(dataTitles); + list.add(asfDataTitlesByIdsResponseEntity); + } + + + + return JsonData.buildSuccess(list); + + } + } diff --git a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java index fb8774b..dc53a97 100644 --- a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java +++ b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java @@ -17,4 +17,6 @@ public interface FieldRecordMapper { ArrayList getFieldRecord(@Param("formIdOrTableKey") String formIdOrTableKey, @Param("fieldKey")String fieldKey); List> getDataTitles(@Param("asfFormName") String asfFormName, @Param("fields") List toSelectDataTitles); + + List> getDataTitlesByIds(@Param("asfFormName") String asfFormName, @Param("fields") List toSelectDataTitles,@Param("ids") ArrayList 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 9f10092..2e13418 100644 --- a/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java +++ b/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java @@ -9,6 +9,8 @@ public class CustomerFormTableSingleFieldValue { private String label; + private String asfMasterId; + public String getValue() { return value; } @@ -25,9 +27,18 @@ public class CustomerFormTableSingleFieldValue { this.label = label; } - public CustomerFormTableSingleFieldValue(String value, String label) { + public String getAsfMasterId() { + return asfMasterId; + } + + public void setAsfMasterId(String asfMasterId) { + this.asfMasterId = asfMasterId; + } + + public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId) { this.value = value; this.label = label; + this.asfMasterId = asfMasterId; } public CustomerFormTableSingleFieldValue() { diff --git a/src/main/java/com/hxgk/lowcode/model/entity/requestParam/AsfDataTitlesByIdsQueryParam.java b/src/main/java/com/hxgk/lowcode/model/entity/requestParam/AsfDataTitlesByIdsQueryParam.java new file mode 100644 index 0000000..40ff41f --- /dev/null +++ b/src/main/java/com/hxgk/lowcode/model/entity/requestParam/AsfDataTitlesByIdsQueryParam.java @@ -0,0 +1,37 @@ +package com.hxgk.lowcode.model.entity.requestParam; + +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.HashMap; + +@Repository +public class AsfDataTitlesByIdsQueryParam { + private String formId; + private String field; + private ArrayList> asfToSelectIds; + + public String getFormId() { + return formId; + } + + public void setFormId(String formId) { + this.formId = formId; + } + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + public ArrayList> getAsfToSelectIds() { + return asfToSelectIds; + } + + public void setAsfToSelectIds(ArrayList> asfToSelectIds) { + this.asfToSelectIds = asfToSelectIds; + } +} diff --git a/src/main/java/com/hxgk/lowcode/model/entity/response/AsfDataTitlesByIdsResponseEntity.java b/src/main/java/com/hxgk/lowcode/model/entity/response/AsfDataTitlesByIdsResponseEntity.java new file mode 100644 index 0000000..8f39e38 --- /dev/null +++ b/src/main/java/com/hxgk/lowcode/model/entity/response/AsfDataTitlesByIdsResponseEntity.java @@ -0,0 +1,31 @@ +package com.hxgk.lowcode.model.entity.response; + +import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue; +import com.hxgk.lowcode.model.entity.requestParam.AsfDataTitlesByIdsQueryParam; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; + +@Repository +public class AsfDataTitlesByIdsResponseEntity { + private String field; + private ArrayList list; + + + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + public ArrayList getList() { + return list; + } + + public void setList(ArrayList list) { + this.list = list; + } +} diff --git a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java index 748d60c..0e3c08a 100644 --- a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java +++ b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java @@ -5,6 +5,7 @@ import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue; import com.hxgk.lowcode.model.entity.Tree; import java.util.ArrayList; +import java.util.HashMap; public interface CustomerFormService { Tree getCustomerFormList(String key, String token); @@ -16,4 +17,5 @@ public interface CustomerFormService { ArrayList getFieldRecord(String key, String token, String[] optionsValue3FieldArray); ArrayList getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString); + ArrayList getAsfDataTitlesByIds(String AsfFormId,ArrayList> ids); } 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 6e22b02..eac7a16 100644 --- a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java +++ b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java @@ -576,7 +576,7 @@ public class CustomerFormServiceImpl implements CustomerFormService { labelBuilder.append(value.toString()).append(" "); } String label = labelBuilder.toString().substring(0, labelBuilder.length() - 1); - return new CustomerFormTableSingleFieldValue(lastValue, label); + return new CustomerFormTableSingleFieldValue(lastValue, label,""); } //数据标题截取最后一个空格 public static String removeAfterLastSpace(String str) { @@ -587,7 +587,7 @@ public class CustomerFormServiceImpl implements CustomerFormService { return str; } /* - form + 关联表单组件下拉数据标题选项获取(所有) */ @Override public ArrayList getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString) { @@ -665,4 +665,92 @@ public class CustomerFormServiceImpl implements CustomerFormService { } + + + /* + 关联表单组件列表显示,根据关联表单id数组获取相应的数据标题 + */ + @Override + public ArrayList getAsfDataTitlesByIds(String AsfFormId,ArrayList> ids) { + + ArrayList asfIds = getAsfIds(ids); + //根据formId(cfid)查询关联表单表名 + String asfFormName = customerFormViewMapper.getTableNameByCfid(AsfFormId).getTablekey(); + //查询关联表单的数据标题 + String mastesformjson = customerFormViewMapper.getTableNameByCfid(AsfFormId).getMastesformjson(); + com.alibaba.fastjson2.JSONObject jsonObject = JSON.parseObject(mastesformjson); + JSONArray dataTitleJsonArray = jsonObject.getJSONObject("form").getJSONArray("dataTitle"); + List dataTitleArray = new ArrayList<>(); + if(jsonObject.getJSONObject("form").getJSONArray("dataTitle")==null){ + dataTitleArray.add("aaa:aaa:id"); + }else{ + dataTitleArray = dataTitleJsonArray.toJavaList(String.class); + } + + //关联表单的数据标题list + ArrayList toSelectDataTitles = new ArrayList<>(); + for(String title : dataTitleArray){ + String[] titleArr = title.split(":"); + toSelectDataTitles.add(titleArr[2]); + } + //如果被关联的表单暂未配置dataTitle,则默认id + if(toSelectDataTitles.size()==0){ + toSelectDataTitles.add("id"); + } + + List> dataTitleMapList = fieldRecordMapper.getDataTitlesByIds(asfFormName,toSelectDataTitles,asfIds); + + // 自定义比较器用以排序dataTitleMapList + Comparator customComparator = new Comparator() { + @Override + public int compare(String key1, String key2) { + if (toSelectDataTitles.contains(key1) && toSelectDataTitles.contains(key2)) { + int index1 = toSelectDataTitles.indexOf(key1); + int index2 = toSelectDataTitles.indexOf(key2); + return Integer.compare(index1, index2); + } else if (key1.equals("value")) { + return 1; + } else if (key2.equals("value")) { + return -1; + } + return 0; + } + }; + ArrayList> sortedDataTitleMapList = new ArrayList<>(); + for(TreeMap toSortTreeMap : dataTitleMapList){ + // 对 TreeMap 进行排序 + TreeMap sortedTreeMap = new TreeMap<>(customComparator); + sortedTreeMap.putAll(toSortTreeMap); + sortedDataTitleMapList.add(sortedTreeMap); + } + //转为CustomerFormTableSingleFieldValue对象list + ArrayList toReturnSortedDataTitleList = new ArrayList<>(); + for(TreeMap sortedDataTitleMap : sortedDataTitleMapList){ + CustomerFormTableSingleFieldValue customerFormTableSingleFieldValue = generateCustomerFormTableSingleFieldValue(sortedDataTitleMap); + customerFormTableSingleFieldValue.setLabel(removeAfterLastSpace(customerFormTableSingleFieldValue.getLabel())); + toReturnSortedDataTitleList.add(customerFormTableSingleFieldValue); + } + matchAndUpdate(toReturnSortedDataTitleList,ids); + return toReturnSortedDataTitleList; + + } + public static ArrayList getAsfIds(ArrayList> list) { + ArrayList asfIdList = new ArrayList<>(); + for (HashMap map : list) { + asfIdList.add(map.get("asfId")); + } + return asfIdList; + } + + public static void matchAndUpdate(ArrayList list, ArrayList> ids) { + for (CustomerFormTableSingleFieldValue item : list) { + for (HashMap map : ids) { + if (map.get("asfId").equals(item.getValue())) { + item.setAsfMasterId(map.get("asfMasterId")); + break; + } + } + } + } + } diff --git a/src/main/resources/mapper/FieldRecordMapper.xml b/src/main/resources/mapper/FieldRecordMapper.xml index 872fa49..0067ab2 100644 --- a/src/main/resources/mapper/FieldRecordMapper.xml +++ b/src/main/resources/mapper/FieldRecordMapper.xml @@ -20,5 +20,20 @@ from ${asfFormName} where states = 1 + \ No newline at end of file