Browse Source

1.关联表单组件数据范围条件解析

2.条件解析防sql注入
lwx_v1
liwenxuan 1 year ago
parent
commit
5925cc31b5
  1. 4
      src/main/java/com/hxgk/lowcode/controller/AssociatedFormsController.java
  2. 12
      src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java
  3. 15
      src/main/java/com/hxgk/lowcode/model/entity/UserDetail.java
  4. 2
      src/main/java/com/hxgk/lowcode/service/CustomerFormService.java
  5. 1058
      src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java
  6. 60
      src/main/resources/mapper/FieldRecordMapper.xml

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

@ -123,8 +123,8 @@ public class AssociatedFormsController {
String rangeString = requestBody.get("rangeString");
String hideFormula = requestBody.get("hideFormula");
String hideString = requestBody.get("hideString");
ArrayList<CustomerFormTableSingleFieldValue> dataTitles = customerFormService.getAsfDataTitles(key,token,formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString);
String masterOnField = requestBody.get("masterOnField");
ArrayList<CustomerFormTableSingleFieldValue> dataTitles = customerFormService.getAsfDataTitles(key,token,formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString,masterOnField);
return JsonData.buildSuccess(dataTitles);

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

@ -22,4 +22,16 @@ public interface FieldRecordMapper {
// 检查表中是否包含指定字段
boolean checkFieldExists(@Param("tableName")String tableName, @Param("fieldName")String fieldName);
List<TreeMap<String, Object>> getDataTitlesWithWhere_Asf_NotTable(@Param("asfFormName") String asfFormName, @Param("fields") List<String> toSelectDataTitles,@Param("operator") String operator,@Param("whereCondition") String whereCondition,@Param("leftField") String leftField);
List<TreeMap<String, Object>> getDataTitlesWithWhere_Master_NotTable(
@Param("asfFormName") String asfFormName,@Param("fields") List<String> toSelectDataTitles, @Param("masterFormName") String masterFormName, @Param("masterOnField") String masterOnField,
@Param("whereConditionField") String whereConditionField, @Param("operator") String operator, @Param("whereConditionValue") String whereConditionValue
);
List<TreeMap<String, Object>> getDataTitlesWithWhere_Master_IsTable(
@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
);
}

15
src/main/java/com/hxgk/lowcode/model/entity/UserDetail.java

@ -86,4 +86,19 @@ public class UserDetail {
public void setMaindeparment(Long maindeparment) {
this.maindeparment = maindeparment;
}
@Override
public String toString() {
return "UserDetail{" +
"idcardno='" + idcardno + '\'' +
", name='" + name + '\'' +
", icon='" + icon + '\'' +
", wmNumber='" + wmNumber + '\'' +
", wmKey=" + wmKey +
", adminorg=" + adminorg +
", roleId=" + roleId +
", maindeparment=" + maindeparment +
'}';
}
}

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

@ -16,7 +16,7 @@ public interface CustomerFormService {
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);
ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitles(String key, String token,String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString,String masterOnField);
ArrayList<CustomerFormTableSingleFieldValue> getAsfDataTitlesByIds(String AsfFormId,ArrayList<HashMap<String,String>> ids);
Boolean queryIfOrgOrPersonContainsCurrentUser(String key, String token, String targetOrgOrPerson, String condition, String currentUser);

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

File diff suppressed because it is too large

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

@ -47,4 +47,64 @@
END AS existsFlag
</select>
<select id="getDataTitlesWithWhere_Asf_NotTable" resultType="java.util.TreeMap" statementType="STATEMENT">
select id as value,
<foreach collection="fields" index="index" item="item" separator="," >
${item}
</foreach>
from ${asfFormName} where states = 1
<if test="operator!= null and operator!= '' and whereCondition != null and whereCondition != '' and leftField != null and leftField != ''">
AND ${leftField} ${operator} ${whereCondition}
</if>
</select>
<select id="getDataTitlesWithWhere_Master_NotTable" resultType="java.util.TreeMap" statementType="STATEMENT">
SELECT
DISTINCT asf.id AS value,
<foreach collection="fields" index="index" item="item" separator="," >
${item}
</foreach>
from
${asfFormName} asf
left join
${masterFormName} master on
asf.id = master.${masterOnField}
where asf.states = 1 and master.states = 1
<if test="whereConditionField!= null and whereConditionField!= '' and operator != null and operator != '' and whereConditionValue != null and whereConditionValue != ''">
AND ${whereConditionField} ${operator} ${whereConditionValue}
</if>
</select>
<select id="getDataTitlesWithWhere_Master_IsTable" resultType="java.util.TreeMap" statementType="STATEMENT">
SELECT
DISTINCT parent.id AS value,
<foreach collection="fields" index="index" item="item" separator="," >
${item}
</foreach>
from
${parent} parent
left join
${child} child on
parent.masters_key = child.masters_key
where parent.states = 1 and child.states = 1
<if test="whereConditionField!= null and whereConditionField!= '' and operator != null and operator != '' and whereConditionValue != null and whereConditionValue != ''">
AND child.${whereConditionField} ${operator} ${whereConditionValue}
</if>
</select>
</mapper>
Loading…
Cancel
Save