Browse Source

关联表单子表数据填充-----完成

master
liwenxuan 1 year ago
parent
commit
114051ac1a
  1. 3
      src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java
  2. 147
      src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java
  3. 18
      src/main/resources/mapper/FieldRecordMapper.xml

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

@ -37,4 +37,7 @@ public interface FieldRecordMapper {
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);
ArrayList<HashMap<String, Object>> queryAsfLeftMapListWithWhereCondition(@Param("leftTableName") String leftTableName, @Param("toSelectTableFeilds") ArrayList<String> toSelectTableFeilds, @Param("currentMastersKey")String currentMastersKey,
@Param("whereLeft") String whereLeft,@Param("whereOperator") String whereOperator,@Param("whereRight") String whereRight);
}

147
src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java

@ -2540,12 +2540,68 @@ public class CustomerFormServiceImpl implements CustomerFormService {
}else{//其它数字或文字条件 如:文学家包含李 以like模糊查询来筛选
String[] leftSplit = conditionLeft.split(":");
if(leftSplit[0].equals("formField")&&leftSplit.length==4){
String whereLeft = "`"+leftSplit[3]+"`";
String whereOperator = "like";
String whereRight = "'%"+conditionRight+"%'";
/*if(){
}*/
logger.error("数据范围条件查询出现无法处理的情况---返回原数据列表---" + conditionOperator);
//标准无筛选条件查询拼装代码块 --------------------------------------------------------------------- start
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);
//修改查询代码 start
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapListWithWhereCondition(leftTableName,toSelectTableFeilds,currentMastersKey,whereLeft,whereOperator,whereRight);
//修改查询代码 end
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);
//标准无筛选条件查询拼装代码块 ------------------------------------------------------------------ end
}
}
}else if(conditionOperator.equals("不包含")){
@ -3714,7 +3770,90 @@ public class CustomerFormServiceImpl implements CustomerFormService {
}
}else{
//自定义数字或文字条件值
//自定义数字或文字条件值 子表某字段 > 1
String[] leftSplit = conditionLeft.split(":");
if(leftSplit[0].equals("formField")&&leftSplit.length==4){
String whereLeft = "`"+leftSplit[3]+"`";
String whereOperator = conditionOperator;
String whereRight = conditionRight;
if(whereRight.equals("==")){
whereRight = "=";
}
boolean illegalFlag = false;
if(isNumeric(whereRight)){//数字条件
}else{//非数字条件
if(whereOperator.contains(">")||whereOperator.contains("<")){
illegalFlag = true;
}else{
}
}
//标准无筛选条件查询拼装代码块 --------------------------------------------------------------------- start
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;
//修改查询代码 start
if (illegalFlag){//大于小于号的情况下输入了非数字条件 认为条件无效,数据全部返回?
leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey);
}else{
leftTableDetail = fieldRecordMapper.queryAsfLeftMapListWithWhereCondition(leftTableName,toSelectTableFeilds,currentMastersKey,whereLeft,whereOperator,whereRight);
}
//修改查询代码 end
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);
//标准无筛选条件查询拼装代码块 ------------------------------------------------------------------ end
}
}
}

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

@ -140,4 +140,22 @@
select masters_key from ${leftTableName} where id = ${id}
</select>
<select id="queryAsfLeftMapListWithWhereCondition" 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}
<if test="whereLeft!= null and whereLeft!= '' and whereOperator != null and whereOperator != '' and whereRight != null and whereRight != ''">
AND ${whereLeft} ${whereOperator} ${whereRight}
</if>
</select>
</mapper>
Loading…
Cancel
Save