浩鲸单点及菜单推送

feature-LeeD-20221025
李栋 3 years ago
parent f4f8b92207
commit 90247f5bea

@ -1,7 +1,10 @@
package weaver.interfaces.job; package weaver.interfaces.job;
import com.cloudstore.dev.api.service.ServiceEC;
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 org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import weaver.conn.RecordSet; import weaver.conn.RecordSet;
import weaver.conn.util.IdGenerator; import weaver.conn.util.IdGenerator;
import weaver.general.BaseBean; import weaver.general.BaseBean;
@ -27,6 +30,7 @@ public class WorkflowSyncCronJob extends BaseCronJob {
* (01) * (01)
*/ */
private String syncType; private String syncType;
private static final Log logger = LogFactory.getLog(WorkflowSyncCronJob.class);
@Override @Override
public void execute() { public void execute() {
@ -38,7 +42,7 @@ public class WorkflowSyncCronJob extends BaseCronJob {
//同步人员权限url //同步人员权限url
String synchronizeUserUrl = bb.getPropValue("PORTAL_INFO", "synchronizeUserUrl"); String synchronizeUserUrl = bb.getPropValue("PORTAL_INFO", "synchronizeUserUrl");
//新建流程推送到目录code //新建流程推送到目录code
String center = bb.getPropValue("PORTAL_INFO", "center"); String center = bb.getPropValue("PORTAL_INFO", "newWorkflowCenter");
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");
@ -91,8 +95,8 @@ public class WorkflowSyncCronJob extends BaseCronJob {
RecordSet recordSet3 = new RecordSet(); RecordSet recordSet3 = 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<>(); List<List<Map<String, Object>>> addUserList = new LinkedList<>();
ArrayList<Map<String, Object>> delUserList = new ArrayList<>(); List<List<Map<String, Object>>> delUserList = new LinkedList<>();
//查询建模所有流程 //查询建模所有流程
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 + ")";
@ -120,14 +124,14 @@ public class WorkflowSyncCronJob extends BaseCronJob {
//拼接有效流程请求参数 //拼接有效流程请求参数
concatWorkflowCondition(center, cataCode, flowCode, flowName, ACTION_TYPE_ADD, addWorkflowList); concatWorkflowCondition(center, cataCode, flowCode, flowName, ACTION_TYPE_ADD, addWorkflowList);
//有效流程关联的人员参数拼接 //有效流程关联的人员参数拼接
getUserConditionByWorkflow(workflowAuthTable, center, cataCode, flowCode, flowName, ACTION_TYPE_ADD_USER, addUserList, timeCondition); getUserConditionByWorkflow(workflowAuthTable, center, cataCode, flowCode, flowName, ACTION_TYPE_ADD_USER, addUserList, timeCondition, effective);
} else if (EFFECTIVE_NO.equals(effective)) { } else if (EFFECTIVE_NO.equals(effective)) {
//拼接无效流程请求参数,如果有流程还有效则不删除 //拼接无效流程请求参数,如果有流程还有效则不删除
if (!workflowHasEffective(workflowAuthTable, recordSet2, flowCode)) { if (!workflowHasEffective(workflowAuthTable, recordSet2, flowCode)) {
concatWorkflowCondition(center, cataCode, flowCode, flowName, ACTION_TYPE_DELETE, delWorkflowList); concatWorkflowCondition(center, cataCode, flowCode, flowName, ACTION_TYPE_DELETE, delWorkflowList);
} }
//无效流程关联的人员参数拼接 //无效流程关联的人员参数拼接
getUserConditionByWorkflow(workflowAuthTable, center, cataCode, flowCode, flowName, ACTION_TYPE_DELETE_USER, delUserList, timeCondition); getUserConditionByWorkflow(workflowAuthTable, center, cataCode, flowCode, flowName, ACTION_TYPE_DELETE_USER, delUserList, timeCondition, effective);
} }
} }
HashMap<String, String> headers = new HashMap<>(); HashMap<String, String> headers = new HashMap<>();
@ -136,31 +140,54 @@ public class WorkflowSyncCronJob extends BaseCronJob {
if (CollectionUtils.isNotEmpty(addWorkflowList)) { if (CollectionUtils.isNotEmpty(addWorkflowList)) {
for (Map<String, Object> workflowMap : addWorkflowList) { for (Map<String, Object> workflowMap : addWorkflowList) {
String data = HttpUtils.doPost(synchronizeFlowUrl, workflowMap, headers); String data = HttpUtils.doPost(synchronizeFlowUrl, workflowMap, headers);
bb.writeLog("增加流程" + workflowMap.get("flowCode"), data); bb.writeLog("addworkflow" + workflowMap.get("flowCode"), data);
//无法判断流程的更改类型,所以在流程变动同时修改 //无法判断流程的更改类型,所以在流程变动同时修改
workflowMap.put("actionType", ACTION_TYPE_UPDATE); workflowMap.put("actionType", ACTION_TYPE_UPDATE);
data = HttpUtils.doPost(synchronizeFlowUrl, workflowMap, headers); data = HttpUtils.doPost(synchronizeFlowUrl, workflowMap, headers);
bb.writeLog("修改流程" + workflowMap.get("flowCode"), data); bb.writeLog("updateworkflow" + workflowMap.get("flowCode"), data);
} }
} }
//删除人员要在删除流程之前执行 //删除人员要在删除流程之前执行
if (CollectionUtils.isNotEmpty(delUserList)) { if (CollectionUtils.isNotEmpty(delUserList)) {
for (Map<String, Object> workflowMap : delUserList) { addOrDeleteUser(synchronizeUserUrl, delUserList, headers);
String data = HttpUtils.doPost(synchronizeUserUrl, workflowMap, headers);
bb.writeLog("删除人员" + workflowMap.get("staffCode"), data);
}
} }
if (CollectionUtils.isNotEmpty(delWorkflowList)) { if (CollectionUtils.isNotEmpty(delWorkflowList)) {
for (Map<String, Object> workflowMap : delWorkflowList) { for (Map<String, Object> workflowMap : delWorkflowList) {
String data = HttpUtils.doPost(synchronizeFlowUrl, workflowMap, headers); String data = HttpUtils.doPost(synchronizeFlowUrl, workflowMap, headers);
bb.writeLog("删除流程" + workflowMap.get("staffCode"), data); bb.writeLog("deleteworkflow" + workflowMap.get("staffCode"), data);
} }
} }
//调用人员同步方法
if (CollectionUtils.isNotEmpty(addUserList)) { if (CollectionUtils.isNotEmpty(addUserList)) {
for (Map<String, Object> workflowMap : addUserList) { addOrDeleteUser(synchronizeUserUrl, addUserList, headers);
String data = HttpUtils.doPost(synchronizeUserUrl, workflowMap, headers); }
bb.writeLog("增加人员" + workflowMap.get("staffCode"), data); }
/**
*
*
* @param synchronizeUserUrl
* @param headers
*/
private void addOrDeleteUser(String synchronizeUserUrl, List<List<Map<String, Object>>> userLists, HashMap<String, String> headers) {
for (List<Map<String, Object>> userList : userLists) {
Map<String, Object> staffCodeMap = userList.get(0);
Map<String, Object> userConditionMap = userList.get(1);
Map<String, Object> userCondition = (Map<String, Object>) userConditionMap.get("userCondition");
HashSet<String> staffCodeSet = (HashSet<String>) staffCodeMap.get("staffCodeSet");
StringBuilder stringBuilder = new StringBuilder();
for (String staffCode : staffCodeSet) {
//超出字段长度限制请求接口后清空一次
if (stringBuilder.length() > 10000) {
userCondition.put("staffCode", stringBuilder.toString());
String data = HttpUtils.doPost(synchronizeUserUrl, userCondition, headers);
stringBuilder.delete(0, stringBuilder.length());
}
stringBuilder.append(staffCode).append("|");
}
//最后字段可能没有超限,再同步最后的人员
if (stringBuilder.length() < 10000) {
userCondition.put("staffCode", stringBuilder.toString());
String data = HttpUtils.doPost(synchronizeUserUrl, userCondition, headers);
} }
} }
} }
@ -208,26 +235,36 @@ public class WorkflowSyncCronJob extends BaseCronJob {
* @param flowCode * @param flowCode
* @param flowName * @param flowName
* @param actionType * @param actionType
* @param userList
* @param timeCondition * @param timeCondition
*/ */
private void getUserConditionByWorkflow(String workflowAuthTable, String center, String cataCode, String flowCode, String flowName, String actionType, ArrayList<Map<String, Object>> userList, String timeCondition) { private void getUserConditionByWorkflow(String workflowAuthTable, String center, String cataCode, String flowCode, String flowName, String actionType, List<List<Map<String, Object>>> userLists, String timeCondition, String effective) {
Map<String, Object> usermap = new HashMap<>(); List<Map<String, Object>> userList = new LinkedList<>();
StringBuilder staffCodeBuilder = new StringBuilder(); Map<String, Object> userCondition = new HashMap<>();
String userSql = "SELECT workcode as staffCode FROM " + workflowAuthTable + " WHERE workflowselect=?"; Map<String, Object> staffCodeMap = new HashMap<>();
// StringBuilder staffCodeBuilder = new StringBuilder();
HashSet<String> staffCodeSet = new HashSet<>();
String userSql = "SELECT workcode as staffCode FROM " + workflowAuthTable + " WHERE workflowselect=? AND effective=?";
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
rs.executeQuery(userSql, flowCode); rs.executeQuery(userSql, flowCode, effective);
while (rs.next()) { while (rs.next()) {
staffCodeBuilder.append(rs.getString("staffCode")).append("|"); //staffCode参数有长度限制
// staffCodeBuilder.append(rs.getString("staffCode")).append("|");
staffCodeSet.add(rs.getString("staffCode"));
} }
usermap.put("flowCode", flowCode); // logger.info("getUserConditionByWorkflow:" + flowCode + ":" + staffCodeBuilder.length() + ":effective" + effective);
usermap.put("flowName", flowName); staffCodeMap.put("staffCodeSet", staffCodeSet);
userList.add(staffCodeMap);
//组建人员同步map
userCondition.put("flowCode", flowCode);
userCondition.put("flowName", flowName);
//同步所需参数一并拼接 //同步所需参数一并拼接
usermap.put("actionType", actionType); userCondition.put("actionType", actionType);
usermap.put("center", center); userCondition.put("center", center);
usermap.put("cataCode", cataCode); userCondition.put("cataCode", cataCode);
usermap.put("staffCode", staffCodeBuilder.toString()); Map<String, Object> userMap = new HashMap<>();
userList.add(usermap); userMap.put("userCondition", userCondition);
userList.add(userMap);
userLists.add(userList);
} }
/** /**

@ -39,7 +39,6 @@ public class HttpUtils {
* *
* @param url * @param url
* @param paramMap * @param paramMap
* @param headers
* @return * @return
*/ */
public static String ssoLoginDoPost(String url, Map<String, Object> paramMap) { public static String ssoLoginDoPost(String url, Map<String, Object> paramMap) {

Loading…
Cancel
Save