@ -292,23 +292,30 @@ public class FormDataService extends BaseService<FormDataMapper,FormData> {
if ( FormUtil . TASK_COMPLETED_FORM_DATA_UPDATE . equals ( eventName ) | | FormUtil . TASK_COMPLETED . equals ( eventName ) ) {
Map < String , Object > formDatasMap = ( Map < String , Object > ) flowVars . get ( "formData" ) ;
if ( formDatasMap ! = null ) {
FormDataVo formDataOrigin = BaseUtils . fromMap ( formDatasMap , FormDataVo . class ) ;
String fieldIds = ( String ) flowVars . get ( FormUtil . NEED_UPDATE_FORM_DATA_FIELD_ID_LIST ) ;
FormDefVo formDefVo = this . formFieldService . getFormFieldFromCache ( formId ) ;
boolean needUpdateBizKey = false ;
Map < String , Object > needUpdateFormDataMap = new HashMap < > ( ) ;
if ( ObjectTools . isNotEmpty ( fieldIds ) ) {
for ( String fieldId : fieldIds . split ( "," ) ) {
Object value = formDatasMap . get ( fieldId ) ;
needUpdateFormDataMap . put ( fieldId , value ) ;
if ( formDefVo . getFormFields ( ) . stream ( ) . filter ( k - > k . getFieldIdCamel ( ) . equals ( fieldId ) ) . findAny ( ) . isPresent ( ) ) {
needUpdateBizKey = true ;
}
}
FormDataVo formDataVo = BaseUtils . fromMap ( needUpdateFormDataMap , FormDataVo . class ) ;
FormDefVo formDefVo = this . formFieldService . getFormFieldFromCache ( formId ) ;
String bizKey = this . createBizKey ( formDefVo . getFormFields ( ) , formDataVo ) ;
formDataVo . setBizKey ( bizKey ) ;
needUpdateFormDataMap . put ( "procInstId" , procInstId ) ;
needUpdateFormDataMap . put ( "bizKey" , formDataVo . getBizKey ( ) ) ;
this . updateSomeFieldsByProcInstId ( needUpdateFormDataMap ) ;
} else {
needUpdateFormDataMap . putAll ( formDatasMap ) ;
}
String bizKey = this . createBizKey ( formDefVo . getFormFields ( ) , formDataOrigin ) ;
if ( needUpdateBizKey ) {
needUpdateFormDataMap . put ( "bizKey" , bizKey ) ;
}
needUpdateFormDataMap . put ( "procInstId" , procInstId ) ;
this . updateSomeFieldsByProcInstId ( needUpdateFormDataMap ) ;
}
} else {
@ -353,8 +360,11 @@ public class FormDataService extends BaseService<FormDataMapper,FormData> {
private int updateSomeFieldsByProcInstId ( Map < String , Object > needUpdateFormDataMap ) {
UpdateWrapper < FormData > uw = new UpdateWrapper < > ( ) ;
FormData formData = BaseUtils . fromMap ( needUpdateFormDataMap , FormData . class ) ;
uw . setEntity ( formData ) ;
uw . exists ( " SELECT 1 FROM form_data_process_approva a where a.proc_inst_id = {0} AND a.form_data_id = form_data.id" , needUpdateFormDataMap . get ( "procInstId" ) ) ;
return super . update ( BaseUtils . fromMap ( needUpdateFormDataMap , FormData . class ) , uw ) ? 1 : 0 ;
return super . update ( uw ) ? 1 : 0 ;
}