Browse Source

主表填充数据准备

master
liwenxuan 1 year ago
parent
commit
4cc6bdb63f
  1. 8
      src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java
  2. 7
      src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java
  3. 37
      src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java
  4. 3
      src/main/java/com/hxgk/lowcode/service/CustomerFormService.java
  5. 94
      src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java
  6. 16
      src/main/resources/mapper/FieldRecordMapper.xml

8
src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java

@ -1,5 +1,6 @@
package com.hxgk.lowcode.controller; package com.hxgk.lowcode.controller;
import com.alibaba.fastjson2.JSON;
import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue; import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue;
import com.hxgk.lowcode.model.entity.Option; import com.hxgk.lowcode.model.entity.Option;
import com.hxgk.lowcode.model.entity.Tree; import com.hxgk.lowcode.model.entity.Tree;
@ -124,7 +125,12 @@ public class AssociatedFormsController {
String hideFormula = requestBody.get("hideFormula"); String hideFormula = requestBody.get("hideFormula");
String hideString = requestBody.get("hideString"); String hideString = requestBody.get("hideString");
String masterOnField = requestBody.get("masterOnField"); String masterOnField = requestBody.get("masterOnField");
ArrayList<CustomerFormTableSingleFieldValue> 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<CustomerFormTableSingleFieldValue> dataTitles = customerFormService.getAsfDataTitles(key,token,formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString,masterOnField,fillFieldsMaster,fillFieldsChildJsonObject);
return JsonData.buildSuccess(dataTitles); return JsonData.buildSuccess(dataTitles);

7
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.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@DS("tidbintranetcustomerform") @DS("tidbintranetcustomerform")
@Mapper @Mapper
@ -34,4 +31,6 @@ public interface FieldRecordMapper {
@Param("parent") String parent,@Param("fields") List<String> toSelectDataTitles, @Param("child") String child, @Param("parent") String parent,@Param("fields") List<String> toSelectDataTitles, @Param("child") String child,
@Param("whereConditionField") String whereConditionField, @Param("operator") String operator, @Param("whereConditionValue") String whereConditionValue @Param("whereConditionField") String whereConditionField, @Param("operator") String operator, @Param("whereConditionValue") String whereConditionValue
); );
List<HashMap<String, Object>> getAsfDetail(@Param("asfFormName") String asfFormName, @Param("fields") List<String> toSelectDataTitles,@Param("ids") List<String> ids);
} }

37
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 org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.Map;
@Repository @Repository
public class CustomerFormTableSingleFieldValue { public class CustomerFormTableSingleFieldValue {
@ -19,6 +22,8 @@ public class CustomerFormTableSingleFieldValue {
private String creater; private String creater;
private Map<String,Object> fillRolesFieldsMap;
public String getCreater() { public String getCreater() {
return creater; return creater;
} }
@ -93,6 +98,37 @@ public class CustomerFormTableSingleFieldValue {
this.org = org; this.org = org;
} }
public Map<String, Object> getFillRolesFieldsMap() {
return fillRolesFieldsMap;
}
public void setFillRolesFieldsMap(Map<String, Object> fillRolesFieldsMap) {
this.fillRolesFieldsMap = fillRolesFieldsMap;
}
/*Map<String,String> map1 = new HashMap<String, String>() {{
put("key5", "value5");
put("key6", "value6");
}};
public Map<String, String> getFillRolesFieldsMap() {
return map1;
}
public void setFillRolesFieldsMap(Map<String, String> fillRolesFieldsMap) {
this.fillRolesFieldsMap = map1;
}
*/
public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org, String creater,HashMap<String,Object>fillRolesFieldsMap) {
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) { public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org, String creater) {
this.value = value; this.value = value;
this.label = label; this.label = label;
@ -101,6 +137,7 @@ public class CustomerFormTableSingleFieldValue {
this.owner = owner; this.owner = owner;
this.org = org; this.org = org;
this.creater = creater; this.creater = creater;
} }
@Override @Override

3
src/main/java/com/hxgk/lowcode/service/CustomerFormService.java

@ -1,6 +1,7 @@
package com.hxgk.lowcode.service; package com.hxgk.lowcode.service;
import com.alibaba.fastjson2.JSONArray;
import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue; import com.hxgk.lowcode.model.entity.CustomerFormTableSingleFieldValue;
import com.hxgk.lowcode.model.entity.Tree; import com.hxgk.lowcode.model.entity.Tree;
@ -16,7 +17,7 @@ public interface CustomerFormService {
ArrayList<CustomerFormTableSingleFieldValue> getFieldRecord(String key, String token, String[] optionsValue3FieldArray); ArrayList<CustomerFormTableSingleFieldValue> getFieldRecord(String key, String token, String[] optionsValue3FieldArray);
ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitles(String key, String token,String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString,String masterOnField); ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitles(String key, String token, String formId, String dataTitle, String rangeFormula, String rangeString, String hideFormula, String hideString, String masterOnField, String fillFieldsMaster, JSONArray fillFieldsChild);
ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitlesByIds(String AsfFormId,ArrayList<HashMap<String,String>> ids); ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitlesByIds(String AsfFormId,ArrayList<HashMap<String,String>> ids);
Boolean queryIfOrgOrPersonContainsCurrentUser(String key, String token, String targetOrgOrPerson, String condition, String currentUser); Boolean queryIfOrgOrPersonContainsCurrentUser(String key, String token, String targetOrgOrPerson, String condition, String currentUser);

94
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.io.IOException;
import java.lang.reflect.Array;
import java.util.*; import java.util.*;
@Service @Service
@ -589,10 +590,12 @@ public class CustomerFormServiceImpl implements CustomerFormService {
String org = ""; String org = "";
String owner = ""; String owner = "";
String creater = ""; String creater = "";
HashMap<String,Object> filedMap = new HashMap<>();
treeMap.remove("value"); treeMap.remove("value");
boolean containsOrg = false; boolean containsOrg = false;
boolean containsOwner = false; boolean containsOwner = false;
boolean containsCreater= true; boolean containsCreater= true;
boolean containsFiledMap= false;
for (String key : treeMap.keySet()) { for (String key : treeMap.keySet()) {
if (key.equals("org")) { if (key.equals("org")) {
containsOrg = true; containsOrg = true;
@ -605,6 +608,13 @@ public class CustomerFormServiceImpl implements CustomerFormService {
break; break;
} }
} }
for (String key : treeMap.keySet()) {
if (key.equals("filedMap")) {
containsFiledMap = true;
break;
}
}
if(containsOrg){ if(containsOrg){
org = treeMapx.get("org").toString(); org = treeMapx.get("org").toString();
} }
@ -614,12 +624,14 @@ public class CustomerFormServiceImpl implements CustomerFormService {
if(containsCreater){ if(containsCreater){
creater = treeMapx.get("creater").toString(); creater = treeMapx.get("creater").toString();
} }
if(containsFiledMap){
filedMap = (HashMap<String, Object>) treeMapx.get("filedMap");
}
StringBuilder labelBuilder = new StringBuilder(); StringBuilder labelBuilder = new StringBuilder();
for (Map.Entry<String, Object> entry : treeMap.entrySet()) { for (Map.Entry<String, Object> entry : treeMap.entrySet()) {
Object value = entry.getValue(); Object value = entry.getValue();
Object key = entry.getKey(); 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{ }else{
labelBuilder.append(value.toString()).append(" "); labelBuilder.append(value.toString()).append(" ");
@ -627,8 +639,14 @@ public class CustomerFormServiceImpl implements CustomerFormService {
} }
String label = labelBuilder.toString().substring(0, labelBuilder.length() - 1); String label = labelBuilder.toString().substring(0, labelBuilder.length() - 1);
if(containsFiledMap){
return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater,filedMap);
}else{
return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater); return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater);
} }
}
//数据标题截取最后一个空格 //数据标题截取最后一个空格
public static String removeAfterLastSpace(String str) { public static String removeAfterLastSpace(String str) {
int lastSpaceIndex = str.lastIndexOf(' '); int lastSpaceIndex = str.lastIndexOf(' ');
@ -643,9 +661,10 @@ public class CustomerFormServiceImpl implements CustomerFormService {
}*/ }*/
/* /*
关联表单组件下拉数据标题选项获取(已经可以解析数据范围条件) 关联表单组件下拉数据标题选项获取(已经可以解析数据范围条件)
*/ */
@Override @Override
public ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitles(String key, String token,String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString,String masterOnField) { public ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitles(String key, String token,String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString,String masterOnField, String fillFieldsMaster, JSONArray fillFieldsChild) {
//关联表单的id //关联表单的id
String AsfFormId = formId; String AsfFormId = formId;
//根据formId(cfid)查询关联表单表名 //根据formId(cfid)查询关联表单表名
@ -678,6 +697,14 @@ public class CustomerFormServiceImpl implements CustomerFormService {
dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);
//System.out.println(dataTitleMapList); //System.out.println(dataTitleMapList);
}else{ }else{
/*数据填充start*/
/*数据填充end*/
HashMap<String,String> leftOperatorsAndRight = splitString(rangeFormula); HashMap<String,String> leftOperatorsAndRight = splitString(rangeFormula);
if(null!=leftOperatorsAndRight){ if(null!=leftOperatorsAndRight){
String left = leftOperatorsAndRight.get("left"); String left = leftOperatorsAndRight.get("left");
@ -1532,10 +1559,58 @@ public class CustomerFormServiceImpl implements CustomerFormService {
return 1; return 1;
} else if (key2.equals("owner")) { } else if (key2.equals("owner")) {
return -1; return -1;
}else if (key1.equals("filedMap")) {
return 1;
} else if (key2.equals("filedMap")) {
return -1;
} }
return 0; return 0;
} }
}; };
//数据填充规则数据字段准备 start
ArrayList<String> 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<String, String> masterFillRoleFieldMap = convert(masterFillRoleField);
System.out.println(1);
masterFillRoleFields.add(masterFillRoleFieldMap.get("left").split(":")[2]);
}
ArrayList<String> masterIds = new ArrayList<>();
for(TreeMap<String,Object> toSortTreeMap : dataTitleMapList){
masterIds.add(toSortTreeMap.get("value").toString());
}
//asfFormName 关联表单的表名
//关联表单子表名数组
if(masterIds.size()>0){
List<HashMap<String, Object>> asfDetailList = fieldRecordMapper.getAsfDetail(asfFormName, masterFillRoleFields, masterIds);
System.out.println(asfDetailList);
for(TreeMap<String,Object> toSortTreeMap : dataTitleMapList){
for(HashMap<String, Object> 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<TreeMap<String, Object>> sortedDataTitleMapList = new ArrayList<>(); ArrayList<TreeMap<String, Object>> sortedDataTitleMapList = new ArrayList<>();
for(TreeMap<String,Object> toSortTreeMap : dataTitleMapList){ for(TreeMap<String,Object> toSortTreeMap : dataTitleMapList){
// 对 TreeMap 进行排序 // 对 TreeMap 进行排序
@ -1566,7 +1641,18 @@ public class CustomerFormServiceImpl implements CustomerFormService {
return toReturnSortedDataTitleList; return toReturnSortedDataTitleList;
} }
public static Map<String, String> convert(String str) {
String[] parts = str.split("_");
if (parts.length == 3) {
Map<String, String> 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) { public static boolean isNumeric(String str) {
try { try {

16
src/main/resources/mapper/FieldRecordMapper.xml

@ -107,4 +107,20 @@
</select> </select>
<select id="getAsfDetail" resultType="java.util.HashMap" statementType="STATEMENT">
select id as value,
<foreach collection="fields" index="index" item="item" separator="," >
${item}
</foreach>
from ${asfFormName} where states = 1 and id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
${id}
</foreach>
</select>
</mapper> </mapper>
Loading…
Cancel
Save