@@ -46,7 +46,7 @@ public FormFieldPermissionStrategy(List<FormFieldPermission> fieldPermissions) {
4646 @ Override
4747 public void verifyNode (FlowForm form ) {
4848 Map <String , DataType > fieldTypes = form .loadAllFieldDataTypeMaps ();
49- if (fieldPermissions != null ) {
49+ if (fieldPermissions != null ) {
5050 for (FormFieldPermission permission : fieldPermissions ) {
5151 String key = permission .getFormCode () + "." + permission .getFieldCode ();
5252 if (!fieldTypes .containsKey (key )) {
@@ -61,9 +61,9 @@ public void verifySession(FlowSession session) {
6161 FlowForm flowForm = session .getFormData ().getFlowForm ();
6262 Map <String , Object > currentData = session .getCurrentRecord ().getFormData ();
6363 Map <String , Object > latestData = session .getFormData ().toMapData ();
64- if (fieldPermissions != null ) {
64+ if (fieldPermissions != null ) {
6565 for (FormFieldPermission permission : fieldPermissions ) {
66- FormField formField = flowForm .getField (permission .getFormCode (),permission .getFieldCode ());
66+ FormField formField = flowForm .getField (permission .getFormCode (), permission .getFieldCode ());
6767 // 子表
6868 if (flowForm .isSubForm (permission .getFormCode ())) {
6969 if (permission .getType () == PermissionType .READ ) {
@@ -92,7 +92,7 @@ public void verifySession(FlowSession session) {
9292 if (formField .isRequired () && permission .getType () == PermissionType .READ ) {
9393 Object currentValue = currentData .get (permission .getFieldCode ());
9494 Object latestValue = latestData .get (permission .getFieldCode ());
95- if (latestValue != null && currentValue != null && !currentValue .equals (latestValue )) {
95+ if (latestValue != null && currentValue != null && !currentValue .equals (latestValue )) {
9696 throw FlowValidationException .fieldReadOnly (permission .getFieldCode ());
9797 }
9898 }
@@ -125,4 +125,56 @@ public static FormFieldPermissionStrategy defaultStrategy() {
125125 }
126126
127127
128+ private FormFieldPermission getFormFieldPermission (String formCode ,String fieldCode ){
129+ if (this .fieldPermissions !=null ) {
130+ for (FormFieldPermission fieldPermission :this .fieldPermissions ){
131+ if (fieldPermission .isField (formCode ,fieldCode )){
132+ return fieldPermission ;
133+ }
134+ }
135+ }
136+ return null ;
137+ }
138+
139+ public void filterPermissions (FlowForm meta ) {
140+ Map <String ,DataType > fieldMap = meta .loadAllFieldDataTypeMaps ();
141+
142+ if (this .fieldPermissions == null || this .getFieldPermissions ().isEmpty ()) {
143+ // init fieldPermissions
144+ this .fieldPermissions = new ArrayList <>();
145+ for (String formField :fieldMap .keySet ()){
146+ String formCode = formField .split ("\\ ." )[0 ];
147+ String fieldCode = formField .split ("\\ ." )[1 ];
148+
149+ FormFieldPermission fieldPermission = new FormFieldPermission ();
150+ fieldPermission .setFormCode (formCode );
151+ fieldPermission .setFieldCode (fieldCode );
152+ fieldPermission .setType (PermissionType .WRITE );
153+
154+ this .fieldPermissions .add (fieldPermission );
155+ }
156+
157+ } else {
158+ // filter fieldPermissions
159+ System .out .println ("filter fieldPermissions meta:" + meta );
160+
161+ List <FormFieldPermission > fieldPermissions = new ArrayList <>();
162+ for (String formField :fieldMap .keySet ()){
163+ String formCode = formField .split ("\\ ." )[0 ];
164+ String fieldCode = formField .split ("\\ ." )[1 ];
165+
166+ FormFieldPermission fieldPermission = this .getFormFieldPermission (formCode ,fieldCode );
167+ if (fieldPermission ==null ) {
168+ fieldPermission = new FormFieldPermission ();
169+ fieldPermission .setFormCode (formCode );
170+ fieldPermission .setFieldCode (fieldCode );
171+ fieldPermission .setType (PermissionType .WRITE );
172+ }
173+ fieldPermissions .add (fieldPermission );
174+ }
175+
176+ this .fieldPermissions = fieldPermissions ;
177+ }
178+
179+ }
128180}
0 commit comments