55import com .codingapi .flow .exception .FlowValidationException ;
66import com .codingapi .flow .form .DataType ;
77import com .codingapi .flow .form .FlowForm ;
8+ import com .codingapi .flow .form .FormField ;
89import com .codingapi .flow .form .permission .FormFieldPermission ;
910import com .codingapi .flow .form .permission .PermissionType ;
1011import com .codingapi .flow .session .FlowSession ;
@@ -62,6 +63,7 @@ public void verifySession(FlowSession session) {
6263 Map <String , Object > latestData = session .getFormData ().toMapData ();
6364 if (fieldPermissions !=null ) {
6465 for (FormFieldPermission permission : fieldPermissions ) {
66+ FormField formField = flowForm .getField (permission .getFormCode (),permission .getFieldCode ());
6567 // 子表
6668 if (flowForm .isSubForm (permission .getFormCode ())) {
6769 if (permission .getType () == PermissionType .READ ) {
@@ -87,10 +89,10 @@ public void verifySession(FlowSession session) {
8789 }
8890 } else {
8991 // 在只读权限下不允许修改数据
90- if (permission .getType () == PermissionType .READ ) {
92+ if (formField . isRequired () && permission .getType () == PermissionType .READ ) {
9193 Object currentValue = currentData .get (permission .getFieldCode ());
9294 Object latestValue = latestData .get (permission .getFieldCode ());
93- if (!currentValue .equals (latestValue )) {
95+ if (latestValue != null && currentValue != null && !currentValue .equals (latestValue )) {
9496 throw FlowValidationException .fieldReadOnly (permission .getFieldCode ());
9597 }
9698 }
0 commit comments