diff --git a/src/weaver/interfaces/dito/job/WorkflowSyncCornJob.java b/src/weaver/interfaces/dito/job/WorkflowSyncCornJob.java index 071021c0..11d6a990 100644 --- a/src/weaver/interfaces/dito/job/WorkflowSyncCornJob.java +++ b/src/weaver/interfaces/dito/job/WorkflowSyncCornJob.java @@ -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 workflowSet = new HashSet<>(); HashMap workflowInfo = new HashMap<>(); + HashMap 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 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 updateOrAddSet, HashSet modeWorkflowSet, HashMap workflowInfo) { + private void syncWorkflow(String actionType, String workflowSyncFormModeId, Set updateOrAddSet, HashSet modeWorkflowSet, HashMap workflowInfo, HashMap 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 insertList = new ArrayList<>(); List updateList = new ArrayList<>(); List 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 workflowMap = new HashMap<>(); workflowMap.put("flowCode", workflowId); diff --git a/src/weaver/interfaces/dito/job/WorkflowUserCronJob.java b/src/weaver/interfaces/dito/job/WorkflowUserCronJob.java index ec45cf33..46dde642 100644 --- a/src/weaver/interfaces/dito/job/WorkflowUserCronJob.java +++ b/src/weaver/interfaces/dito/job/WorkflowUserCronJob.java @@ -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 userIdList = new HashSet<>(Arrays.asList(userIds.split(","))); @@ -98,6 +102,20 @@ public class WorkflowUserCronJob extends BaseCronJob { } modeWorkflowMap.put(workflowId, userIdList); } + //先比对目录是否有变更,有变更则需修改 + HashSet 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); + } + } + } /* 建模表流程Set与E9有效流程Set取集 @@ -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>> 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 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>> 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 addSet, Map> baseWorkflowMap, Map baseWorkflowName, String formModeId) { + private void addWorkflow(BaseBean bb, Set addSet, Map> baseWorkflowMap, Map baseWorkflowName, Map 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 lists = new ArrayList<>(); Set 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);