Browse Source

关联表单子表数据填充

master
liwenxuan 1 year ago
parent
commit
e9331610f5
  1. 6
      src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java
  2. 4
      src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java
  3. 1
      src/main/java/com/hxgk/lowcode/model/entity/AsfTableFillResult.java
  4. 2
      src/main/java/com/hxgk/lowcode/service/CustomerFormService.java
  5. 140
      src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java
  6. 17
      src/main/resources/mapper/FieldRecordMapper.xml

6
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<AsfTableFillResult> results = customerFormService.getAsfTableFill(key,token,asfFormName,glbbddbd,currentVal,fillFieldsChildJsonObject);
ArrayList<AsfTableFillResult> results = customerFormService.getAsfTableFill(key,token,asfFormId,glbbddbd,currentVal,fillFieldsChildJsonObject);
return JsonData.buildSuccess("1");
return JsonData.buildSuccess(results);
}

4
src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java

@ -33,4 +33,8 @@ public interface FieldRecordMapper {
);
List<HashMap<String, Object>> getAsfDetail(@Param("asfFormName") String asfFormName, @Param("fields") List<String> toSelectDataTitles,@Param("ids") List<String> ids);
ArrayList<HashMap<String, Object>> queryAsfLeftMapList(@Param("leftTableName") String leftTableName, @Param("toSelectTableFeilds") ArrayList<String> toSelectTableFeilds, @Param("currentMastersKey")String currentMastersKey);
String queryCurrentMastersKey(@Param("id") String currentVal,@Param("leftTableName") String leftTableName);
}

1
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<HashMap<String,Object>> tableDetail;

2
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<AsfTableFillResult> getAsfTableFill(String key, String token, String asfFormName, String glbbddbd, String currentVal,JSONArray fillFieldsChildJsonObject);
ArrayList<AsfTableFillResult> getAsfTableFill(String key, String token, String asfFormId, String glbbddbd, String currentVal,JSONArray fillFieldsChildJsonObject);
}

140
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<AsfTableFillResult> getAsfTableFill(String key, String token, String asfFormName, String glbbddbd, String currentVal,JSONArray fillFieldsChild) {
public ArrayList<AsfTableFillResult> getAsfTableFill(String key, String token, String asfFormId, String glbbddbd, String currentVal,JSONArray fillFieldsChild) {
//获取当前用户信息 从redis中根据userkey和usertoken拿到userdetail
Map<String,String> 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<AsfTableFillResult> resultList = new ArrayList<>();
//根据formId(cfid)查询关联表单表名
String asfFormName = customerFormViewMapper.getTableNameByCfid(asfFormId).getTablekey();
HashSet<String> laterIgnoreRightTableNames = new HashSet<>();
for(int i = 0; i<fillFieldsChild.size();i++){
com.alibaba.fastjson2.JSONObject singleAsfChildTableFillRoleObject = (com.alibaba.fastjson2.JSONObject)fillFieldsChild.get(i);
//System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
com.alibaba.fastjson2.JSONObject item = (com.alibaba.fastjson2.JSONObject)fillFieldsChild.get(i);
String asfFormIdAndTableName = item.get("asfChildTableKey").toString();
String tableName = asfFormIdAndTableName.split(":")[2];
System.out.println("item===>"+item);
System.out.println("被关联的关联表单的子表---->"+tableName);
System.out.println("被关联的关联表单---->"+asfFormName);
System.out.println("关联关联表单的表单---->"+glbbddbd);
System.out.println("当前被关联的关联表单当前选中的值---->"+currentVal);
JSONArray childRoles = item.getJSONArray("childRoles");
ArrayList<HashMap<String,String>> singleAsfChildTableFillRoleMapList = new ArrayList<>();
for(int j = 0; j<childRoles.size();j++){
HashMap<String,String> map = new HashMap<String,String>();
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<childRoles.size();j++){
com.alibaba.fastjson2.JSONObject element = (com.alibaba.fastjson2.JSONObject)childRoles.get(j);
String right = element.get("rightValue").toString();
String rightTableName = right.split(":")[2];
laterIgnoreRightTableNames.add(rightTableName);
}
//当前asf子表的条件按照www各子表名分类的list
List<List<Map<String, String>>> singleAsfChildTableFillRoleMapListsGroupedByRightTableName = splitListByRightTableName(singleAsfChildTableFillRoleMapList);
//当前asf子表的条件按照www各子表名分类的查询结果list
HashMap<String,ArrayList<HashMap<String,Object>>> 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<Map<String, String>> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){
ArrayList<String> toSelectTableFeilds = new ArrayList<>();
HashMap<String,String> toSelectTableFeildsMap = new HashMap<>();
for(Map<String,String> 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<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey);
replaceKeys(leftTableDetail,toSelectTableFeildsMap);
leftTableDetailMap.put(rightTableName,leftTableDetail);
}
}
// 遍历
for (Map.Entry<String, ArrayList<HashMap<String, Object>>> entry : leftTableDetailMap.entrySet()) {
//当前子表拼装结果
AsfTableFillResult afr = new AsfTableFillResult();
String keyx = entry.getKey();
ArrayList<HashMap<String, Object>> 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;
}
}
}
public static List<List<Map<String, String>>> splitListByRightTableName(ArrayList<HashMap<String, String>> singleAsfChildTableFillRoleMapList) {
Map<String, List<Map<String, String>>> groupedMaps = new HashMap<>();
for (HashMap<String, String> 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<HashMap<String, Object>> list, HashMap<String, String> map) {
for (HashMap<String, Object> 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);
}
}
}
}
}

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

@ -123,4 +123,21 @@
</select>
<select id="queryAsfLeftMapList" resultType="java.util.HashMap" statementType="STATEMENT">
select id as value,
<foreach collection="toSelectTableFeilds" index="index" item="item" separator="," >
${item}
</foreach>
from ${leftTableName} where states !=3 and masters_key = ${currentMastersKey}
</select>
<select id="queryCurrentMastersKey" resultType="String" statementType="STATEMENT">
select masters_key from ${leftTableName} where id = ${id}
</select>
</mapper>
Loading…
Cancel
Save