diff --git a/src/weaver/interfaces/job/WorkflowSyncCronJob.java b/src/weaver/interfaces/job/WorkflowSyncCronJob.java index fb8bbc5c..e64f7652 100644 --- a/src/weaver/interfaces/job/WorkflowSyncCronJob.java +++ b/src/weaver/interfaces/job/WorkflowSyncCronJob.java @@ -3,6 +3,7 @@ package weaver.interfaces.job; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import weaver.conn.RecordSet; +import weaver.conn.util.IdGenerator; import weaver.general.BaseBean; import weaver.general.TimeUtil; import weaver.interfaces.schedule.BaseCronJob; @@ -37,6 +38,7 @@ public class WorkflowSyncCronJob extends BaseCronJob { String synchronizeUserUrl = bb.getPropValue("PORTAL_INFO", "synchronizeUserUrl"); //新建流程推送到目录code String catalogueCode = bb.getPropValue("PORTAL_INFO", "catalogueCode"); + String center = bb.getPropValue("PORTAL_INFO", "center"); String workflowAuthTable = bb.getPropValue("PORTAL_INFO", "workflowAuthTable"); String timeNodeTable = bb.getPropValue("PORTAL_INFO", "timeNodeTable"); String accountName = bb.getPropValue("PORTAL_INFO", "username"); @@ -45,13 +47,13 @@ public class WorkflowSyncCronJob extends BaseCronJob { //全量同步使用全量同步方法 if (SYNC_ALL.equals(syncType)) { String currentTime = TimeUtil.getCurrentTimeString(); - allSynchronizeWorkflow(bb, synchronizeFlowUrl, synchronizeUserUrl, catalogueCode, workflowAuthTable, accountName, password); + allSynchronizeWorkflow(bb, synchronizeFlowUrl, synchronizeUserUrl, center, catalogueCode, workflowAuthTable, accountName, password); writeTimeNode(timeNodeTable, currentTime, SYNC_ALL, TIME_NODE_USE_WORKFLOW_SYNC, timeNodeFormModeId); } //增量同步使用增量同步方法 if (SYNC_INCREMENT.equals(syncType)) { String currentTime = TimeUtil.getCurrentTimeString(); - IncrementSynchronizeWorkflow(bb, synchronizeFlowUrl, synchronizeUserUrl, catalogueCode, workflowAuthTable, timeNodeTable, accountName, password); + IncrementSynchronizeWorkflow(bb, synchronizeFlowUrl, synchronizeUserUrl, center, catalogueCode, workflowAuthTable, timeNodeTable, accountName, password); writeTimeNode(timeNodeTable, currentTime, SYNC_INCREMENT, TIME_NODE_USE_WORKFLOW_SYNC, timeNodeFormModeId); } } catch (Exception e) { @@ -61,7 +63,7 @@ public class WorkflowSyncCronJob extends BaseCronJob { // 增量同步 - private void IncrementSynchronizeWorkflow(BaseBean bb, String synchronizeFlowUrl, String synchronizeUserUrl, String cataCode, String workflowAuthTable, String timeNodeTable, String accountName, String password) { + private void IncrementSynchronizeWorkflow(BaseBean bb, String synchronizeFlowUrl, String synchronizeUserUrl, String center, String cataCode, String workflowAuthTable, String timeNodeTable, String accountName, String password) { RecordSet recordSet = new RecordSet(); //查询时间节点表,上次流程推送增量同步的时间 String timeSql = "select timenode from " + timeNodeTable + " where type=? and useto=? order by timenode desc"; @@ -70,25 +72,25 @@ public class WorkflowSyncCronJob extends BaseCronJob { if (recordSet.next()) { preTime = recordSet.getString("timenode"); } - syncWorkflowByCondition(bb, synchronizeFlowUrl, synchronizeUserUrl, cataCode, workflowAuthTable, accountName, password, preTime); + syncWorkflowByCondition(bb, synchronizeFlowUrl, synchronizeUserUrl, center, cataCode, workflowAuthTable, accountName, password, preTime); } // 全量同步 - private void allSynchronizeWorkflow(BaseBean bb, String synchronizeFlowUrl, String synchronizeUserUrl, String cataCode, String workflowAuthTable, String accountName, String password) { - syncWorkflowByCondition(bb, synchronizeFlowUrl, synchronizeUserUrl, cataCode, workflowAuthTable, accountName, password, null); + private void allSynchronizeWorkflow(BaseBean bb, String synchronizeFlowUrl, String synchronizeUserUrl, String center, String cataCode, String workflowAuthTable, String accountName, String password) { + syncWorkflowByCondition(bb, synchronizeFlowUrl, synchronizeUserUrl, center, cataCode, workflowAuthTable, accountName, password, null); } /** * 根据不同条件请求同步方法 */ - private void syncWorkflowByCondition(BaseBean bb, String synchronizeFlowUrl, String synchronizeUserUrl, String cataCode, String workflowAuthTable, String accountName, String password, String timeCondition) { + private void syncWorkflowByCondition(BaseBean bb, String synchronizeFlowUrl, String synchronizeUserUrl, String center, String cataCode, String workflowAuthTable, String accountName, String password, String timeCondition) { RecordSet recordSet = new RecordSet(); ArrayList> addWorkflowList = new ArrayList<>(); ArrayList> delWorkflowList = new ArrayList<>(); ArrayList> addUserList = new ArrayList<>(); ArrayList> delUserList = new ArrayList<>(); //查询建模所有流程 - String workflowSql = "SELECT DISTINCT workflowselect as flowcode,workflowname as flowname,effective FROM " + workflowAuthTable + + String workflowSql = "SELECT DISTINCT workflowselect as flowCode,workflowname as flowName,effective FROM " + workflowAuthTable + " WHERE effective IN (SELECT DISTINCT effective FROM " + workflowAuthTable + ")"; if (StringUtils.isNotEmpty(timeCondition)) { workflowSql += " AND modedatamodifydatetime >=" + timeCondition; @@ -97,25 +99,25 @@ public class WorkflowSyncCronJob extends BaseCronJob { //区分有效和无效的流程 while (recordSet.next()) { String effective = recordSet.getString("effective"); - String flowcode = recordSet.getString("flowcode"); - String flowname = recordSet.getString("flowname"); + String flowCode = recordSet.getString("flowCode"); + String flowName = recordSet.getString("flowName"); if (EFFECTIVE_YES.equals(effective)) { //拼接有效流程请求参数 - concatWorkflowCondition(cataCode, flowcode, flowname, ACTION_TYPE_ADD, addWorkflowList); + concatWorkflowCondition(center, cataCode, flowCode, flowName, ACTION_TYPE_ADD, addWorkflowList); //有效流程关联的人员参数拼接 - getUserConditionByWorkflow(cataCode, flowcode, flowname, ACTION_TYPE_ADD, addUserList, timeCondition); + getUserConditionByWorkflow(center, cataCode, flowCode, flowName, ACTION_TYPE_ADD, addUserList, timeCondition); } else if (EFFECTIVE_NO.equals(effective)) { //拼接无效流程请求参数 - concatWorkflowCondition(cataCode, flowcode, flowname, ACTION_TYPE_DELETE, delWorkflowList); + concatWorkflowCondition(center, cataCode, flowCode, flowName, ACTION_TYPE_DELETE, delWorkflowList); //无效流程关联的人员参数拼接 - getUserConditionByWorkflow(cataCode, flowcode, flowname, ACTION_TYPE_DELETE, delUserList, timeCondition); + getUserConditionByWorkflow(center, cataCode, flowCode, flowName, ACTION_TYPE_DELETE, delUserList, timeCondition); } } HashMap headers = new HashMap<>(); headers.put("Authorization", "Basic " + Base64.getUrlEncoder().encodeToString((accountName + ":" + password).getBytes())); //调用流程同步方法 if (CollectionUtils.isNotEmpty(addWorkflowList)) { - for (Map workflowMap : addUserList) { + for (Map workflowMap : addWorkflowList) { String data = HttpUtils.doPost(synchronizeFlowUrl, workflowMap, headers); bb.writeLog("增加流程", data); } @@ -145,19 +147,20 @@ public class WorkflowSyncCronJob extends BaseCronJob { * 组装流程同步API请求参数 * * @param cataCode - * @param flowcode - * @param flowname + * @param flowCode + * @param flowName * @param actionType * @param workflowList */ - private void concatWorkflowCondition(String cataCode, String flowcode, String flowname, String actionType, ArrayList> workflowList) { + private void concatWorkflowCondition(String center, String cataCode, String flowCode, String flowName, String actionType, ArrayList> workflowList) { Map workflowMap = new HashMap<>(); - workflowMap.put("flowcode", flowcode); - workflowMap.put("flowname", flowname); + workflowMap.put("flowCode", flowCode); + workflowMap.put("flowName", flowName); workflowMap.put("actionType", actionType); workflowMap.put("cataCode", cataCode); - workflowMap.put("urPC", "/bpm/workflow/request/CreateRequestForward.jsp?workflowid=" + flowcode); - workflowMap.put("urApp", "/bpm/spa/workflow/static4mobileform/index.html#/req?iscreate=1&workflowid=" + flowcode); + workflowMap.put("center", center); + workflowMap.put("urPC", "/bpm/workflow/request/CreateRequestForward.jsp?workflowid=" + flowCode); + workflowMap.put("urApp", "/bpm/spa/workflow/static4mobileform/index.html#/req?iscreate=1&workflowid=" + flowCode); workflowList.add(workflowMap); } @@ -165,13 +168,13 @@ public class WorkflowSyncCronJob extends BaseCronJob { * 组装人员同步API请求参数 * * @param cataCode - * @param flowcode - * @param flowname + * @param flowCode + * @param flowName * @param actionType * @param userList * @param timeCondition */ - private void getUserConditionByWorkflow(String cataCode, String flowcode, String flowname, String actionType, ArrayList> userList, String timeCondition) { + private void getUserConditionByWorkflow(String center, String cataCode, String flowCode, String flowName, String actionType, ArrayList> userList, String timeCondition) { Map usermap = new HashMap<>(); StringBuilder staffCodeBuilder = new StringBuilder(); String userSql = "SELECT workcode as staffCode FROM uf_workflow_aut WHERE workflowselect=?"; @@ -179,14 +182,15 @@ public class WorkflowSyncCronJob extends BaseCronJob { userSql += " AND modedatamodifydatetime >=" + timeCondition; } RecordSet rs = new RecordSet(); - rs.executeQuery(userSql, flowcode); + rs.executeQuery(userSql, flowCode); while (rs.next()) { staffCodeBuilder.append(rs.getString("staffCode")).append("|"); } - usermap.put("flowcode", flowcode); - usermap.put("flowname", flowname); + usermap.put("flowCode", flowCode); + usermap.put("flowName", flowName); //同步所需参数一并拼接 usermap.put("actionType", actionType); + usermap.put("center", center); usermap.put("cataCode", cataCode); usermap.put("staffCode", staffCodeBuilder.toString()); userList.add(usermap); @@ -200,9 +204,9 @@ public class WorkflowSyncCronJob extends BaseCronJob { * @param timeNodeUse 同步作用 * @param formmodeid 模块id */ - private void writeTimeNode(String timeNodeTable, String currentTime, String syncType, String timeNodeUse, String formmodeid) { + private void writeTimeNode(String timeNodeTable, String currentTime, String syncType, String timeNodeUse, String formmodeid) throws Exception { RecordSet recordSet = new RecordSet(); - String sql = "insert into " + timeNodeTable + "(id,formmodeid,type,timenode,useto) values(?,?,?,?,?)"; - recordSet.executeUpdate(sql, UUID.randomUUID(), formmodeid, syncType, currentTime, timeNodeUse); + String sql = "SET IDENTITY_INSERT uf_sync_timenode ON insert into " + timeNodeTable + " (id,formmodeid,type,timenode,useto) values (?,?,?,?,?)"; + recordSet.executeUpdate(sql, IdGenerator.getNextId(timeNodeTable), formmodeid, syncType, currentTime, timeNodeUse); } }