新增流程推送问题

feature-LeeD-20221025
李栋 2 years ago
parent e17a4f84ff
commit 3820eec44d

@ -1,6 +1,7 @@
package weaver.interfaces.dito.job;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import weaver.conn.RecordSet;
@ -43,29 +44,32 @@ public class WorkflowSyncCornJob extends BaseCronJob {
}
//系统有效流程id
String baseWorkflowSql = "SELECT id,workflowname FROM workflow_base WHERE ISVALID = 1";
String baseWorkflowSql = "SELECT w.id,w.workflowname,u.cataCodeName FROM workflow_base w left join uf_syncCataCode u on w.id=u.flowCode WHERE w.ISVALID = 1";
rs.execute(baseWorkflowSql);
HashSet<String> workflowSet = new HashSet<>();
HashMap<String, String> workflowInfo = new HashMap<>();
HashMap<String, String> baseCataCode = new HashMap<>();
while (rs.next()) {
String workflowId = rs.getString("id");
String workflowName = rs.getString("workflowname");
String cataCodeName = Util.null2String(rs.getString("cataCodeName"));
workflowInfo.put(workflowId, workflowName);
workflowSet.add(workflowId);
baseCataCode.put(workflowId, cataCodeName);
}
//控制删除所有流程
if ("yes".equals(isDeleteAll)) {
syncWorkflow(ACTION_TYPE_DELETE, workflowSyncFormModeId, workflowSet, modeWorkflowSet, workflowInfo);
syncWorkflow(ACTION_TYPE_DELETE, workflowSyncFormModeId, workflowSet, modeWorkflowSet, workflowInfo, baseCataCode);
}
//系统有效流程新增或修改,无法判断流程更改了什么,新增后再更新
syncWorkflow(ACTION_TYPE_ADD, workflowSyncFormModeId, workflowSet, modeWorkflowSet, workflowInfo);
syncWorkflow(ACTION_TYPE_UPDATE, workflowSyncFormModeId, workflowSet, modeWorkflowSet, workflowInfo);
syncWorkflow(ACTION_TYPE_ADD, workflowSyncFormModeId, workflowSet, modeWorkflowSet, workflowInfo,baseCataCode);
syncWorkflow(ACTION_TYPE_UPDATE, workflowSyncFormModeId, workflowSet, modeWorkflowSet, workflowInfo, baseCataCode);
//建模表的差集需要删除
Set<String> deleteSet = new HashSet<>(modeWorkflowSet);
deleteSet.removeAll(workflowSet);
if (deleteSet.size() != 0) {
syncWorkflow(ACTION_TYPE_DELETE, workflowSyncFormModeId, deleteSet, modeWorkflowSet, modeWorkflowInfo);
syncWorkflow(ACTION_TYPE_DELETE, workflowSyncFormModeId, deleteSet, modeWorkflowSet, modeWorkflowInfo, baseCataCode);
}
} catch (Exception e) {
logger.info("WorkflowSyncModeCornJob:" + e.getMessage());
@ -101,24 +105,21 @@ public class WorkflowSyncCornJob extends BaseCronJob {
* @param updateOrAddSet
* @param modeWorkflowSet
* @param workflowInfo
* @param baseCataCode
*/
private void syncWorkflow(String actionType, String workflowSyncFormModeId, Set<String> updateOrAddSet, HashSet<String> modeWorkflowSet, HashMap<String, String> workflowInfo) {
private void syncWorkflow(String actionType, String workflowSyncFormModeId, Set<String> updateOrAddSet, HashSet<String> modeWorkflowSet, HashMap<String, String> workflowInfo, HashMap<String, String> baseCataCode) {
String center = PropBean.getUfPropValue("newWorkflowCenter");
String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl");
String synchronizeFlowUrl = PropBean.getUfPropValue("synchronizeFlowUrl");
String accountName = PropBean.getUfPropValue("username");
String password = PropBean.getUfPropValue("passwd");
RecordSet rs = new RecordSet();
List<List> insertList = new ArrayList<>();
List<List> updateList = new ArrayList<>();
List<String> deleteList = new ArrayList<>();
for (String workflowId : updateOrAddSet) {
//查询要推送到哪个目录下
String cataCodeSql = "select cataCodeName from uf_syncCataCode where flowCode=?";
rs.executeQuery(cataCodeSql, workflowId);
String cataCode = "";
if (rs.next()) {
cataCode = Util.null2String(rs.getString("cataCodeName"));
String cataCode = baseCataCode.get(workflowId);
if (StringUtils.isEmpty(cataCode)) {
continue;
}
Map<String, Object> workflowMap = new HashMap<>();
workflowMap.put("flowCode", workflowId);

@ -6,6 +6,7 @@ import org.apache.commons.logging.LogFactory;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.interfaces.dito.comInfo.PropBean;
import weaver.interfaces.dito.util.HttpUtils;
import weaver.interfaces.schedule.BaseCronJob;
@ -62,7 +63,10 @@ public class WorkflowUserCronJob extends BaseCronJob {
while (rs.next()) {
String workflowId = rs.getString("id");
String workflowname = rs.getString("workflowname");
String cataCodeName = rs.getString("cataCodeName");
String cataCodeName = Util.null2String(rs.getString("cataCodeName"));
if (StringUtils.isEmpty(cataCodeName)) {
continue;
}
baseWorkflowIdSet.add(workflowId);
String userIds = shareManager.getWorkflowCreater(Integer.parseInt(workflowId));
Set<String> userIdList = new HashSet<>(Arrays.asList(userIds.split(",")));
@ -98,6 +102,20 @@ public class WorkflowUserCronJob extends BaseCronJob {
}
modeWorkflowMap.put(workflowId, userIdList);
}
//先比对目录是否有变更,有变更则需修改
HashSet<String> needUpdateWorkflowSet = new HashSet<>();
for (String baseWorkflowId : baseWorkflowCataCode.keySet()) {
String baseCataCode = baseWorkflowCataCode.get(baseWorkflowId);
for (String modeWorkflowId : modeWorkflowCataCode.keySet()) {
String modeCataCode = modeWorkflowCataCode.get(modeWorkflowId);
if (baseWorkflowId.equals(modeWorkflowId) && !baseCataCode.equals(modeCataCode)) {
needUpdateWorkflowSet.add(baseWorkflowId);
//更新目录
String updateCataCode = "update uf_workflow_auth set catacode=? where workflowselect=?";
rs.executeUpdate(updateCataCode, baseWorkflowCataCode.get(baseWorkflowId), baseWorkflowId);
}
}
}
/*
SetE9Set
@ -113,7 +131,7 @@ public class WorkflowUserCronJob extends BaseCronJob {
addSet.removeAll(updateSet);
//人员权限新增同步
if (addSet.size() != 0) {
addWorkflow(bb, addSet, baseWorkflowMap, baseWorkflowName, formModeId);
addWorkflow(bb, addSet, baseWorkflowMap, baseWorkflowName, baseWorkflowCataCode, formModeId);
List<List<Map<String, Object>>> addUserList = new LinkedList<>();
getUserConditionByWorkflow(center, addSet, baseWorkflowName, baseWorkflowCataCode, addUserList);
syncUser(synchronizeUserUrl, addUserList, headers);
@ -122,6 +140,7 @@ public class WorkflowUserCronJob extends BaseCronJob {
//人员权限修改同步
if (updateSet.size() != 0) {
HashSet<String> needUpdateSet = updateWorkflow(bb, updateSet, baseWorkflowMap, modeWorkflowMap, baseWorkflowName, formModeId);
needUpdateSet.addAll(needUpdateWorkflowSet);
logger.info("needUpdateSet-size:" + needUpdateSet.size());
//先删除流程再重新同步人员权限
if (needUpdateSet.size() != 0) {
@ -130,7 +149,7 @@ public class WorkflowUserCronJob extends BaseCronJob {
List<List<Map<String, Object>>> updateUserList = new LinkedList<>();
getUserConditionByWorkflow(center, needUpdateSet, baseWorkflowName, baseWorkflowCataCode, updateUserList);
//重新同步流程及人员权限
syncWorkflowByHttp(ACTION_TYPE_ADD_USER, center, needUpdateSet, modeWorkflowName, modeWorkflowCataCode, headers);
syncWorkflowByHttp(ACTION_TYPE_ADD_USER, center, needUpdateSet, modeWorkflowName, baseWorkflowCataCode, headers);
syncUser(synchronizeUserUrl, updateUserList, headers);
}
}
@ -179,18 +198,20 @@ public class WorkflowUserCronJob extends BaseCronJob {
* @param addSet
* @param baseWorkflowMap
* @param baseWorkflowName
* @param baseWorkflowCataCode
* @param formModeId
*/
private void addWorkflow(BaseBean bb, Set<String> addSet, Map<String, Set<String>> baseWorkflowMap, Map<String, String> baseWorkflowName, String formModeId) {
private void addWorkflow(BaseBean bb, Set<String> addSet, Map<String, Set<String>> baseWorkflowMap, Map<String, String> baseWorkflowName, Map<String, String> baseWorkflowCataCode, String formModeId) {
String staffIdField = PropBean.getUfPropValue("staffIdFieldByCus");
RecordSet rs = new RecordSet();
RecordSet rs2 = new RecordSet();
String currentDate = TimeUtil.getCurrentDateString();
String onlyCurrentTime = TimeUtil.getOnlyCurrentTimeString();
String addSql = "INSERT INTO uf_workflow_auth (userselect,effective,formmodeid,modedatacreatedate,modedatacreatetime,workflowselect,workflowname,staffid) values (?,?,?,?,?,?,?,?)";
String addSql = "INSERT INTO uf_workflow_auth (userselect,effective,formmodeid,modedatacreatedate,modedatacreatetime,workflowselect,workflowname,staffid,catacode) values (?,?,?,?,?,?,?,?,?)";
for (String workflowId : addSet) {
List<List> lists = new ArrayList<>();
Set<String> userIds = baseWorkflowMap.get(workflowId);
String cataCode = baseWorkflowCataCode.get(workflowId);
for (String addUserId : userIds) {
String workflowName = baseWorkflowName.get(workflowId);
String workCodeQuery = "SELECT " + staffIdField + " as staffId FROM cus_fielddata WHERE id=? and SCOPEID=-1";
@ -208,6 +229,7 @@ public class WorkflowUserCronJob extends BaseCronJob {
list.add(workflowId);
list.add(workflowName);
list.add(staffId);
list.add(cataCode);
lists.add(list);
}
rs.executeBatchSql(addSql, lists);

Loading…
Cancel
Save