测试修改1.0

feature-LeeD-20221025
李栋 3 years ago
parent a7bd12fcd7
commit 2bd03b8b23

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

Loading…
Cancel
Save