diff --git a/mdp-form/src/main/java/com/mdp/form/service/FormDataService.java b/mdp-form/src/main/java/com/mdp/form/service/FormDataService.java index 719400a..bdfbffc 100644 --- a/mdp-form/src/main/java/com/mdp/form/service/FormDataService.java +++ b/mdp-form/src/main/java/com/mdp/form/service/FormDataService.java @@ -292,23 +292,30 @@ public class FormDataService extends BaseService { if(FormUtil.TASK_COMPLETED_FORM_DATA_UPDATE.equals(eventName) || FormUtil.TASK_COMPLETED.equals(eventName)) { Map formDatasMap=( Map) 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 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 { private int updateSomeFieldsByProcInstId(Map needUpdateFormDataMap) { UpdateWrapper 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; }