package jnpf.onlinedev.util; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.Method; import jnpf.base.UserInfo; import jnpf.base.model.VisualLogModel; import jnpf.base.model.flow.DataModel; import jnpf.config.ConfigValueUtil; import jnpf.flowable.TriggerApi; import jnpf.flowable.model.trigger.TriggerDataFo; import jnpf.message.model.TriggerDataModel; import jnpf.message.model.TriggerModel; import jnpf.onlinedev.model.AsyncExecuteModel; import jnpf.util.Constants; import jnpf.util.JsonUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.Map; @Component public class IntegrateUtil { @Autowired private ConfigValueUtil configValueUtil; @Autowired private TriggerApi triggerApi; public List asyncDelExecute(AsyncExecuteModel executeModel) { String modelId = executeModel.getModelId(); Integer trigger = executeModel.getTrigger(); List dataId = executeModel.getDataId(); DataModel dataModel = executeModel.getDataModel(); List> dataMap = executeModel.getDataMap(); TriggerDataFo fo = new TriggerDataFo(); fo.setModelId(modelId); fo.setTrigger(trigger); fo.setDataId(dataId); fo.setDataMap(dataMap); if (dataModel != null) { List listLog = dataModel.getListLog(); if (CollectionUtil.isNotEmpty(listLog)) { List updateFields = this.getUpdateFields(listLog); fo.setUpdateFields(updateFields); } } List resultData = triggerApi.getTriggerDataModel(fo); return resultData; } @Async public void asyncExecute(AsyncExecuteModel executeModel) { String modelId = executeModel.getModelId(); Integer trigger = executeModel.getTrigger(); List dataId = executeModel.getDataId(); UserInfo userInfo = executeModel.getUserInfo(); DataModel dataModel = executeModel.getDataModel(); List> dataMap = executeModel.getDataMap(); TriggerDataFo fo = new TriggerDataFo(); fo.setModelId(modelId); fo.setTrigger(trigger); fo.setDataId(dataId); fo.setDataMap(dataMap); if (dataModel != null) { List listLog = dataModel.getListLog(); if (CollectionUtil.isNotEmpty(listLog)) { List updateFields = this.getUpdateFields(listLog); fo.setUpdateFields(updateFields); } } List resultData = triggerApi.getTriggerDataModel(fo); if (!resultData.isEmpty()) { String url = configValueUtil.getApiDomain() + "/api/workflow/trigger/Execute"; TriggerModel model = new TriggerModel(); model.setUserInfo(userInfo); model.setDataList(resultData); HttpRequest request = HttpRequest.of(url).method(Method.POST).body(JsonUtil.getObjectToString(model)); request.header(Constants.AUTHORIZATION, userInfo.getToken()); request.execute().body(); } } private List getUpdateFields(List listLog) { List updateFields = new ArrayList<>(); if (CollectionUtil.isNotEmpty(listLog)) { for (VisualLogModel logModel : listLog) { String field = logModel.getField(); List> chidField = logModel.getChidField(); List> chidData = logModel.getChidData(); if (CollectionUtil.isNotEmpty(chidField) && CollectionUtil.isNotEmpty(chidData)) { // 子表 for (Map map : chidField) { String key = (String) map.get("prop"); for (Map child : chidData) { if (!ObjectUtil.equals(child.get(key), child.get("jnpf_old_" + key))) { updateFields.add(field + "-" + key); break; } } } } else { updateFields.add(field); } } } return updateFields; } }