You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tjBANK/weaver/ofs/manager/OfsTodoDataManagerNew.java

2921 lines
134 KiB
Java

2 years ago
/*
*
* Copyright (c) 2001-2016 .
* ,.
*
*/
package weaver.ofs.manager;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cloudstore.dev.api.bean.MessageBean;
import com.cloudstore.dev.api.bean.MessageType;
import com.cloudstore.dev.api.util.Util_DataCache;
import com.cloudstore.dev.api.util.Util_Message;
import com.engine.msgcenter.biz.ConfigManager;
import com.engine.msgcenter.biz.WeaMessageTypeConfig;
import com.engine.workflow.biz.requestSubmit.RequestOperationBiz;
import com.google.common.collect.Sets;
import net.sf.json.JSONArray;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.xml.sax.InputSource;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.integration.cache.OfsSysInfoCacheNew;
import weaver.integration.logging.Logger;
import weaver.integration.logging.LoggerFactory;
import weaver.ofs.bean.*;
import weaver.ofs.dao.OfsSettingCacheDAO;
import weaver.ofs.dao.OfsSysInfoCacheDAO;
import weaver.ofs.dao.OfsWorkflowCacheDAO;
import weaver.ofs.manager.remind.*;
import weaver.ofs.manager.utils.OfsTodoDataUtils;
import weaver.ofs.mq.bean.AsyncListenerBean;
import weaver.ofs.mq.init.InitOfsMqMonitor;
import weaver.ofs.mq.publisher.OfsMqSendMessage;
import weaver.ofs.mq.selector.QueueSelector;
import weaver.ofs.mq.util.OfsCacheLockUtil;
import weaver.ofs.service.*;
import weaver.ofs.util.OfsUtils;
import weaver.ofs.utils.CheckIP;
import weaver.rtx.RTXConfig;
import weaver.security.util.SecurityMethodUtil;
import weaver.systeminfo.SystemEnv;
import java.io.*;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.*;
import java.util.regex.Pattern;
/**
*
*
* @version 1.0
*/
public class OfsTodoDataManagerNew implements IOfsTodoDataManager {
public void isAnalysis() {
// OfsSettingCacheNew ofsSettingCacheNew = new OfsSettingCacheNew();
// ofsSettingCacheNew.next();
OfsSettingCacheDAO ofsSettingCacheDAO = new OfsSettingCacheDAO();
OfsSetting ofsSettingCache = ofsSettingCacheDAO.getOfsSettingCache();
if ("1".equals(ofsSettingCache.getInvokewsLog()) || "1".equals(ofsSettingCache.getInvokerestLog())) {
OfsTodoDataManagerNewProxy proxy = new OfsTodoDataManagerNewProxy(this);
ofsTodoDataManager = proxy.getOfsManager();
} else {
ofsTodoDataManager = this;
}
}
/**
*
*/
private IOfsTodoDataManager ofsTodoDataManager = null;
public Map<String, Object> jsonToMap(String json) {
return (Map<String, Object>) JSON.parse(json);
}
public Map<String, Object> xmlToMap(String xml) {
Map<String, Object> map = new HashMap<String, Object>();
try {
xml = SecurityMethodUtil.clearEntity(xml);
if (xml == null || "".equals(xml))
return map;
Document doc = parseText(xml);
if (doc == null)
return map;
Element root = doc.getRootElement();
for (Iterator iterator = root.elementIterator(); iterator.hasNext(); ) {
Element e = (Element) iterator.next();
if ("custom".equals(e.getName())) {
Map<String, String> map2 = new HashMap<String, String>();
List list = e.elements();
for (int i = 0; i < list.size(); i++) {
Element e2 = (Element) list.get(i);
map2.put(e2.getName(), e2.getText());
}
map.put(e.getName(), map2);
} else {
map.put(e.getName(), e.getText());
}
}
} catch (Exception e) {
log.error("xml 转map 异常", e);
}
return map;
}
public Document parseText(String text) throws Exception {
Document result = null;
SAXReader reader = new SAXReader();
reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
String encoding = getEncoding(text);
InputSource source = new InputSource(new StringReader(text));
source.setEncoding(encoding);
result = reader.read(source);
if (result.getXMLEncoding() == null) {
result.setXMLEncoding(encoding);
}
return result;
}
private String getEncoding(String text) {
String result = null;
String xml = text.trim();
if (xml.startsWith("<?xml")) {
int end = xml.indexOf("?>");
String sub = xml.substring(0, end);
StringTokenizer tokens = new StringTokenizer(sub, " =\"'");
while (tokens.hasMoreTokens()) {
String token = tokens.nextToken();
if ("encoding".equals(token)) {
if (tokens.hasMoreTokens()) {
result = tokens.nextToken();
}
break;
}
}
}
return result;
}
/**
*
*/
public static Logger log = LoggerFactory.getLogger("ofs", OfsTodoDataManagerNew.class.getName());
/**
* ID
*/
public static final String SYSADMIN_ID = "1";
/**
* xml
*/
public static final String RESULT_XML_ROOT = "ResultInfo";
/**
* id
*/
public static final int DEFAULT_DATA_ID = 0;//缺省数据id
/**
* 线
*/
public static final String LINK_CHAR = "_";
/**
*
*/
public static OfsTodoDataServiceNew ofsTodoDataService = new OfsTodoDataServiceNew();
/**
*
*/
public static OfsSysInfoService ofsSysInfoService = new OfsSysInfoService();
/**
*
*/
public static OfsWorkflowService ofsWorkflowService = new OfsWorkflowService();
/**
*
*/
private OfsSettingService ofsSettingService = new OfsSettingService();
/**
*
*/
public static OfsLogServiceNew ofsLogService = new OfsLogServiceNew();
public static OfsRequestBaseService ofsRequestBaseService = new OfsRequestBaseService();
public static OfsDoneDataService ofsDoneDataService = new OfsDoneDataService();
public static OfsMqSendMessage ofsMqSendMessage = new OfsMqSendMessage();
/**
* 访Ip
*/
public String clientIp;//访问Ip
private boolean isCheckIP = true;//是否校验 IP
private boolean isAuto = true;//是否自动
private final boolean isSnowflake = InitOfsMqMonitor.isSnowflake;//是否开启雪花算法
private final String queuePrefix = InitOfsMqMonitor.queuePrefix;//队列的前缀
private final Integer queueCount = InitOfsMqMonitor.queueCount;//分的队列个数
public void setIsCheckIP(boolean isCheckIP) {
this.isCheckIP = isCheckIP;
}
public void setIsAuto(boolean isAuto) {
this.isAuto = isAuto;
}
/**
* 访Ip
*/
public String getClientIp() {
return clientIp;
}
/**
* 访Ip
*/
public void setClientIp(String clientIp) {
this.clientIp = clientIp;
}
/**
*
*/
public Map<String, String> receiveTodoRequestByMap(Map<String, Object> dataMap) {
// 业务数据
dataMap.put("isremark", OfsTodoData.IsRemark_Todo);
dataMap.put("viewtype", OfsTodoData.ViewType_None);
dataMap.put("iscomplete", OfsTodoData.IsComplete_No);
//TODO 如果已经解析完成不用再次解析
Object custom = dataMap.get("custom");
if (custom instanceof Map) {
} else {
String str = (String) dataMap.get("custom");
Map<String, Object> map = xmlToMap(str);
dataMap.put("custom", map);
}
return this.receiveRequestInfo(dataMap, "todo");
}
/**
* (json)
*/
public String receiveTodoRequestByJson(String json) {
Map<String, Object> dataMap = this.jsonToMap(json);
Map<String, String> resultMap = this.receiveTodoRequestByMap(dataMap);
return OfsUtils.mapToJson(resultMap);
}
/**
* (xml)
*/
public String receiveTodoRequestByXml(String xml) {
Map<String, Object> dataMap = this.xmlToMap(xml);
Map<String, String> resultMap = this.receiveTodoRequestByMap(dataMap);
return OfsUtils.mapToXml(resultMap, RESULT_XML_ROOT);
}
/**
* (map)
*/
public Map<String, String> receiveRequestInfoByMap(Map<String, Object> dataMap) {
//TODO 如果已经解析完成不用再次解析
Object custom = dataMap.get("custom");
if (custom instanceof Map) {
} else {
String str = (String) dataMap.get("custom");
Map<String, Object> map = xmlToMap(str);
dataMap.put("custom", map);
}
return this.receiveRequestInfo(dataMap, "info");
}
/**
* (map)
*/
public Map<String, String> deleteRequestInfoByMap(Map<String, Object> dataMap) {
String syscode = Util.null2String((String) dataMap.get("syscode"));
String flowid = Util.null2String((String) dataMap.get("flowid"));
return this.deleteRequestInfo(
syscode,
flowid
);
}
/**
* (json)
*/
public String deleteRequestInfoByJson(String json) {
Map<String, Object> dataMap = this.jsonToMap(json);
Map<String, String> resultMap = this.deleteRequestInfoByMap(dataMap);
return OfsUtils.mapToJson(resultMap);
}
/**
* (xml)
*/
public String deleteRequestInfoByXML(String xml) {
Map<String, Object> dataMap = this.xmlToMap(xml);
Map<String, String> resultMap = this.deleteRequestInfoByMap(dataMap);
return OfsUtils.mapToXml(resultMap, RESULT_XML_ROOT);
}
/**
* (map)
*/
public Map<String, String> deleteUserRequestInfoByMap(Map<String, Object> dataMap) {
String syscode = Util.null2String((String) dataMap.get("syscode"));
String flowid = Util.null2String((String) dataMap.get("flowid"));
String userid = Util.null2String((String) dataMap.get("userid"));
if (StringUtils.isBlank(userid)) {
userid = Util.null2String((String) dataMap.get("receiver"));
}
return this.deleteUserRequestInfo(
syscode,
flowid,
userid
);
}
/**
* id(json)
*/
public String deleteUserRequestInfoByJson(String json) {
Map<String, Object> dataMap = this.jsonToMap(json);
Map<String, String> resultMap = this.deleteUserRequestInfoByMap(dataMap);
return OfsUtils.mapToJson(resultMap);
}
/**
* id(xml)
*/
public String deleteUserRequestInfoByXML(String xml) {
Map<String, Object> dataMap = this.xmlToMap(xml);
Map<String, String> resultMap = this.deleteUserRequestInfoByMap(dataMap);
return OfsUtils.mapToXml(resultMap, RESULT_XML_ROOT);
}
/**
* (json)
*/
public String receiveRequestInfoByJson(String json) {
Map<String, Object> dataMap = this.jsonToMap(json);
Map<String, String> resultMap = this.receiveRequestInfoByMap(dataMap);
return OfsUtils.mapToJson(resultMap);
}
/**
* (xml)
*/
public String receiveRequestInfoByXml(String xml) {
Map<String, Object> dataMap = this.xmlToMap(xml);
Map<String, String> resultMap = this.receiveRequestInfoByMap(dataMap);
return OfsUtils.mapToXml(resultMap, RESULT_XML_ROOT);
}
public int buildRequestid(OfsTodoData data) {
String requestid = ofsRequestBaseService.buildRequestid(data) + "";
return Util.getIntValue(requestid);
}
public String buildRequestidForSnowflake(OfsTodoData data) {
return ofsRequestBaseService.buildRequestidForSnowflake(data) + "";
}
public synchronized int getTodoDataId(OfsTodoData data) {
int todoDataId = ofsTodoDataService.getTodoDataId(data.getSyscode(), data.getFlowid(), data.getUserid());
return todoDataId;
}
@Override
public synchronized int getDoneDataId(OfsTodoData data) {
int doneDataId = ofsDoneDataService.getDoneDataId(data.getSyscode(), data.getFlowid(), data.getUserid());
return doneDataId;
}
private Map<String, String> isAuto(OfsTodoData data) {
Map<String, String> map = new HashMap<>();
if (this.isAuto) {
map.put("isauto", "" + SystemEnv.getHtmlLabelName(81855, weaver.general.ThreadVarLanguage.getLang()) + "");
if ("0".equals(data.getId()) && "0".equals(data.getFlowguid())) {
map.put("type", OfsLog.OperType_AutoNew);
} else {
map.put("type", OfsLog.OperType_AutoEdit);
}
} else {
map.put("isauto", "" + SystemEnv.getHtmlLabelName(125582, weaver.general.ThreadVarLanguage.getLang()) + "");
if ("0".equals(data.getId()) && "0".equals(data.getFlowguid())) {
map.put("type", OfsLog.OperType_New);
} else {
map.put("type", OfsLog.OperType_Edit);
}
}
return map;
}
private void copy(OfsTodoData source, OfsTodoData target) {
try {
Field[] fields = OfsTodoData.class.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
String fieldName = field.getName();
if (!fieldName.equals("custom") &&
!fieldName.equals("flowguid") &&
!fieldName.equals("id") &&
!fieldName.equals("isremark") &&
!fieldName.equals("viewtype") &&
!fieldName.equals("operatedate") &&
!fieldName.equals("operatetime") &&
!fieldName.equals("receivets") &&
!fieldName.equals("isauto")
) {
field.setAccessible(true);
Object o = field.get(target);
if (o == null) {
field.set(target, field.get(source));
}
if (o instanceof String) {
String str = (String) o;
if (StringUtils.isBlank(str)) {
field.set(target, field.get(source));
}
}
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
log.error("复制数据异常", e);
}
}
public String saveData(OfsSysInfo ofsSysInfoCache, OfsTodoData data) {
String isremark = data.getIsremark();
String viewtype = data.getViewtype();
String requestname = data.getRequestname();
String pcurl = data.getPcurl();
String appurl = data.getAppurl();
String nodename = data.getNodename();
String workflowname = data.getWorkflowname();
String isremarkName = buildIsRemarkName(data);
String OfsSysInfo_sysname = ofsTodoDataManager.buildSysName(data);//系统显示名称
String OfsLog_OperType = OfsLog.OperType_AutoNew;
String operresult = OfsLog.OperResult_Success;
String returnMessage = "";
int todoDataId = 0;
// 从redis中获取数据是否存在
String key = data.getSyscode() + "_" + data.getFlowid() + "_" + data.getUserid();
Map<String, String> cache = null;//(Map<String,String>)Util_DataCache.getObjVal(key);
String isremarkcache = "";
/*if(cache != null){
todoDataId = Util.getIntValue(cache.get("id"),0);
isremarkcache = cache.get("isremark");
data.setId(todoDataId+"");
}*/
// boolean issend = false;
if ("0".equals(data.getIsremark()) || "8".equals(data.getIsremark())) {
if ("0".equals(data.getId()) || !isremarkcache.equals(data.getIsremark())) {
todoDataId = ofsTodoDataManager.getTodoDataId(data);
data.setId(todoDataId + "");
}
int doneDataId = ofsTodoDataManager.getDoneDataId(data);
data.setFlowguid(doneDataId + "");
Map<String, String> auto = isAuto(data);
OfsLog_OperType = auto.get("type");
if ("0".equals(data.getId())) {//流程数据不存在
boolean flag = isNeedUpdate(cache, data);
if (flag) {
/**
* TODO
* 1
* 2 0
* 3
* 4
*
* */
//保存流程数据
boolean OfsTodoData_insert_flag = ofsTodoDataService.receiveRequestInfoInsert(data);
if (!(OfsTodoData_insert_flag)) {
boolean OfsTodoData_update_flag = ofsTodoDataService.receiveRequestInfoUpdate(data);
if (!(OfsTodoData_update_flag)) {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(83946, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(498, weaver.general.ThreadVarLanguage.getLang()) + "";
operresult = OfsLog.OperResult_Failure;
} else {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
}
} else {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(83946, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
if (!"0".equals(data.getFlowguid())) {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
}
}
if (!OfsLog.OperResult_Failure.equals(operresult)) {
//获取主键
int id = ofsTodoDataService.getTodoDataId(data.getSyscode(), data.getFlowid(), data.getUserid());
data.setId(id + "");
Map<String, String> map = new HashMap<>();
map.put("requestid", data.getRequestid());
map.put("receivets", data.getReceivets());
map.put("isremark", data.getIsremark());
map.put("id", id + "");
Util_DataCache.setObjVal(key, map, 60 * 60 * 24);
//删除已办数据
boolean delete = ofsDoneDataService.delete(data.getSyscode(), data.getFlowid(), data.getUserid());
//ofsTodoDataManager.updatePcurlAndAppurl(ofsSysInfoCacheNew,data);
//待办才发送消息提醒
if ((isremark.equals(OfsTodoData.IsRemark_Todo) || isremark.equals("8") || isremark.equals("9")) && viewtype.equals(OfsTodoData.ViewType_None)) {
// TODO 注意 待办和已办 要处理一个是否按照时间戳更新的逻辑
ofsTodoDataManager.sendMessage(ofsSysInfoCache, OfsSysInfo_sysname, data);
}
}
} else {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】"
+ auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(83946, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + ""
+ SystemEnv.getHtmlLabelName(389993, weaver.general.ThreadVarLanguage.getLang()) + "" +
SystemEnv.getHtmlLabelName(507856, weaver.general.ThreadVarLanguage.getLang()) +
SystemEnv.getHtmlLabelName(567, weaver.general.ThreadVarLanguage.getLang()) +
SystemEnv.getHtmlLabelName(23989, weaver.general.ThreadVarLanguage.getLang()) + "【receivets" + data.getReceivets() + "】";
}
} else {
boolean flag = isNeedUpdate(cache, data);
if (flag) {
//数据存在,做更新操作 保存流程数据;
boolean OfsTodoData_update_flag = ofsTodoDataService.receiveRequestInfoUpdate(data);
if (!(OfsTodoData_update_flag)) {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(498, weaver.general.ThreadVarLanguage.getLang()) + "";
operresult = OfsLog.OperResult_Failure;
} else {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
//删除已办数据
boolean delete = ofsDoneDataService.delete(data.getSyscode(), data.getFlowid(), data.getUserid());
Map<String, String> map = new HashMap<>();
map.put("requestid", data.getRequestid());
map.put("receivets", data.getReceivets());
map.put("isremark", data.getIsremark());
map.put("id", data.getId());
Util_DataCache.setObjVal(key, map, 60 * 60 * 24);
//ofsTodoDataManager.updatePcurlAndAppurl(ofsSysInfoCacheNew,data);
//待办才发送消息提醒
if ((isremark.equals(OfsTodoData.IsRemark_Todo) || isremark.equals("8") || isremark.equals("9")) && viewtype.equals(OfsTodoData.ViewType_None)) {
// TODO 注意 待办和已办 要处理一个是否按照时间戳更新的逻辑
ofsTodoDataManager.sendMessage(ofsSysInfoCache, OfsSysInfo_sysname, data);
}
}
} else {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" +
SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" +
SystemEnv.getHtmlLabelName(389993, weaver.general.ThreadVarLanguage.getLang()) + "" +
SystemEnv.getHtmlLabelName(507856, weaver.general.ThreadVarLanguage.getLang()) +
SystemEnv.getHtmlLabelName(567, weaver.general.ThreadVarLanguage.getLang()) +
SystemEnv.getHtmlLabelName(23989, weaver.general.ThreadVarLanguage.getLang()) + "【receivets" + data.getReceivets() + "】";
}
}
} else if ("2".equals(data.getIsremark()) || "4".equals(data.getIsremark())) {
// TODO 非待办从已办表查询todoDataId
if ("0".equals(data.getId()) || !isremarkcache.equals(data.getIsremark())) {
todoDataId = ofsTodoDataManager.getDoneDataId(data);
}
int id = ofsTodoDataManager.getTodoDataId(data);
if (id == 0) {
} else {
OfsTodoData one = ofsTodoDataService.getOneBean(id);
String isremarkbak = data.getIsremark();
String receivets = data.getReceivets();
//BeanUtils.copyProperties(one,data);
copy(one, data);
//单点登录地址
String pcentranceurl = ofsSysInfoCache.getPcentranceurl();
String appentranceurl = ofsSysInfoCache.getAppentranceurl();
data.setIsremark(isremarkbak);
data.setViewtype(viewtype);
data.setReceivets(receivets);
data.setRequestname(requestname);
data.setPcurl(pcurl);
data.setAppurl(appurl);
data.setNodename(nodename);
data.setWorkflowname(workflowname);
if (StringUtils.isBlank(pcurl)) {
data.setPcurl(one.getPcurl());
if (StringUtils.isNotBlank(pcentranceurl)) {//兼容历史数据 历史数据 有中转页面 pcurl 和 pcurlsrc 不一致
data.setPcurl(one.getPcurlsrc());
}
}
if (StringUtils.isBlank(appurl)) {
data.setAppurl(one.getAppurl());
if (StringUtils.isNotBlank(appentranceurl)) {//兼容历史数据 历史数据 有中转页面 appurl 和 appurlsrc 不一致
data.setAppurl(one.getAppurlsrc());
}
}
}
data.setFlowguid(id + "");
data.setId(todoDataId + "");
Map<String, String> auto = isAuto(data);
OfsLog_OperType = auto.get("type");
if ("0".equals(data.getId())) {
boolean isNeedUpdate = isNeedUpdate(cache, data);
if (isNeedUpdate) {
//保存流程数据
boolean flag = ofsDoneDataService.receiveRequestInfoInsert(data);
if (!(flag)) {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(83946, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(498, weaver.general.ThreadVarLanguage.getLang()) + "";
operresult = OfsLog.OperResult_Failure;
} else {
//删除待办数据
boolean delete = ofsTodoDataService.delete(data.getSyscode(), data.getFlowid(), data.getUserid());
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(83946, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
int doneDataId = ofsDoneDataService.getDoneDataId(data.getSyscode(), data.getFlowid(), data.getUserid());
data.setId(doneDataId + "");
Map<String, String> map = new HashMap<>();
map.put("requestid", data.getRequestid());
map.put("receivets", data.getReceivets());
map.put("isremark", data.getIsremark());
map.put("id", doneDataId + "");
Util_DataCache.setObjVal(key, map, 60 * 60 * 24);
// 新建的已办数据,加一个已办的消息
/*if(id == 0){
issend = true;
}*/
if (!"0".equals(data.getFlowguid())) {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
}
}
} else {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + ""
+ SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName +
"" +
SystemEnv.getHtmlLabelName(389993, weaver.general.ThreadVarLanguage.getLang()) + "" +
SystemEnv.getHtmlLabelName(507856, weaver.general.ThreadVarLanguage.getLang()) +
SystemEnv.getHtmlLabelName(567, weaver.general.ThreadVarLanguage.getLang()) +
SystemEnv.getHtmlLabelName(23989, weaver.general.ThreadVarLanguage.getLang()) + "【receivets" + data.getReceivets() + "】";
}
} else {
boolean isNeedUpdate = isNeedUpdate(cache, data);
if (isNeedUpdate) {
//数据存在,做更新操作 保存流程数据;
boolean flag = ofsDoneDataService.receiveRequestInfoUpdate(data);
if (!(flag)) {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(498, weaver.general.ThreadVarLanguage.getLang()) + "";
operresult = OfsLog.OperResult_Failure;
} else {
//删除待办数据
boolean delete = ofsTodoDataService.delete(data.getSyscode(), data.getFlowid(), data.getUserid());
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
Map<String, String> map = new HashMap<>();
map.put("requestid", data.getRequestid());
map.put("receivets", data.getReceivets());
map.put("isremark", data.getIsremark());
map.put("id", data.getId());
Util_DataCache.setObjVal(key, map, 60 * 60 * 24);
}
} else {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName +
"" +
SystemEnv.getHtmlLabelName(389993, weaver.general.ThreadVarLanguage.getLang()) + "" +
SystemEnv.getHtmlLabelName(507856, weaver.general.ThreadVarLanguage.getLang()) +
SystemEnv.getHtmlLabelName(567, weaver.general.ThreadVarLanguage.getLang()) +
SystemEnv.getHtmlLabelName(23989, weaver.general.ThreadVarLanguage.getLang()) + "【receivets" + data.getReceivets() + "】";
}
}
//ofsTodoDataManager.updatePcurlAndAppurlInDone(ofsSysInfoCacheNew,data);
/*if (issend){
ofsTodoDataManager.sendMessage(ofsSysInfoCacheNew,OfsSysInfo_sysname,data);
}*/
User user = new User(Integer.parseInt(data.getUserid()));
RequestOperationBiz.addWorkflowCount(Integer.parseInt(data.getWorkflowid()), user);
//将所有已办且iscomplete=0变更为iscomplete=1不处理待办情况
boolean b = ofsDoneDataService.processOverRequestComplete(data.getSyscode(), data.getFlowid());
} else if (StringUtils.isBlank(isremark)) {
int idTodo = ofsTodoDataManager.getTodoDataId(data);
int idDone = ofsTodoDataManager.getDoneDataId(data);
Map<String, String> auto = isAuto(data);
OfsLog_OperType = auto.get("type");
if (idTodo == 0 && idDone == 0) {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】"
+ SystemEnv.getHtmlLabelName(23084, weaver.general.ThreadVarLanguage.getLang()) + "";
ofsTodoDataManager.saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + data.getId(), OfsLog_OperType, operresult, returnMessage, data);
return "-2";
} else {
boolean isNeedUpdate = isNeedUpdate(cache, data);
if (isNeedUpdate) {
if (idTodo > 0) {
//数据存在,做更新操作 保存流程数据;
boolean OfsTodoData_update_flag = ofsTodoDataService.receiveRequestInfoUpdate(data);
if (!(OfsTodoData_update_flag)) {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】"
+ auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + ""
+ SystemEnv.getHtmlLabelName(25425, weaver.general.ThreadVarLanguage.getLang()) + ""
+ SystemEnv.getHtmlLabelName(498, weaver.general.ThreadVarLanguage.getLang()) + "";
operresult = OfsLog.OperResult_Failure;
} else {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】"
+ auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + ""
+ SystemEnv.getHtmlLabelName(25425, weaver.general.ThreadVarLanguage.getLang()) + ""
+ SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
}
}
if (idDone > 0) {
boolean flag = ofsDoneDataService.receiveRequestInfoUpdate(data);
if (!(flag)) {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + ""
+ SystemEnv.getHtmlLabelName(25425, weaver.general.ThreadVarLanguage.getLang())
+ "" + SystemEnv.getHtmlLabelName(498, weaver.general.ThreadVarLanguage.getLang()) + "";
operresult = OfsLog.OperResult_Failure;
} else {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】" + auto.get("isauto") + ""
+ SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + ""
+ SystemEnv.getHtmlLabelName(25425, weaver.general.ThreadVarLanguage.getLang()) + ""
+ SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
}
}
} else {
returnMessage = "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + requestname + "】"
+ auto.get("isauto") + "" + SystemEnv.getHtmlLabelName(130625, weaver.general.ThreadVarLanguage.getLang()) + ""
+ SystemEnv.getHtmlLabelName(25425, weaver.general.ThreadVarLanguage.getLang()) +
"" +
SystemEnv.getHtmlLabelName(389993, weaver.general.ThreadVarLanguage.getLang()) + "" +
SystemEnv.getHtmlLabelName(507856, weaver.general.ThreadVarLanguage.getLang()) +
SystemEnv.getHtmlLabelName(567, weaver.general.ThreadVarLanguage.getLang()) +
SystemEnv.getHtmlLabelName(23989, weaver.general.ThreadVarLanguage.getLang()) + "【receivets" + data.getReceivets() + "】";
}
}
}
//TODO 设置消息已处理
// if((isremark.equals("2") || isremark.equals("4")) && !issend ){
Set<String> userids = new HashSet<String>();
userids.add(data.getUserid());
try {
// Util_Message.updateBizState(userids,data.getSyscode()+"_"+data.getFlowid(),"1");
Map<String, Object> urlMap = getURL(ofsSysInfoCache, data);
if (isremark.equals("2") || isremark.equals("4")) {
Util_Message.updateBizState(userids, data.getSyscode() + "_" + data.getFlowid(), "1");
}
} catch (Exception e) {
log.error("消息已处理异常——userids" + userids + "syscode+_+flowid" + data.getSyscode() + "_" + data.getFlowid() + ", state:1", e);
}
// }
ofsTodoDataManager.saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + data.getId(), OfsLog_OperType, operresult, returnMessage, data);
return operresult;
}
private boolean isNeedUpdate(Map<String, String> cache, OfsTodoData data) {
boolean flag = false;
String receivetscache = "0";
/* if(cache != null){
receivetscache = cache.get("receivets");
if("0".equals(data.getId()) && "0".equals(data.getFlowguid())){
receivetscache = "0";
}
}else{*/
OfsTodoData one = ofsTodoDataService.getOneNew(data.getSyscode(), data.getFlowid(), data.getUserid());
if (!Objects.isNull(one)) {
if (StringUtils.isNotBlank(one.getReceivets()) && Long.valueOf(receivetscache) < Long.valueOf(one.getReceivets())) {
receivetscache = one.getReceivets();
}
}
OfsTodoData oneBean = ofsDoneDataService.getOneNew(data.getSyscode(), data.getFlowid(), data.getUserid());
if (!Objects.isNull(oneBean)) {
if (StringUtils.isNotBlank(oneBean.getReceivets()) && Long.valueOf(receivetscache) < Long.valueOf(oneBean.getReceivets())) {
receivetscache = oneBean.getReceivets();
}
}
//}
if (Long.valueOf(receivetscache) < Long.valueOf(data.getReceivets())) {
flag = true;
}
return flag;
}
private Map<String, Object> getURL(OfsSysInfo ofsSysInfoCache, OfsTodoData data) {
String OfsSysInfo_pcprefixurl = ofsSysInfoCache.getPcprefixurl();//PC地址前缀
String OfsSysInfo_appprefixurl = ofsSysInfoCache.getAppprefixurl();//APP地址前缀
// OfsSettingCacheNew ofsSettingCacheNew = new OfsSettingCacheNew();
// ofsSettingCacheNew.next();
String pcurl = data.getPcurl();
String appurl = data.getAppurl();
//待办才发送消息提醒
String remindPcUrl = (OfsSysInfo_pcprefixurl + "" + pcurl);
String remindAppUrl = (OfsSysInfo_appprefixurl + "" + appurl);
//TODO 如果有中转页面,推送给消息中心的是中转页面地址
RecordSet rsrtx = new RecordSet();
String sqlStr = "select * from SystemSet";
rsrtx.executeSql(sqlStr);
rsrtx.next();
String oaaddress = rsrtx.getString("oaaddress");
String appentranceurl = ofsSysInfoCache.getAppentranceurl();
if (StringUtils.isNotBlank(appentranceurl)) {
remindAppUrl = oaaddress + appurl;
}
String pcentranceurl = ofsSysInfoCache.getPcentranceurl();
if (StringUtils.isNotBlank(pcentranceurl)) {
remindPcUrl = oaaddress + pcurl;
}
if (pcurl.startsWith("http") || pcurl.startsWith("https")) {
remindPcUrl = pcurl;
}
if (appurl.startsWith("http") || appurl.startsWith("https")) {
remindAppUrl = appurl;
}
log.error("消息通知 app访问地址" + remindAppUrl);
log.error("消息通知 pc访问地址" + remindPcUrl);
Map<String, Object> map = new HashMap<>();
map.put("linkUrl", remindPcUrl);
map.put("linkMobileUrl", remindAppUrl);
return map;
}
public OfsCustomDefinitionService ofsCustomDefinitionService = new OfsCustomDefinitionService();
public Map<String, String> validateCustom(Map<String, String> custom, OfsTodoData data) {
String str = "";
List<CustomDefinition> list = ofsCustomDefinitionService.query();
if (list.size() > 0) {
if (custom == null) {
custom = new HashMap<>();
}
for (CustomDefinition c : list) {
if (c.getEnable() != 1) {
custom.remove(c.getDbname());
}
if (c.getEnable() == 1 && c.getRequired() == 1) {
String value = custom.get(c.getDbname());
if (StringUtils.isBlank(value)) {
str += "," + c.getDbname();
}
}
}
if (StringUtils.isNotBlank(str)) {
str = str.substring(1);
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "自定义字段必填项【" + str + "】数据不能为空", data);
} else {
return null;
}
} else {
return null;
}
}
public OfsCustomDataService ofsCustomDataService = new OfsCustomDataService();
/**
*
*/
public Map<String, String> receiveRequestInfo(Map<String, Object> dataMap, String method) {
isAnalysis();
// 1 封装接口数据
OfsTodoData data = ofsTodoDataManager.packageData(dataMap);
String keyName = data.getSyscode() + "_" + data.getFlowid() + "_" + data.getReceiver();
try {
if (!OfsCacheLockUtil.getLock(keyName, 1)) {
return ofsTodoDataManager.saveLog("0",
OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID,
OfsLog.OperType_Check,
OfsLog.OperResult_Failure,
"调用接口并发过高1000ms内禁止syscode + flowid + receiver相同的流程调用接口 ",
data);
}
return this.receiveRequestInfo(data, method);
} finally {
OfsCacheLockUtil.unLock(keyName);
}
}
public Map<String, String> receiveRequestInfo(OfsTodoData data, String method) {
// 获取自定义字段的数据
Map<String, String> custom2 = data.getCustom();
Map<String, String> custom = new HashMap<>();
if (custom2 != null && !custom2.isEmpty()) {
Set<String> keySet = custom2.keySet();
Object[] keys = keySet.toArray();
for (Object key : keys) {
String k = (String) key;
String value = custom2.get(k);
custom.put(k.toUpperCase(), value);
}
}
String returnMessage = "";
// 获取基本信息
/*OfsSysInfoCacheNew ofsSysInfoCacheNew = ofsTodoDataManager.getOfsSysInfoCache(data);
if(ofsSysInfoCacheNew == null){
return saveLog(data.getSysid(),OfsLog.DataType_OtherSys + LINK_CHAR + DEFAULT_DATA_ID,OfsLog.OperType_Check,OfsLog.OperResult_Failure,"异构系统标识【"+data.getSyscode()+"】未注册", data);
}*/
// 2 校验数据
Map<String, String> validate = ofsTodoDataManager.validate(data, method);
if (validate != null && !validate.isEmpty()) {
return validate;
}
// TODO 校验自定义字段
if (this.isAuto) {
Map<String, String> validateCustom = ofsTodoDataManager.validateCustom(custom, data);
if (validateCustom != null && !validateCustom.isEmpty()) {
return validateCustom;
}
}
// OfsSysInfoCacheNew ofsSysInfoCacheNew = ofsTodoDataManager.getOfsSysInfoCache(data);
OfsSysInfoCacheDAO ofsSysInfoCacheDAO = new OfsSysInfoCacheDAO();
OfsSysInfo ofsSysInfoCache = ofsSysInfoCacheDAO.getOfsSysInfoCacheBySysCode(data.getSyscode());
// 校验receiver
Map map = ofsTodoDataManager.validateReceiver(ofsSysInfoCache, data);
List<OfsTodoData> datas = (List<OfsTodoData>) map.get("datas");
String noexist = (String) map.get("noexist");
String exist = (String) map.get("exist");
AsyncListenerBean asyncListenerBean = new AsyncListenerBean();
asyncListenerBean.setTodoData(data);
asyncListenerBean.setDataList(datas);
asyncListenerBean.setCustom(custom);
//region 判断是否发送消息到mq中
if (InitOfsMqMonitor.isSendmessage) {
return sendTodoDataToMq(data, method, noexist, exist, asyncListenerBean);
}
//endregion 判断是否发送消息到mq中
if (Util.getIntValue(data.getRequestid(), 0) == 0) {
log.info("是否开启雪花算法: " + isSnowflake);
if (!isSnowflake) {
//E9老逻辑requestId没有使用雪花算法
int requestId = ofsTodoDataManager.buildRequestid(data);
data.setRequestid(Util.null2String(requestId));
} else {
//requestId使用雪花算法生成
String requestId = ofsTodoDataManager.buildRequestidForSnowflake(data);
data.setRequestid(requestId);
}
}
// 保存数据
for (OfsTodoData dataNew : datas) {
dataNew.setRequestid(Util.null2String(data.getRequestid()));
// 待办查待办表做更新或者新增同时删除已办数据增加删除ofs_done_data
// 已办查已办表做更新或者新增同时删除待办数据注意ofs_log数据的关联需要修改——通过syscode、flowid、receiver关联数据
String saveResult = ofsTodoDataManager.saveData(ofsSysInfoCache, dataNew);
// 保存自定义字段数据
if (this.isAuto) {
if (custom != null && !custom.isEmpty()) {
// TODO 将原来的数据dataid查出来修改成新的dataid
ofsTodoDataManager.saveOfsCustom(dataNew, custom);
}
}
if ("0".equals(saveResult)) {
if (StringUtils.isBlank(noexist)) {
noexist = dataNew.getReceiver();
} else {
noexist = noexist + "," + dataNew.getReceiver();
}
}
if ("-2".equals(saveResult)) {
if (exist.contains(",")) {
exist = exist.replace(dataNew.getReceiver() + ",", "");
} else {
exist = exist.replace(dataNew.getReceiver(), "");
}
returnMessage += "" + SystemEnv.getHtmlLabelName(10003831, weaver.general.ThreadVarLanguage.getLang()) + "" + data.getRequestname() + "】"
+ SystemEnv.getHtmlLabelName(23084, weaver.general.ThreadVarLanguage.getLang()) + "";
}
}
if (returnMessage.length() > 1) {
returnMessage = returnMessage.substring(1);
}
String OfsLog_OperType = OfsLog.OperType_Check;
String operresult = OfsLog.OperResult_Success;
String isremarkName = ofsTodoDataManager.buildIsRemarkName2(data, method);
// 有不存在的数据,返回提示失败的数据
if (StringUtils.isNotBlank(noexist) && StringUtils.isNotBlank(exist)) {
returnMessage += "" + SystemEnv.getHtmlLabelName(10003854, weaver.general.ThreadVarLanguage.getLang()) + "" + data.getRequestname() + "】" + SystemEnv.getHtmlLabelName(10003855, weaver.general.ThreadVarLanguage.getLang()) + "" + noexist + "】——" + SystemEnv.getHtmlLabelName(10003856, weaver.general.ThreadVarLanguage.getLang()) + "" + ";【" + exist + "】——" + SystemEnv.getHtmlLabelName(10003857, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
OfsLog_OperType = OfsLog.OperType_Check;
operresult = OfsLog.OperResult_Failure;
} else if (StringUtils.isNotBlank(noexist) && StringUtils.isBlank(exist)) {
returnMessage += "" + SystemEnv.getHtmlLabelName(10003854, weaver.general.ThreadVarLanguage.getLang()) + "" + data.getRequestname() + "】" + SystemEnv.getHtmlLabelName(10003855, weaver.general.ThreadVarLanguage.getLang()) + "" + noexist + "】——" + SystemEnv.getHtmlLabelName(10003858, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(563, weaver.general.ThreadVarLanguage.getLang()) + "";
OfsLog_OperType = OfsLog.OperType_Check;
operresult = OfsLog.OperResult_Failure;
} else if (StringUtils.isBlank(noexist) && StringUtils.isBlank(exist)) {
} else {
returnMessage += "" + SystemEnv.getHtmlLabelName(10003854, weaver.general.ThreadVarLanguage.getLang()) + "" + data.getRequestname() + "】," + "【" + exist + "】——" + SystemEnv.getHtmlLabelName(10003857, weaver.general.ThreadVarLanguage.getLang()) + "" + isremarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
}
/*if(OfsLog.OperResult_Failure.equals(operresult)){
saveLog(data.getSysid(),OfsLog.DataType_WfData+ LINK_CHAR + DEFAULT_DATA_ID,OfsLog_OperType,operresult,returnMessage,data);
}*/
return ofsTodoDataManager.buildReceiveTodoRequest(
data.getSyscode(),
OfsLog.DataType_WfData,
OfsLog_OperType,
operresult,
returnMessage
);
}
private Map<String, String> sendTodoDataToMq(OfsTodoData data, String method, String noexist, String exist, AsyncListenerBean asyncListenerBean) {
String returnMessage = "";
String ofsLogOperType = OfsLog.OperType_Check;
String operResult = OfsLog.OperResult_Success;
String isRemarkName = ofsTodoDataManager.buildIsRemarkName2(data, method);
if (StringUtils.isNotBlank(noexist) && StringUtils.isBlank(exist)) {
returnMessage += "" + SystemEnv.getHtmlLabelName(10003854, weaver.general.ThreadVarLanguage.getLang()) + "" + data.getRequestname() + "】" + SystemEnv.getHtmlLabelName(10003855, weaver.general.ThreadVarLanguage.getLang()) + "" + noexist + "】——" + SystemEnv.getHtmlLabelName(10003858, weaver.general.ThreadVarLanguage.getLang()) + "" + isRemarkName + "" + SystemEnv.getHtmlLabelName(563, weaver.general.ThreadVarLanguage.getLang()) + "";
ofsLogOperType = OfsLog.OperType_Check;
operResult = OfsLog.OperResult_Failure;
return ofsTodoDataManager.buildReceiveTodoRequest(
data.getSyscode(),
OfsLog.DataType_WfData,
ofsLogOperType,
operResult,
returnMessage
);
}
// 将同一条流程发送到同一个队列中
int shardingKey = QueueSelector.getShardingKey(data.getSyscode() + data.getFlowid(), queueCount);
String routingkey = queuePrefix + "_" + shardingKey;
log.info("使用的队列为:" + routingkey);
boolean sendMessageFlag = ofsMqSendMessage.sendMessage(JSON.toJSONString(asyncListenerBean), routingkey);
if (!sendMessageFlag) {
return ofsTodoDataManager.buildReceiveTodoRequest(
data.getSyscode(),
OfsLog.DataType_WfData,
ofsLogOperType,
OfsLog.OperResult_Failure,
"流程数据发送到mq中失败"
);
}
// 有不存在的数据,返回提示失败的数据
if (StringUtils.isNotBlank(noexist) && StringUtils.isNotBlank(exist)) {
returnMessage += "" + SystemEnv.getHtmlLabelName(10003854, weaver.general.ThreadVarLanguage.getLang()) + "" + data.getRequestname() + "】" + SystemEnv.getHtmlLabelName(10003855, weaver.general.ThreadVarLanguage.getLang()) + "" + noexist + "】——" + SystemEnv.getHtmlLabelName(10003856, weaver.general.ThreadVarLanguage.getLang()) + "" + ";【" + exist + "】——" + SystemEnv.getHtmlLabelName(10003857, weaver.general.ThreadVarLanguage.getLang()) + "" + isRemarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
ofsLogOperType = OfsLog.OperType_Check;
operResult = OfsLog.OperResult_Failure;
} else if (StringUtils.isBlank(noexist) && StringUtils.isBlank(exist)) {
} else {
returnMessage += "" + SystemEnv.getHtmlLabelName(10003854, weaver.general.ThreadVarLanguage.getLang()) + "" + data.getRequestname() + "】," + "【" + exist + "】——" + SystemEnv.getHtmlLabelName(10003857, weaver.general.ThreadVarLanguage.getLang()) + "" + isRemarkName + "" + SystemEnv.getHtmlLabelName(25008, weaver.general.ThreadVarLanguage.getLang()) + "";
}
returnMessage += "; 流程数据已发送到mq中。";
return ofsTodoDataManager.buildReceiveTodoRequest(
data.getSyscode(),
OfsLog.DataType_WfData,
ofsLogOperType,
operResult,
returnMessage
);
}
public void saveDataByMq(List<OfsTodoData> datas, OfsTodoData data, Map<String, String> custom) {
ofsTodoDataManager = this;
OfsSysInfoCacheDAO ofsSysInfoCacheDAO = new OfsSysInfoCacheDAO();
OfsSysInfo ofsSysInfoCache = ofsSysInfoCacheDAO.getOfsSysInfoCacheBySysCode(data.getSyscode());
if (Util.getIntValue(data.getRequestid(), 0) == 0) {
log.info("是否开启雪花算法: " + isSnowflake);
if (!isSnowflake) {
//E9老逻辑requestId没有使用雪花算法
int requestId = ofsTodoDataManager.buildRequestid(data);
data.setRequestid(Util.null2String(requestId));
} else {
//requestId使用雪花算法生成
String requestId = ofsTodoDataManager.buildRequestidForSnowflake(data);
data.setRequestid(requestId);
}
}
// 保存数据
for (OfsTodoData dataNew : datas) {
dataNew.setRequestid(Util.null2String(data.getRequestid()));
// 待办查待办表做更新或者新增同时删除已办数据增加删除ofs_done_data
// 已办查已办表做更新或者新增同时删除待办数据注意ofs_log数据的关联需要修改——通过syscode、flowid、receiver关联数据
String saveResult = this.saveData(ofsSysInfoCache, dataNew);
// 保存自定义字段数据
if (this.isAuto) {
if (custom != null && !custom.isEmpty()) {
// TODO 将原来的数据dataid查出来修改成新的dataid
this.saveOfsCustom(dataNew, custom);
}
}
}
log.error("流程数据保存成功!!");
}
public void saveOfsCustom(OfsTodoData dataNew, Map<String, String> custom) {
boolean save = ofsCustomDataService.save(dataNew, custom);
/*if(!save){
throw new RuntimeException("保存自定义字段异常");
}*/
}
/**
*
*/
public Map<String, String> deleteRequestInfo(
String syscode,
String flowid
) {
isAnalysis();
OfsTodoData data = new OfsTodoData();
data.setSyscode(syscode);
data.setFlowid(flowid);
// OfsSettingCacheNew ofsSettingCacheNew = new OfsSettingCacheNew();
// ofsSettingCacheNew.next();
// String OfsSetting_isuse = ofsSettingCacheNew.getId();
OfsSettingCacheDAO ofsSettingCacheDAO = new OfsSettingCacheDAO();
OfsSetting ofsSettingCache = ofsSettingCacheDAO.getOfsSettingCache();
String OfsSetting_isuse = ofsSettingCache.getIsuse();
if (!OfsSetting.IsUse_Yes.equals(OfsSetting_isuse)) {//关闭统一待办中心状态
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_IsUse,
OfsLog.OperType_Check,
OfsLog.OperResult_Failure,
"统一待办中心未启用"
);
}
String msg = "";
String result = OfsLog.OperResult_Failure;
if (syscode == null || "".equals(syscode)) {
msg = "" + SystemEnv.getHtmlLabelName(10003846, weaver.general.ThreadVarLanguage.getLang()) + ",syscode" + SystemEnv.getHtmlLabelName(385284, weaver.general.ThreadVarLanguage.getLang()) + "";
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_WfData,
OfsLog.OperType_Del,
result,
msg
);
}
// OfsSysInfoCacheNew ofsSysInfoCacheNew = ofsTodoDataManager.getOfsSysInfoCache(data);
OfsSysInfoCacheDAO ofsSysInfoCacheDAO = new OfsSysInfoCacheDAO();
OfsSysInfo ofsSysInfoCache = ofsSysInfoCacheDAO.getOfsSysInfoCacheBySysCode(data.getSyscode());
if (ofsSysInfoCache == null) {
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_OtherSys,
OfsLog.OperType_Del,
result,
"异构系统标识【" + data.getSyscode() + "】未注册"
);
}
//异构许可ip
String OfsSysInfo_securityip = ofsSysInfoCache.getSecurityip();
// Map<String,String> OfsSysInfoMap = ofsSysInfoService.getOneMap(syscode);
// String OfsSysInfo_securityip = OfsUtils.getStringValueByMapKey(OfsSysInfoMap,"securityip");
if (this.isCheckIP && !checkIp(OfsSysInfo_securityip, this.clientIp)) {
//检测当前IP是否在许可IP范围内
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_OtherSys,
OfsLog.OperType_Check,
OfsLog.OperResult_Failure,
"异构系统标识【" + syscode + "】当前IP" + this.clientIp + ")未授权"
);
}
if (flowid == null || "".equals(flowid)) {
msg = "" + SystemEnv.getHtmlLabelName(10003846, weaver.general.ThreadVarLanguage.getLang()) + ",flowid" + SystemEnv.getHtmlLabelName(385284, weaver.general.ThreadVarLanguage.getLang()) + "";
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_WfData,
OfsLog.OperType_Del,
result,
msg
);
}
/*int tododataCnt = ofsTodoDataService.getTodoDataCnt(syscode,flowid);
if(tododataCnt==0){
msg = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10003846,weaver.general.ThreadVarLanguage.getLang())+","+weaver.systeminfo.SystemEnv.getHtmlLabelName(10003847,weaver.general.ThreadVarLanguage.getLang())+"";
}else{*/
//TODO 删除消息
Set<String> userids = new HashSet<String>();
RecordSet rs1 = new RecordSet();
rs1.executeQuery("select * from ofs_todo_data where syscode = ? and flowid = ?", syscode, flowid);
while (rs1.next()) {
String rs1String = rs1.getString("userid");
if (StringUtils.isNotBlank(rs1String)) {
userids.add(rs1String);
String receiver = rs1.getString("receiver");
Util_DataCache.clearVal(syscode + "_" + flowid + "_" + receiver);
}
}
rs1.executeQuery("select * from ofs_done_data where syscode = ? and flowid = ?", syscode, flowid);
while (rs1.next()) {
String rs1String = rs1.getString("userid");
if (StringUtils.isNotBlank(rs1String)) {
userids.add(rs1String);
String receiver = rs1.getString("receiver");
Util_DataCache.clearVal(syscode + "_" + flowid + "_" + receiver);
}
}
log.error("userids:" + userids);
log.error("userids.size():" + userids.size());
if (userids.size() > 0) {
try {
MessageBean messageBean = Util_Message.createMessage();
messageBean.setUserList(userids);//接收人id
messageBean.setTargetId(syscode + "_" + flowid);
Util_Message.delMessageTargetid(messageBean);
} catch (Exception e) {
e.printStackTrace();
log.error("删除消息异常", e);
}
}
ofsTodoDataService.receiveRequestInfoDelete(syscode, flowid);
result = OfsLog.OperResult_Success;
msg = "" + SystemEnv.getHtmlLabelName(10003848, weaver.general.ThreadVarLanguage.getLang()) + "";
ofsDoneDataService.delete(syscode, flowid);
ofsCustomDataService.delete(syscode, flowid);
//}
/* // TODO 删除数据记录日志
if(result.equals("1")){
saveLog(data.getSysid(),OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID,OfsLog.OperType_Del,OfsLog.OperResult_Success,msg, data);
}else{
saveLog(data.getSysid(),OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID,OfsLog.OperType_Del,OfsLog.OperResult_Failure,msg, data);
}*/
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_WfData,
OfsLog.OperType_Del,
result,
msg
);
}
/**
*
*/
public Map<String, String> deleteUserRequestInfo(
String syscode,
String flowid,
String userid
) {
isAnalysis();
OfsTodoData data = new OfsTodoData();
data.setSyscode(syscode);
data.setFlowid(flowid);
data.setReceiver(userid);
// OfsSettingCacheNew ofsSettingCacheNew = new OfsSettingCacheNew();
// ofsSettingCacheNew.next();
// String OfsSetting_isuse = ofsSettingCacheNew.getId();
OfsSettingCacheDAO ofsSettingCacheDAO = new OfsSettingCacheDAO();
OfsSetting ofsSettingCache = ofsSettingCacheDAO.getOfsSettingCache();
String OfsSetting_isuse = ofsSettingCache.getIsuse();
if (!OfsSetting.IsUse_Yes.equals(OfsSetting_isuse)) {//关闭统一待办中心状态
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_IsUse,
OfsLog.OperType_Check,
OfsLog.OperResult_Failure,
"统一待办中心未启用"
);
}
String msg = "";
String result = OfsLog.OperResult_Failure;
if (StringUtils.isBlank(syscode)) {
msg = "" + SystemEnv.getHtmlLabelName(10003846, weaver.general.ThreadVarLanguage.getLang()) + ",syscode" + SystemEnv.getHtmlLabelName(385284, weaver.general.ThreadVarLanguage.getLang()) + "";
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_WfData,
OfsLog.OperType_Del,
result,
msg
);
}
// OfsSysInfoCacheNew ofsSysInfoCacheNew = ofsTodoDataManager.getOfsSysInfoCache(data);
OfsSysInfoCacheDAO ofsSysInfoCacheDAO = new OfsSysInfoCacheDAO();
OfsSysInfo ofsSysInfoCache = ofsSysInfoCacheDAO.getOfsSysInfoCacheBySysCode(data.getSyscode());
if (ofsSysInfoCache == null) {
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_OtherSys,
OfsLog.OperType_Del,
result,
"异构系统标识【" + data.getSyscode() + "】未注册"
);
}
//异构许可ip
String OfsSysInfo_securityip = ofsSysInfoCache.getSecurityip();
// Map<String,String> OfsSysInfoMap = ofsSysInfoService.getOneMap(syscode);
// String OfsSysInfo_securityip = OfsUtils.getStringValueByMapKey(OfsSysInfoMap,"securityip");
if (this.isCheckIP && !checkIp(OfsSysInfo_securityip, this.clientIp)) {
//检测当前IP是否在许可IP范围内
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_OtherSys,
OfsLog.OperType_Check,
OfsLog.OperResult_Failure,
"异构系统标识【" + syscode + "】当前IP" + this.clientIp + ")未授权"
);
}
if (StringUtils.isBlank(flowid)) {
msg = "" + SystemEnv.getHtmlLabelName(10003846, weaver.general.ThreadVarLanguage.getLang()) + ",flowid" + SystemEnv.getHtmlLabelName(385284, weaver.general.ThreadVarLanguage.getLang()) + "";
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_WfData,
OfsLog.OperType_Del,
result,
msg
);
}
if (StringUtils.isBlank(userid)) {
msg = "" + SystemEnv.getHtmlLabelName(10003846, weaver.general.ThreadVarLanguage.getLang()) + ",userid" + SystemEnv.getHtmlLabelName(385284, weaver.general.ThreadVarLanguage.getLang()) + "";
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_WfData,
OfsLog.OperType_Del,
result,
msg
);
}
/*int tododataCnt = ofsTodoDataService.getTodoDataCnt(syscode,flowid,userid);
if(tododataCnt==0){
msg = ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10003846,weaver.general.ThreadVarLanguage.getLang())+","+weaver.systeminfo.SystemEnv.getHtmlLabelName(10003847,weaver.general.ThreadVarLanguage.getLang())+"";
}else{*/
//TODO 删除消息
String useridReal = ofsSysInfoService.getHrmResourceIdByHrmTransRule(ofsSysInfoCache.getHrmtransrule(), userid);
Set<String> userids = new HashSet<String>();
if (StringUtils.isNotBlank(useridReal)) {
userids.add(useridReal);
} else {
msg = "" + SystemEnv.getHtmlLabelName(10003846, weaver.general.ThreadVarLanguage.getLang()) + ",检测接收人【 " + userid + "】不存在";
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_WfData,
OfsLog.OperType_Del,
result,
msg
);
}
// data = ofsTodoDataService.getOne(syscode, flowid, userid);
// Set<String> userids = new HashSet<String>();
// if(data != null){
// String dataUserid = data.getUserid();
// if(StringUtils.isNotBlank(dataUserid)){
// userids.add(dataUserid);
// }
// }
// TODO 删除自定义字段数据
ofsCustomDataService.delete(syscode, flowid, userid);
log.info("userids:" + userids);
log.info("userids.size():" + userids.size());
if (userids.size() > 0) {
try {
MessageBean messageBean = Util_Message.createMessage();
messageBean.setUserList(userids);//接收人id
messageBean.setTargetId(syscode + "_" + flowid);
Util_Message.delMessageTargetid(messageBean);
} catch (Exception e) {
e.printStackTrace();
log.error("删除消息异常", e);
}
}
ofsTodoDataService.receiveRequestInfoUserDelete(syscode, flowid, useridReal);
result = OfsLog.OperResult_Success;
msg = "" + SystemEnv.getHtmlLabelName(10003848, weaver.general.ThreadVarLanguage.getLang()) + "";
ofsDoneDataService.delete(syscode, flowid, useridReal);
//}
Util_DataCache.clearVal(syscode + "_" + flowid + "_" + useridReal);
// TODO 删除数据记录日志
/*if(result.equals("1")){
saveLog(data.getSysid(),OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID,OfsLog.OperType_Del,OfsLog.OperResult_Success,msg, data);
}else{
saveLog(data.getSysid(),OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID,OfsLog.OperType_Del,OfsLog.OperResult_Failure,msg, data);
}*/
return buildReceiveTodoRequest(
syscode,
OfsLog.DataType_WfData,
OfsLog.OperType_Del,
result,
msg
);
}
/**
* (map)
*/
public Map<String, String> processDoneRequestByMap(Map<String, Object> dataMap) {
// 业务数据
dataMap.put("isremark", OfsTodoData.IsRemark_Done);
dataMap.put("viewtype", OfsTodoData.ViewType_Over);
//TODO 如果已经解析完成不用再次解析
Object custom = dataMap.get("custom");
if (custom instanceof Map) {
} else {
String str = (String) dataMap.get("custom");
Map<String, Object> map = xmlToMap(str);
dataMap.put("custom", map);
}
return this.receiveRequestInfo(dataMap, "done");
}
/**
* json
*/
public String processDoneRequestByJson(String json) {
Map<String, Object> dataMap = this.jsonToMap(json);
Map<String, String> resultMap = this.processDoneRequestByMap(dataMap);
return OfsUtils.mapToJson(resultMap);
}
/**
* xml
*/
public String processDoneRequestByXml(String xml) {
Map<String, Object> dataMap = this.xmlToMap(xml);
Map<String, String> resultMap = this.processDoneRequestByMap(dataMap);
return OfsUtils.mapToXml(resultMap, RESULT_XML_ROOT);
}
/**
* (map)
*/
public Map<String, String> processOverRequestByMap(Map<String, Object> dataMap) {
// 业务数据
dataMap.put("isremark", OfsTodoData.IsRemark_Over);
dataMap.put("viewtype", OfsTodoData.ViewType_Over);
//TODO 如果已经解析完成不用再次解析
Object custom = dataMap.get("custom");
if (custom instanceof Map) {
} else {
String str = (String) dataMap.get("custom");
Map<String, Object> map = xmlToMap(str);
dataMap.put("custom", map);
}
return this.receiveRequestInfo(dataMap, "over");
}
/**
* json
*/
public String processOverRequestByJson(String json) {
Map<String, Object> dataMap = this.jsonToMap(json);
Map<String, String> resultMap = this.processOverRequestByMap(dataMap);
return OfsUtils.mapToJson(resultMap);
}
/**
* (xml)
*/
public String processOverRequestByXml(String xml) {
Map<String, Object> dataMap = this.xmlToMap(xml);
Map<String, String> resultMap = this.processOverRequestByMap(dataMap);
return OfsUtils.mapToXml(resultMap, RESULT_XML_ROOT);
}
/**
* ip
* securityip访
* securityipclientIpsecurityip
*
* @param securityip ip
* 访ip
* ip
*/
public boolean checkIp(String securityip, String clientIp) {
//return ("," + securityip + ",").indexOf("," + clientIp + ",") > -1;
log.info("securityip:" + securityip);
log.info("clientIp:" + clientIp);
String[] validIPs = securityip.split(",");
Boolean checkIp = CheckIP.checkIPs(validIPs, clientIp);
log.info("checkIp:" + checkIp);
return checkIp;
}
public String getEntranceUrl(String entranceurl, String OfsTodoData_id) {
String url = "";
String param = "tododataid=" + OfsTodoData_id;
if (!"".equals(entranceurl)) {
if (entranceurl.contains("?")) {
url = entranceurl + "&" + param;
} else {
url = entranceurl + "?" + param;
}
}
return url;
}
private BatchReceiveRequestBean addOfsTodoDataList(BatchReceiveRequestBean bean, Map<String, Object> dataMap) {
OfsTodoData ofsTodoData = ofsTodoDataManager.packageData(dataMap);
bean.getOfsTodoDataList().add(ofsTodoData);
// 如果没有requestId
/*if (bean.getRequestId() == 0){
//校验数据完整生成 requestId
Map<String, String> validate = ofsTodoDataManager.validate(ofsTodoData,"info");
if (validate == null){
bean.setRequestId(ofsTodoDataManager.buildRequestid(ofsTodoData));
}
}*/
return bean;
}
private BatchReceiveRequestBean getBatchReceiveRequestBean(Map<String, Object> dataMap) {
BatchReceiveRequestBean bean = new BatchReceiveRequestBean();
List<OfsTodoData> list = new ArrayList<>();
OfsTodoData ofsTodoData = ofsTodoDataManager.packageData(dataMap);
list.add(ofsTodoData);
bean.setOfsTodoDataList(list);
//校验数据完整生成 requestId
/*Map<String, String> validate = ofsTodoDataManager.validate(ofsTodoData,"info");
if (validate == null){
bean.setRequestId(ofsTodoDataManager.buildRequestid(ofsTodoData));
}*/
return bean;
}
/**
* syscodeflowidjson_arr
* #599419
*
*/
public String batchReceiveRequestInfoByJson(String json) {
isAnalysis();
Map<String, BatchReceiveRequestBean> requestMap = new HashMap<String, BatchReceiveRequestBean>();
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
JSONArray arr = JSONArray.fromObject(json);
if (arr != null) {
for (int i = 0; i < arr.size(); i++) {
Map<String, Object> dataMap = jsonToMap(arr.getJSONObject(i).toString());
/*String syscode = Util.null2String((String)dataMap.get("syscode"));
String flowId = Util.null2String((String)dataMap.get("flowid"));
StringBuffer mapKey = new StringBuffer() ;
mapKey.append(syscode).append("_").append(flowId) ;
BatchReceiveRequestBean batchReceiveRequestBean = requestMap.get(mapKey.toString()) ;
if (batchReceiveRequestBean != null && batchReceiveRequestBean.validate() ){
this.addOfsTodoDataList(batchReceiveRequestBean , dataMap) ;
}else {
requestMap.put(mapKey.toString() , this.getBatchReceiveRequestBean(dataMap)) ;
}*/
/*Map<String,Object> dataMap = jsonToMap(arr.getJSONObject(i).toString());
Map<String, String> result = this.receiveRequestInfo(dataMap,"info");//获取要存储数据库的数据
list.add(result);
String syscode = Util.null2String((String)dataMap.get("syscode"));
String flowid = Util.null2String((String)dataMap.get("flowid"));
String isremark = Util.null2String((String)dataMap.get("isremark"));
ofsTodoDataManager.batchProcessOverRequstComplet(syscode, flowid, isremark);//批量处理办结情况*/
Map<String, String> result = this.receiveRequestInfo(dataMap, "info");//获取要存储数据库的数据
list.add(result);
}
}
/*for (String key : requestMap.keySet()){
BatchReceiveRequestBean bean = requestMap.get(key) ;
if (bean != null){
for (int i = 0 ; i< bean.getOfsTodoDataList().size() ; i++){
Map<String, String> result = this.receiveRequestInfo(bean.getOfsTodoData(i),"info");//获取要存储数据库的数据
list.add(result);
}
}
}*/
return JSON.toJSONString(list);
}
public void batchProcessOverRequstComplet(String syscode, String flowid, String isremark) {
//将所有已办且iscomplete=0变更为iscomplete=1不处理待办情况
if (isremark.equals(OfsTodoData.IsRemark_Done)) {//已办的处理
ofsTodoDataService.processOverRequestComplete(syscode, flowid);
} else if (isremark.equals(OfsTodoData.IsRemark_Over)) {//办结的处理
ofsTodoDataService.processOverRequestComplete(syscode, flowid);
}
}
/**
*
*/
public String batchDeleteUserRequestInfoByJson(String json) {
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
JSONArray json_arr = JSONArray.fromObject(json);
if (json_arr != null) {
for (int i = 0; i < json_arr.size(); i++) {
Map<String, Object> dataMap = jsonToMap(json_arr.getJSONObject(i).toString());
//批量删除,返回每一个删除结果
Map<String, String> map = this.deleteUserRequestInfoByMap(dataMap);
list.add(map);
}
}
return JSON.toJSONString(list);
}
//TODO 抄送
/**
* (json)
*/
public String receiveCCRequestByJson(String json) {
Map<String, Object> dataMap = this.jsonToMap(json);
Map<String, String> resultMap = this.receiveCCRequestByMap(dataMap);
String resultJson = OfsUtils.mapToJson(resultMap);
return resultJson;
}
/**
* (xml)
*/
public String receiveCCRequestByXml(String xml) {
Map<String, Object> dataMap = this.xmlToMap(xml);
Map<String, String> resultMap = this.receiveCCRequestByMap(dataMap);
String toXml = OfsUtils.mapToXml(resultMap, RESULT_XML_ROOT);
return toXml;
}
/**
*
*/
public Map<String, String> receiveCCRequestByMap(Map<String, Object> dataMap) {
// 业务数据
dataMap.put("isremark", "8");
dataMap.put("viewtype", OfsTodoData.ViewType_None);
//TODO 如果已经解析完成不用再次解析
Object custom = dataMap.get("custom");
if (custom instanceof Map) {
} else {
String str = (String) dataMap.get("custom");
Map<String, Object> map = xmlToMap(str);
dataMap.put("custom", map);
}
return this.receiveRequestInfo(dataMap, "cc");
}
//TODO 已读
/**
* (json)
*/
public String receiveReadRequestByJson(String json) {
Map<String, Object> dataMap = this.jsonToMap(json);
Map<String, String> resultMap = this.receiveReadRequestByMap(dataMap);
String resultJson = OfsUtils.mapToJson(resultMap);
return resultJson;
}
/**
* (xml)
*/
public String receiveReadRequestByXml(String xml) {
Map<String, Object> dataMap = this.xmlToMap(xml);
Map<String, String> resultMap = this.receiveReadRequestByMap(dataMap);
String toXml = OfsUtils.mapToXml(resultMap, RESULT_XML_ROOT);
return toXml;
}
/**
*
*/
public Map<String, String> receiveReadRequestByMap(Map<String, Object> dataMap) {
// 业务数据
String isremark = Util.null2String((String) dataMap.get("isremark"));
/*if(StringUtils.isBlank(isremark)){
dataMap.put("isremark","8");
}*/
dataMap.put("viewtype", "1");
//TODO 如果已经解析完成不用再次解析
Object custom = dataMap.get("custom");
if (custom instanceof Map) {
} else {
String str = (String) dataMap.get("custom");
Map<String, Object> map = xmlToMap(str);
dataMap.put("custom", map);
}
return this.receiveRequestInfo(dataMap, "read");
}
public OfsTodoData packageData(Map<String, Object> dataMap) {
String syscode = Util.null2String((String) dataMap.get("syscode"));
String flowid = Util.null2String((String) dataMap.get("flowid"));
String requestname = Util.null2String((String) dataMap.get("requestname"));
String workflowname = Util.null2String((String) dataMap.get("workflowname"));
String nodename = Util.null2String((String) dataMap.get("nodename"));
String pcurl = Util.null2String((String) dataMap.get("pcurl"));
String appurl = Util.null2String((String) dataMap.get("appurl"));
String isremark = Util.null2String((String) dataMap.get("isremark"));
String viewtype = Util.null2String((String) dataMap.get("viewtype"));
String createdatetime = Util.null2String((String) dataMap.get("createdatetime"));
String creator = Util.null2String((String) dataMap.get("creator"));
String receiver = Util.null2String((String) dataMap.get("receiver"));
String receivedatetime = Util.null2String((String) dataMap.get("receivedatetime"));
String receivets = Util.null2String((String) dataMap.get("receivets"));
String requestlevel = Util.null2String((String) dataMap.get("requestlevel"));
//String isauto = Util.null2String((String)dataMap.get("isauto"));
if (StringUtils.isBlank(receivets)) {
receivets = String.valueOf(System.currentTimeMillis());
}
String createtime = "";
String receivetime = "";
String createdate = "";
String receivedate = "";
if (StringUtils.isNotBlank(createdatetime) && createdatetime.length() == 19) {
createdate = createdatetime.substring(0, 10);
createtime = createdatetime.length() > 11 ? createdatetime.substring(11) : createtime;
} else {
createdate = createdatetime;
}
if (StringUtils.isNotBlank(receivedatetime) && receivedatetime.length() == 19) {
receivedate = receivedatetime.substring(0, 10);
receivetime = receivedatetime.length() > 11 ? receivedatetime.substring(11) : receivetime;
} else {
receivedate = receivedatetime;
}
/*if(StringUtils.isBlank(requestname)){
requestname = ofsRequestBaseService.getRequestname(syscode,flowid);
}*/
// 获取自定义字段的数据
Map<String, String> custom = (Map<String, String>) dataMap.get("custom");
OfsTodoData data = new OfsTodoData();
data.setSyscode(syscode);
data.setFlowid(flowid);
data.setRequestname(requestname);
data.setWorkflowname(workflowname);
data.setNodename(nodename);
data.setPcurl(pcurl);
data.setAppurl(appurl);
data.setIsremark(isremark);
data.setViewtype(viewtype);
data.setCreator(creator);
data.setReceiver(receiver);
data.setCreatedate(createdate);
data.setCreatetime(createtime);
data.setReceivedate(receivedate);
data.setReceivetime(receivetime);
data.setReceivets(receivets);
data.setRequestlevel(requestlevel);
//data.setIsauto(isauto);
data.setCustom(custom);
return data;
}
// TODO receiver 接收多个人,返回那些人不存在
public Map validateReceiver(OfsSysInfo ofsSysInfoCache, OfsTodoData data) {
List<OfsTodoData> list = new ArrayList<>();
String requestname = data.getRequestname();
String receiver = data.getReceiver();
String[] split = receiver.split(",");
//人员转换规则
String OfsSysInfo_HrmTransRule = ofsSysInfoCache.getHrmtransrule();
// 存在的接收人
String exist = "";
// 不存在的接收人
String noexist = "";
for (String rece : split) {
String userid = ofsSysInfoService.getHrmResourceIdByHrmTransRule(OfsSysInfo_HrmTransRule, rece);
if (Util.null2String(userid).equals("0") || StringUtils.isEmpty(userid)) {
//保存失败,记录系统日志:流程数据-检测-失败-流程数据【"+requestname+"】检测接收人不存在
noexist += "," + rece;
data.setReceiver(rece);
data.setUserid("0");
ofsTodoDataManager.saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + data.getId(), OfsLog.OperType_Check, OfsLog.OperResult_Failure, "流程数据【" + requestname + "】检测接收人【" + rece + "】不存在", data);
} else {
exist += "," + rece;
// 克隆一个对象修改接收人userid和receiver
OfsTodoData obj = JSON.parseObject(JSON.toJSONString(data), OfsTodoData.class);
obj.setUserid(userid);
obj.setReceiver(rece);
list.add(obj);
}
}
if (exist.length() > 0) {
exist = exist.substring(1);
}
if (noexist.length() > 0) {
noexist = noexist.substring(1);
}
Map map = new HashMap();
map.put("datas", list);
map.put("exist", exist);
map.put("noexist", noexist);
return map;
}
@Override
public Map<String, String> validate(OfsSysInfoCacheNew ofsSysInfoCacheNew, OfsTodoData data, String method) {
return null;
}
public Map<String, String> validate(OfsTodoData data, String method) {
String receivets = data.getReceivets();
String receiver = data.getReceiver();
String requestname = data.getRequestname();
String creator = data.getCreator();
String syscode = data.getSyscode();
String flowid = data.getFlowid();
String isremark = data.getIsremark();
String viewtype = data.getViewtype();
String workflowname = data.getWorkflowname();
String requestlevel = data.getRequestlevel();
// OfsSettingCacheNew ofsSettingCacheNew = new OfsSettingCacheNew();
// ofsSettingCacheNew.next();
// String OfsSetting_isuse = ofsSettingCacheNew.getId();
OfsSettingCacheDAO ofsSettingCacheDAO = new OfsSettingCacheDAO();
OfsSetting ofsSettingCache = ofsSettingCacheDAO.getOfsSettingCache();
String OfsSetting_isuse = ofsSettingCache.getIsuse();
if (!OfsSetting.IsUse_Yes.equals(OfsSetting_isuse)) {//关闭统一待办中心状态
Map<String, String> OfsSettingMap = ofsSettingService.getOneMap();
OfsSetting_isuse = OfsUtils.getStringValueByMapKey(OfsSettingMap, "isuse", OfsSetting.IsUse_No);//是否启用统一待办中心状态
if (!OfsSetting.IsUse_Yes.equals(OfsSetting_isuse))
return saveLog("0", OfsLog.DataType_IsUse + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "统一待办中心未启用", data);
}
/*int syscodeCnt = this.ofsSysInfoService.getCnt(syscode);//获取指定异构系统标识的数量
if(syscodeCnt == 0){//记录系统日志:异构系统-检测-失败-异构系统标识【XXXX】未注册
return saveLog(data.getSysid(),OfsLog.DataType_OtherSys + LINK_CHAR + DEFAULT_DATA_ID,OfsLog.OperType_Check,OfsLog.OperResult_Failure,"异构系统标识【"+syscode+"】未注册", data);
}*/
// OfsSysInfoCacheNew ofsSysInfoCacheNew = ofsTodoDataManager.getOfsSysInfoCache(data);
OfsSysInfoCacheDAO ofsSysInfoCacheDAO = new OfsSysInfoCacheDAO();
OfsSysInfo ofsSysInfoCache = ofsSysInfoCacheDAO.getOfsSysInfoCacheBySysCode(syscode);
String OfsSysInfo_HrmTransRule;
String OfsSysInfo_securityip;
int OfsSysInfo_receivewfdata;
int OfsSysInfo_autocreatewftype;
int OfsSysInfo_sysid;
if (ofsSysInfoCache == null) {
int syscodeCnt = ofsSysInfoService.getCnt(syscode);//获取指定异构系统标识的数量
if (syscodeCnt == 0) {//记录系统日志:异构系统-检测-失败-异构系统标识【XXXX】未注册
return saveLog("0", OfsLog.DataType_OtherSys + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "异构系统标识【" + data.getSyscode() + "】未注册", data);
} else {
Map<String, String> OfsSysInfoMap = ofsSysInfoService.getOneMap(syscode);
OfsSysInfo_sysid = OfsUtils.getIntValueByMapKey(OfsSysInfoMap, "sysid", OfsSysInfo.Default_SysId);//异构系统id
data.setSysid(OfsSysInfo_sysid + "");
OfsSysInfo_HrmTransRule = OfsUtils.getStringValueByMapKey(OfsSysInfoMap, "hrmtransrule");//人员转换规则
OfsSysInfo_securityip = OfsUtils.getStringValueByMapKey(OfsSysInfoMap, "securityip");//异构许可ip
OfsSysInfo_receivewfdata = OfsUtils.getIntValueByMapKey(OfsSysInfoMap, "receivewfdata", OfsSysInfo.ReceiveWfData_No);//异构系统允许接收流程数据
OfsSysInfo_autocreatewftype = OfsUtils.getIntValueByMapKey(OfsSysInfoMap, "autocreatewftype", OfsSysInfo.AutoCreateWfType_No);//异构系统自动创建流程类型
}
} else {
//异构系统id
OfsSysInfo_sysid = Util.getIntValue(ofsSysInfoCache.getSysid(), 0);
if (OfsSysInfo_sysid == 0) {
OfsSysInfo_sysid = Util.getIntValue(ofsSysInfoService.getOneBean(data.getSyscode()).getSysid());
}
data.setSysid(OfsSysInfo_sysid + "");
//人员转换规则
OfsSysInfo_HrmTransRule = ofsSysInfoCache.getHrmtransrule();
//异构许可ip
OfsSysInfo_securityip = ofsSysInfoCache.getSecurityip();
//异构系统允许接收流程数据
OfsSysInfo_receivewfdata = Util.getIntValue(ofsSysInfoCache.getReceivewfdata(), OfsSysInfo.ReceiveWfData_No);
OfsSysInfo_autocreatewftype = Util.getIntValue(ofsSysInfoCache.getAutocreatewftype(), OfsSysInfo.AutoCreateWfType_No);
}
//校验时间戳
Pattern pattern = Pattern.compile("[0-9]*");
boolean matchesReceivets = pattern.matcher(receivets).matches();
if (matchesReceivets) {
} else {
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "时间戳不合法,当前时间戳为:" + receivets, data);
}
//校验紧急程度字段
boolean matchesRequestlevel = pattern.matcher(requestlevel).matches();
if (matchesRequestlevel) {
} else {
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "紧急程度数据不合法,当前值为:" + requestlevel, data);
}
//保存失败,记录系统日志:流程数据-检测-失败-流程数据【"+requestname+"】检测接收人为空
if (StringUtils.isBlank(receiver)) {
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "流程数据【" + requestname + "】检测接收人为空", data);
}
if ("read".equals(method)) {
} else {
if (("0".equals(isremark) || "8".equals(isremark) || StringUtils.isNotBlank(data.getCreatedate() + " " + data.getCreatetime())) && !checkDateTime(data.getCreatedate() + " " + data.getCreatetime())) {
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "创建日期不合法合法格式yyyy-mm-dd hh:MM:ss", data);
}
if (("0".equals(isremark) || "8".equals(isremark) || StringUtils.isNotBlank(data.getReceivedate() + " " + data.getReceivetime())) && !checkDateTime(data.getReceivedate() + " " + data.getReceivetime())) {//校验接收日期格式
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "接收日期不合法合法格式yyyy-mm-dd hh:MM:ss", data);
}
}
if (StringUtils.isBlank(flowid)) {//流程id不能为空
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "flowid不能为空", data);
}
if (method.equals("read") || method.equals("todo") || method.equals("done") || method.equals("over") || method.equals("cc")) {
} else {
//检测isremark不合法
if (!isremark.equals(OfsTodoData.IsRemark_Todo) &&
!isremark.equals(OfsTodoData.IsRemark_Done) &&
!isremark.equals(OfsTodoData.IsRemark_Over) &&
!isremark.equals("8")) {
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "流程数据【" + requestname + "】检测isremark不合法0待办|2已办|4办结|8抄送", data);
}
//检查viewtype值是否合法
if (!viewtype.equals(OfsTodoData.ViewType_None) && !viewtype.equals(OfsTodoData.ViewType_Over)) {
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "流程数据【" + requestname + "】检测viewtype不合法0未读|1已读", data);
}
}
if (StringUtils.isBlank(workflowname)) {//记录系统日志:流程类型-检测-失败-流程类型未填写
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "流程类型未填写", data);
}
if (StringUtils.isBlank(requestname)) {//保存失败,记录系统日志:流程数据-检测-失败-流程标题未填写
return saveLog(data.getSysid(), OfsLog.DataType_WfData + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "流程标题未填写", data);
}
//创建人不校验给默认值
String creatorid = ofsSysInfoService.getHrmResourceIdByHrmTransRule(OfsSysInfo_HrmTransRule, creator);
if (StringUtils.isNotBlank(creator)) {
data.setCreatorid(creatorid);
}
// Map<String,String> OfsSysInfoMap = ofsSysInfoService.getOneMap(syscode);
// OfsSysInfo_securityip = OfsUtils.getStringValueByMapKey(OfsSysInfoMap,"securityip");
if (this.isCheckIP && !checkIp(OfsSysInfo_securityip, this.clientIp)) {
//检测当前IP是否在许可IP范围内
return saveLog(data.getSysid(), OfsLog.DataType_OtherSys + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "异构系统标识【" + syscode + "】当前IP" + this.clientIp + ")未授权", data);
}
if (OfsSysInfo_receivewfdata == 0) {
return saveLog(data.getSysid(), OfsLog.DataType_OtherSys + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "异构系统标识【" + syscode + "】不允许接收流程数据", data);
}
//是否新流程类型1旧0新
int workflownameCnt = ofsWorkflowService.getCnt(OfsSysInfo_sysid, workflowname);
//异构系统自动创建流程类型
//int OfsSysInfo_autocreatewftype = Util.getIntValue(ofsSysInfoCacheNew.getAutocreatewftype(),OfsSysInfo.AutoCreateWfType_No);
if (OfsSysInfo_autocreatewftype == 0 && workflownameCnt == 0) {//异构系统的【自动创建流程类型】关闭 并且 流程类型不存在
return saveLog(data.getSysid(), OfsLog.DataType_OtherSys + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "异构系统标识【" + syscode + "】不允许创建流程类型", data);
}
//TODO 异构系统的【自动创建流程类型】开启 并且 流程类型不存在,自动新增流程类型
//TODO 根据异构系统id和流程类型名称获取异构系统流程类型信息
Map<String, String> result = saveWorkflowtype(OfsSysInfo_autocreatewftype,
workflownameCnt,
OfsSysInfo_sysid,
OfsSysInfo_receivewfdata, workflowname, flowid);
if (StringUtils.isNotBlank(result.get("msg"))) {
data.setUserid("1");
if ("false".equals(result.get("flag"))) {
saveLog(data.getSysid(), OfsLog.DataType_WfType + LINK_CHAR + data.getId(), result.get("type"), OfsLog.OperResult_Failure, result.get("msg"), data);
} else {
saveLog(data.getSysid(), OfsLog.DataType_WfType + LINK_CHAR + data.getId(), result.get("type"), OfsLog.OperResult_Success, result.get("msg"), data);
}
data.setUserid("");
}
//根据异构系统id和流程类型名称获取异构系统流程类型信息
// Map<String,String> OfsWorkflowMap = ofsWorkflowService.getOneMap(OfsSysInfo_sysid, workflowname);
// int OfsWorkflow_workflowid = OfsUtils.getIntValueByMapKey(OfsWorkflowMap,"workflowid",OfsWorkflow.Default_WorkflowId);//获取异构系统流程类型id
// int OfsWorkflow_receivewfdata = OfsUtils.getIntValueByMapKey(OfsWorkflowMap,"receivewfdata",OfsWorkflow.ReceiveWfData_No);//接收流程数据
int OfsWorkflow_workflowid = OfsWorkflow.Default_WorkflowId;//获取异构系统流程类型id
int OfsWorkflow_receivewfdata = OfsWorkflow.ReceiveWfData_No;//接收流程数据
//根据异构系统id和流程类型名称获取异构系统流程类型信息
OfsWorkflowCacheDAO ofsWorkflowCacheDAO = new OfsWorkflowCacheDAO();
OfsWorkflow ofsWorkflowCache = ofsWorkflowCacheDAO.getOfsWorkflowCache(String.valueOf(OfsSysInfo_sysid), workflowname);
if (!Objects.isNull(ofsWorkflowCache)) {
if (StringUtils.isNotBlank(ofsWorkflowCache.getWorkflowid())) {
OfsWorkflow_workflowid = Integer.parseInt(ofsWorkflowCache.getWorkflowid());
}
if (StringUtils.isNotBlank(ofsWorkflowCache.getReceivewfdata())) {
OfsWorkflow_receivewfdata = Integer.parseInt(ofsWorkflowCache.getReceivewfdata());
}
}
if ("true".equals(result.get("flag"))) {
defaultSelect(syscode, OfsWorkflow_workflowid + "");
}
if (OfsWorkflow_receivewfdata == 0) {
return saveLog(data.getSysid(), OfsLog.DataType_OtherSys + LINK_CHAR + DEFAULT_DATA_ID, OfsLog.OperType_Check, OfsLog.OperResult_Failure, "流程类型【" + workflowname + "】不允许接收流程数据", data);
}
// 校验通过
data.setWorkflowid(OfsWorkflow_workflowid + "");
//data.setFlowguid(data.getSyscode() + LINK_CHAR + OfsWorkflow_workflowid + LINK_CHAR + data.getFlowid() + LINK_CHAR + data.getReceiver());
//data.setId(ofsTodoDataService.getTodoDataId(syscode,flowid,receiver)+"");
//1 校验自定义字段
//2 先校验ofs_todo_data表数据再校验自定义字段的数据是否启用是否必填
//3 先保存ofs_todo_data表数据保存成功之后保存自定义字段的数据
return null;
}
public Map<String, String> saveWorkflowtype(int OfsSysInfo_autocreatewftype,
int workflownameCnt,
int OfsSysInfo_sysid,
int OfsSysInfo_receivewfdata,
String workflowname, String flowid) {
String msg = "";
String flag = "false";
String type = "";
if (OfsSysInfo_autocreatewftype == 1 && workflownameCnt == 0) {//异构系统的【自动创建流程类型】开启 并且 流程类型不存在
//流程类型不存在
//相同flowid历史数据中的流程类型是否存在
//List<HashMap<String, String>> historyOfsWfTypeExistList = ofsTodoDataService.getHistoryOfsWfTypeExistList(OfsSysInfo_sysid+"",workflowname,flowid);
//历史数据中的流程类型不存在
//if(historyOfsWfTypeExistList.size()==0){//不存在,自动新增
//创建流程类型;
boolean ofswftypeInsertFlag = ofsWorkflowService.insert(
OfsSysInfo_sysid + "", workflowname, OfsSysInfo_receivewfdata + "", OfsWorkflow.Cancel_No + "", SYSADMIN_ID);
if (ofswftypeInsertFlag) {//记录系统日志:流程类型-自动创建-成功
//自动创建流程成功后要重新获取流程类型数据
msg = "" + SystemEnv.getHtmlLabelName(10003859, weaver.general.ThreadVarLanguage.getLang()) + "" + workflowname + "】" + SystemEnv.getHtmlLabelName(10003860, weaver.general.ThreadVarLanguage.getLang()) + "";
flag = "true";
type = OfsLog.OperType_AutoNew;
} else {//记录系统日志:流程类型-自动创建-失败-流程类型【XXXX】保存失败
msg = "" + SystemEnv.getHtmlLabelName(10003859, weaver.general.ThreadVarLanguage.getLang()) + "" + workflowname + "】" + SystemEnv.getHtmlLabelName(10003861, weaver.general.ThreadVarLanguage.getLang()) + "";
flag = "false";
type = OfsLog.OperType_AutoNew;
}
//}else{//存在,自动更新
//更新流程类型;
// boolean ofswftypeUpdateFlag = ofsWorkflowService.updateWorkflowName(OfsSysInfo_sysid+"",workflowname,SYSADMIN_ID,historyOfsWfTypeExistList);
// if(ofswftypeUpdateFlag){//记录系统日志:流程类型-自动创建-成功
//自动创建流程成功后要重新获取流程类型数据
// msg = ""+ SystemEnv.getHtmlLabelName(10003859,weaver.general.ThreadVarLanguage.getLang())+""+workflowname+"】"+ SystemEnv.getHtmlLabelName(10003862,weaver.general.ThreadVarLanguage.getLang())+"";
// flag = "true";
// type = OfsLog.OperType_AutoEdit;
// }else{//记录系统日志:流程类型-自动创建-失败-流程类型【XXXX】保存失败
// msg = ""+ SystemEnv.getHtmlLabelName(10003859,weaver.general.ThreadVarLanguage.getLang())+""+workflowname+"】"+ SystemEnv.getHtmlLabelName(10003863,weaver.general.ThreadVarLanguage.getLang())+"";
// flag = "false";
// type = OfsLog.OperType_AutoEdit;
// }
//}
// Map<String, String> map = ofsWorkflowService.getOneMap(OfsSysInfo_sysid, workflowname);
// OfsWorkflowCacheNew ofsWorkflowCacheNew = new OfsWorkflowCacheNew();
// ofsWorkflowCacheNew.addCacheByKey(map.get("workflowid"));
OfsWorkflowCacheDAO ofsWorkflowCacheDAO = new OfsWorkflowCacheDAO();
ofsWorkflowCacheDAO.addOfsWorkflowCache(String.valueOf(OfsSysInfo_sysid), workflowname);
}
Map<String, String> result = new HashMap<String, String>();
result.put("msg", msg);
result.put("flag", flag);
result.put("type", type);
return result;
}
private OfsTodoDataUtils ofsTodoDataUtils = new OfsTodoDataUtils();
public void sendMessage(OfsSysInfo ofsSysInfoCache, String sysname, OfsTodoData data) {
//String OfsSysInfo_pcprefixurl = ofsSysInfoCacheNew.getPcprefixurl();//PC地址前缀
//String OfsSysInfo_appprefixurl = ofsSysInfoCacheNew.getAppprefixurl();//APP地址前缀
// OfsSettingCacheNew ofsSettingCacheNew = new OfsSettingCacheNew();
// ofsSettingCacheNew.next();
OfsSettingCacheDAO ofsSettingCacheDAO = new OfsSettingCacheDAO();
OfsSetting ofsSettingCache = ofsSettingCacheDAO.getOfsSettingCache();
String pcurl = data.getPcurl();
String appurl = data.getAppurl();
//待办才发送消息提醒
/*
String remindPcUrl = (OfsSysInfo_pcprefixurl+""+pcurl);
String remindAppUrl = (OfsSysInfo_appprefixurl+""+appurl);
//TODO 如果有中转页面,推送给消息中心的是中转页面地址
//String sqlStr = "select * from SystemSet";
//rsrtx.executeSql(sqlStr);
//rsrtx.next();
//String oaaddress = rsrtx.getString("oaaddress");
String appentranceurl = ofsSysInfoCacheNew.getAppentranceurl();
if(StringUtils.isNotBlank(appentranceurl)){
remindAppUrl = appurl;
}
String pcentranceurl = ofsSysInfoCacheNew.getPcentranceurl();
if(StringUtils.isNotBlank(pcentranceurl)){
remindPcUrl = pcurl;
}
if(pcurl.startsWith("http") || pcurl.startsWith("https")){
remindPcUrl = pcurl;
}
if(appurl.startsWith("http") || appurl.startsWith("https")){
remindAppUrl = appurl;
}*/
String remindPcUrl = this.ofsTodoDataUtils.getTodoURL(data, "pc") + "&_weaverofsmsg=1&_ec_ismobile=true";
String remindAppUrl = this.ofsTodoDataUtils.getTodoURL(data, "app") + "&_weaverofsmsg=1&_ec_ismobile=true";
log.error("消息通知 app访问地址" + remindAppUrl);
log.error("消息通知 pc访问地址" + remindPcUrl);
RTXConfig config = new RTXConfig();
String RtxOrElinkType = config.getPorp(RTXConfig.RtxOrElinkType);//IM提醒类型
String isusedtx = config.getPorp("isusedtx");//开启IM集成
log.error("=======================sendMessage start....====================");
RemindMessage msg = new RemindMessage();
data.setPcurl(remindPcUrl);
data.setAppurl(remindAppUrl);
// msg.setOfsSettingCacheNew(ofsSettingCacheNew);
// msg.setOfsSysInfoCacheNew(ofsSysInfoCacheNew);
msg.setOfsSetting(ofsSettingCache);
msg.setOfsSysInfo(ofsSysInfoCache);
msg.setData(data);
msg.setSysname(ofsSysInfoCache.getSysshortname());
String syscode = ofsSysInfoCache.getSyscode();
RecordSet rsrtx = new RecordSet();
rsrtx.executeQuery("select * from Ofs_sysinfo_remind where syscode = ?", syscode);
int isuse = 0;
int ismsgcenter = 0;
int isim = 0;
int isshortmsg = 0;
int iscustom = 0;
String customclass = "";
String channel = "";
if (rsrtx.next()) {
isuse = rsrtx.getInt("isuse");
ismsgcenter = rsrtx.getInt("ismsgcenter");
isim = rsrtx.getInt("isim");
isshortmsg = rsrtx.getInt("isshortmsg");
iscustom = rsrtx.getInt("iscustom");
customclass = rsrtx.getString("customclass");
channel = rsrtx.getString("channel");
if (isuse == 1) {
msg.setIsuse(isuse);
if (ismsgcenter == 1) {
msg.setChannel(channel);
ofsTodoDataManager.sendMsgCenter(msg, ismsgcenter);
}
if (isim == 1) {
OfsRemindOtherManagerNew ofsRemindOtherManagerNew = new OfsRemindOtherManagerNew();
ofsRemindOtherManagerNew.sendMsg(msg);
OfsRemindRTXManagerNew ofsRemindRTXManagerNew = new OfsRemindRTXManagerNew();
ofsRemindRTXManagerNew.sendMsg(msg);
OfsRemindElinkManagerNew ofsRemindElinkManagerNew = new OfsRemindElinkManagerNew();
ofsRemindElinkManagerNew.sendMsg(msg);
}
if (isshortmsg == 1) {
OfsRemindShortMessage ofsRemindShortMessag = new OfsRemindShortMessage();
ofsRemindShortMessag.sendMsg(msg);
}
if (iscustom == 1) {
String className = customclass;
try {
Class<?> clazz = Class.forName(className);
OfsRemind o = (OfsRemind) clazz.newInstance();
o.sendMsg(msg);
} catch (Exception e) {
log.info("调用自定义接口异常", e);
}
}
} else {
//todo 用消息中心了
ofsTodoDataManager.sendMsgCenter(msg, 0);
//提醒到IM
String OfsParam_remindim = Util.null2String(ofsSettingCache.getRemindim(), OfsSetting.RemindIM_No);
if (isusedtx.equals("1") && OfsSetting.RemindIM_Yes.equals(OfsParam_remindim)) {//开启提醒到IM
OfsRemindOtherManagerNew ofsRemindOtherManagerNew = new OfsRemindOtherManagerNew();
ofsRemindOtherManagerNew.sendMsg(msg);
OfsRemindRTXManagerNew ofsRemindRTXManagerNew = new OfsRemindRTXManagerNew();
ofsRemindRTXManagerNew.sendMsg(msg);
OfsRemindElinkManagerNew ofsRemindElinkManagerNew = new OfsRemindElinkManagerNew();
ofsRemindElinkManagerNew.sendMsg(msg);
}
// 推送到自定义消息接口
String customreminders = ofsSettingCache.getCustomreminders();
if ("1".equals(customreminders)) {
String className = ofsSettingCache.getCustomreminderclass();
try {
Class<?> clazz = Class.forName(className);
OfsRemind o = (OfsRemind) clazz.newInstance();
o.sendMsg(msg);
} catch (Exception e) {
log.info("调用自定义接口异常", e);
}
}
// 推送短信
String remindshortmessage = ofsSettingCache.getRemindshortmessage();
if ("1".equals(remindshortmessage)) {
OfsRemindShortMessage ofsRemindShortMessag = new OfsRemindShortMessage();
ofsRemindShortMessag.sendMsg(msg);
}
}
} else {
//todo 用消息中心了
ofsTodoDataManager.sendMsgCenter(msg, 0);
//提醒到IM
String OfsParam_remindim = Util.null2String(ofsSettingCache.getRemindim(), OfsSetting.RemindIM_No);
if (isusedtx.equals("1") && OfsSetting.RemindIM_Yes.equals(OfsParam_remindim)) {//开启提醒到IM
OfsRemindOtherManagerNew ofsRemindOtherManagerNew = new OfsRemindOtherManagerNew();
ofsRemindOtherManagerNew.sendMsg(msg);
OfsRemindRTXManagerNew ofsRemindRTXManagerNew = new OfsRemindRTXManagerNew();
ofsRemindRTXManagerNew.sendMsg(msg);
OfsRemindElinkManagerNew ofsRemindElinkManagerNew = new OfsRemindElinkManagerNew();
ofsRemindElinkManagerNew.sendMsg(msg);
}
// 推送到自定义消息接口
String customreminders = ofsSettingCache.getCustomreminders();
if ("1".equals(customreminders)) {
String className = ofsSettingCache.getCustomreminderclass();
try {
Class<?> clazz = Class.forName(className);
OfsRemind o = (OfsRemind) clazz.newInstance();
o.sendMsg(msg);
} catch (Exception e) {
log.info("调用自定义接口异常", e);
}
}
// 推送短信
String remindshortmessage = ofsSettingCache.getRemindshortmessage();
if ("1".equals(remindshortmessage)) {
OfsRemindShortMessage ofsRemindShortMessag = new OfsRemindShortMessage();
ofsRemindShortMessag.sendMsg(msg);
}
}
data.setPcurl(pcurl);
data.setAppurl(appurl);
}
public String buildIsRemarkName(OfsTodoData data) {
String isremark = data.getIsremark();
String viewtype = data.getViewtype();
String isRemarkName = "";
if (StringUtils.isBlank(isremark) && viewtype.equals("1")) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(25425, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (isremark.equals(OfsTodoData.IsRemark_Todo)) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(16658, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (isremark.equals(OfsTodoData.IsRemark_Done)) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(24627, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (isremark.equals(OfsTodoData.IsRemark_Over)) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(22487, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (isremark.equals("8")) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(10003849, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (isremark.equals("9")) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(10003849, weaver.general.ThreadVarLanguage.getLang()) + "";
}
return isRemarkName;
}
public String buildIsRemarkName2(OfsTodoData data, String method) {
String isremark = data.getIsremark();
String viewtype = data.getViewtype();
String isRemarkName = "";
if ("read".equals(method)) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(25425, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (StringUtils.isBlank(isremark) && viewtype.equals("1")) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(25425, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (isremark.equals(OfsTodoData.IsRemark_Todo)) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(16658, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (isremark.equals(OfsTodoData.IsRemark_Done)) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(24627, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (isremark.equals(OfsTodoData.IsRemark_Over)) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(22487, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (isremark.equals("8")) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(10003849, weaver.general.ThreadVarLanguage.getLang()) + "";
} else if (isremark.equals("9")) {
isRemarkName = "" + SystemEnv.getHtmlLabelName(10003849, weaver.general.ThreadVarLanguage.getLang()) + "";
}
return isRemarkName;
}
public boolean checkDateTime(String datetime) {
return Pattern.compile("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}(:\\d{2})?$").matcher(datetime).matches();
}
public String buildPcUrl(String pcentranceurl, String OfsTodoDataId, String pcurl) {
if (!"".equals(pcentranceurl)) {
return getEntranceUrl(pcentranceurl, OfsTodoDataId);
}
return pcurl;
}
public String buildAppUrl(String pcentranceurl, String OfsTodoDataId, String appurl) {
if (!"".equals(pcentranceurl)) {
return getEntranceUrl(pcentranceurl, OfsTodoDataId);
}
return appurl;
}
public void updatePcurlAndAppurl(OfsSysInfoCacheNew ofsSysInfoCacheNew, OfsTodoData data) {
//单点登录地址
String pcentranceurl = ofsSysInfoCacheNew.getPcentranceurl();
String appentranceurl = ofsSysInfoCacheNew.getAppentranceurl();
String pcurl = data.getPcurl();
String pcurlsrc = "";
if (StringUtils.isNotBlank(pcentranceurl)) {
pcurlsrc = data.getPcurl();
pcurl = buildPcUrl(pcentranceurl, data.getId(), data.getPcurl()) + "&isremark=" + data.getIsremark();
}
String appurl = data.getAppurl();
String appurlsrc = "";
if (StringUtils.isNotBlank(appentranceurl)) {
appurlsrc = data.getAppurl();
appurl = buildAppUrl(appentranceurl, data.getId(), data.getAppurl()) + "&isremark=" + data.getIsremark();
}
//更新地址
ofsTodoDataService.updateUrl(Integer.parseInt(data.getId()), data.getFlowid(), pcurlsrc, pcurl, appurlsrc, appurl);
data.setPcurl(pcurl);
data.setAppurl(appurl);
}
public void updatePcurlAndAppurlInDone(OfsSysInfoCacheNew ofsSysInfoCacheNew, OfsTodoData data) {
//单点登录地址
String pcentranceurl = ofsSysInfoCacheNew.getPcentranceurl();
String appentranceurl = ofsSysInfoCacheNew.getAppentranceurl();
String pcurl = data.getPcurl();
String pcurlsrc = "";
if (StringUtils.isNotBlank(pcentranceurl)) {
pcurlsrc = data.getPcurl();
pcurl = buildPcUrl(pcentranceurl, data.getId(), data.getPcurl()) + "&isremark=" + data.getIsremark();
}
String appurl = data.getAppurl();
String appurlsrc = "";
if (StringUtils.isNotBlank(appentranceurl)) {
appurlsrc = data.getAppurl();
appurl = buildAppUrl(appentranceurl, data.getId(), data.getAppurl()) + "&isremark=" + data.getIsremark();
}
//更新地址
ofsDoneDataService.updateUrlInDone(Integer.parseInt(data.getId()), data.getFlowid(), pcurlsrc, pcurl, appurlsrc, appurl);
data.setPcurl(pcurl);
data.setAppurl(appurl);
}
public String buildSysName(OfsTodoData data) {
//显示异构系统名称
// OfsSettingCacheNew ofsSettingCacheNew = new OfsSettingCacheNew();
// ofsSettingCacheNew.next();
// String OfsSetting_showsysname = ofsSettingCacheNew.getShowsysname();
// OfsSysInfoCacheNew ofsSysInfoCacheNew = new OfsSysInfoCacheNew();
// String OfsSysInfo_sysshortname = "";
// String OfsSysInfo_sysfullname = "";
// while(ofsSysInfoCacheNew.next()){
// if(data.getSyscode().equals(ofsSysInfoCacheNew.getSyscode())){
// OfsSysInfo_sysshortname = ofsSysInfoCacheNew.getSysshortname();//异构系统简称
// OfsSysInfo_sysfullname = ofsSysInfoCacheNew.getSysfullname();//异构系统全称
// break;
// }
// }
OfsSettingCacheDAO ofsSettingCacheDAO = new OfsSettingCacheDAO();
OfsSetting ofsSettingCache = ofsSettingCacheDAO.getOfsSettingCache();
String OfsSetting_showsysname = ofsSettingCache.getShowsysname();
OfsSysInfoCacheDAO ofsSysInfoCacheDAO = new OfsSysInfoCacheDAO();
OfsSysInfo ofsSysInfoCache = ofsSysInfoCacheDAO.getOfsSysInfoCacheBySysCode(data.getSyscode());
String OfsSysInfo_sysshortname = ofsSysInfoCache.getSysshortname();
String OfsSysInfo_sysfullname = ofsSysInfoCache.getSysfullname();
String OfsSysInfo_sysname = "";
if (OfsSetting_showsysname.equalsIgnoreCase(OfsSetting.ShowSysName_None)) {
OfsSysInfo_sysname = "";
} else if (OfsSetting_showsysname.equalsIgnoreCase(OfsSetting.ShowSysName_Short)) {
OfsSysInfo_sysname = OfsSysInfo_sysshortname;
} else if (OfsSetting_showsysname.equalsIgnoreCase(OfsSetting.ShowSysName_Full)) {
OfsSysInfo_sysname = OfsSysInfo_sysfullname;
}
return OfsSysInfo_sysname;
}
public void sendMsgCenter(RemindMessage msg, int ismsgcenter) {
String channels = msg.getChannel();
List<String> channelList = new ArrayList<>();
log.info("前端传入的消息类型ID" + channels);
if (StringUtils.isNotBlank(channels)) {
channelList = Arrays.asList(channels.split(","));
}
Map<WeaMessageTypeConfig, List<String>> accessConfig = null;
ConfigManager configManager = new ConfigManager();
if ("8".equals(msg.getData().getIsremark())) {
accessConfig = configManager.defaultRuleCheckConfig(MessageType.OTHER_MAILWAIT_READ, Util.getIntValue(msg.getData().getUserid()), null);
} else {
accessConfig = configManager.defaultRuleCheckConfig(MessageType.OTHER_MAILWAIT_REMIND, Util.getIntValue(msg.getData().getUserid()), null);
}
if (accessConfig != null && accessConfig.size() > 0) {
//判断是否推送到消息中心
// OfsSettingCacheNew ofsSettingCacheNew = new OfsSettingCacheNew();
// ofsSettingCacheNew.next();
// String messagecenter = ofsSettingCacheNew.getMessagecenter();
OfsSettingCacheDAO ofsSettingCacheDAO = new OfsSettingCacheDAO();
OfsSetting ofsSettingCache = ofsSettingCacheDAO.getOfsSettingCache();
String messagecenter = ofsSettingCache.getMessagecenter();
if ("1".equals(messagecenter) || ismsgcenter == 1) {
for (Map.Entry<WeaMessageTypeConfig, List<String>> entry : accessConfig.entrySet()) {
//TodoCenterTodoMessageSender todoCenterTodoMessageSender = new TodoCenterTodoMessageSender(OfsSettingMap, OfsSysInfoMap, sysname, workflowname, requestname, remindPcUrl, remindAppUrl, creatorid, createdate, createtime, receiverid, receivedate, receivetime, OfsTodoDataId, requestid);
//new Thread(todoCenterTodoMessageSender).start();
// 4、构造消息实体
MessageBean message = null;
try {
User user = User.getUser(Util.getIntValue(msg.getData().getCreatorid()), 0);
int langId = 7;
String userName = "";
if (user != null) {
langId = user.getLanguage();
userName = user.getLastname();
}
String detailContent = SystemEnv.getHtmlLabelName(882, langId) + ":" + userName;
detailContent += "<br/>";
detailContent += SystemEnv.getHtmlLabelName(1339, langId) + ":" + msg.getData().getCreatedate() + " " + msg.getData().getCreatetime();
if ("8".equals(msg.getData().getIsremark())) {
message = Util_Message.createMessage(MessageType.OTHER_MAILWAIT_READ, Integer.parseInt(msg.getData().getUserid()), msg.getData().getRequestname(), "" + "${}" + msg.getSysname() + "", detailContent, msg.getData().getPcurl(), msg.getData().getAppurl(), Util.getIntValue(msg.getData().getCreatorid(), 0));
} else {
message = Util_Message.createMessage(MessageType.OTHER_MAILWAIT_REMIND, Integer.parseInt(msg.getData().getUserid()), msg.getData().getRequestname(), "" + "${}" + msg.getSysname() + "", detailContent, msg.getData().getPcurl(), msg.getData().getAppurl(), Util.getIntValue(msg.getData().getCreatorid(), 0));
}
message.setBizState("0");
if ("2".equals(msg.getData().getIsremark()) || "4".equals(msg.getData().getIsremark())) {
message.setBizState("1");
}
//TODO 获取syscode和flowid作为TargetId
// RecordSet rs = new RecordSet();
// rs.executeQuery("select * from ofs_todo_data where id = ?" ,msg.getData().getId());
// rs.next();
// String syscode = rs.getString("syscode");
// String flowid = rs.getString("flowid");
String syscode = msg.getData().getSyscode();
String flowid = msg.getData().getFlowid();
message.setTargetId(syscode + "_" + flowid);
Map<String, Object> detailTitleParams = message.getDetailTitleParams();
detailTitleParams.put("workflow_name", msg.getData().getWorkflowname());
detailTitleParams.put("system_name", msg.getSysname());
} catch (IOException e) {
e.printStackTrace();
}
// 5、获取新的自定义消息类型
WeaMessageTypeConfig config1 = entry.getKey();
/*
* 1. id
* 2. id
* 3.
*/
log.info("1从WeaMessageTypeConfig类中匹配到的消息类型ID" + config1.getId());
boolean flag = false;
if (StringUtils.isBlank(channels)) {
message.setMessageConfig(config1);
} else {
for (String channel : channelList) {
if (config1.getId().equals(channel)) {
flag = true;
break;
}
}
if (flag) {
message.setMessageConfig(config1);
} else {
continue;
}
}
// 7、设置检查配置通过需要发送消息的用户
message.setUserList(Sets.newHashSet(entry.getValue()));
// String showPC = msg.getOfsSysInfoCacheNew().getShowpc() ; //PC显示
String showPC = msg.getOfsSysInfo().getShowpc(); //PC显示
if (!"1".equals(showPC)) {
message.setEnablePC("n");
}
// String showAPP = msg.getOfsSysInfoCacheNew().getShowapp() ; //APP显示
String showAPP = msg.getOfsSysInfo().getShowapp(); //APP显示
log.info("showPC and showAPP is : " + showPC + " || " + showAPP);
if (!"1".equals(showAPP)) {
message.setEnableEM("n");
message.setSendMobile("n");
}
MessageType messageType = MessageType.newInstance(130);
message.setMessageType(messageType);
String s = JSONObject.toJSONString(message);
try {
if (isOpen()) {
new BaseBean().writeLog("推送消息===" + s);
new BaseBean().writeLog("推送消息类===" + this.getClass().getName());
String linkMobileUrl = message.getLinkMobileUrl();
new BaseBean().writeLog("linkMobileUrl===" + linkMobileUrl);
Map<String, String> parameters = parseUrlParameters(linkMobileUrl);
new BaseBean().writeLog("linkMobileUrl===" + parameters);
String workflowId = parameters.get("workflowId");
new BaseBean().writeLog("workflowId===" + workflowId);
String title = getTitlebyOfswfid(workflowId);
new BaseBean().writeLog("title===" + title);
2 years ago
2 years ago
if (!StringUtils.isEmpty(title)) {
message.setTitle(title);
}
2 years ago
// message.setMessageGroupType();
// message.setAgentId("86");
// message.setMessageGroupTypeName("[dfefgr]");
2 years ago
// message.setDetailTitle("");
// message.setDetailTitleParams(null);
2 years ago
}
new BaseBean().writeLog("推送消息===" + JSONObject.toJSONString(message));
} catch (Exception e) {
new BaseBean().writeLog("推送消息异常===" + e.getMessage());
e.printStackTrace();
}
// 8、发送消息
try {
Util_Message.sendAndpublishMessage(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
public void defaultSelect(String syscode, String OfsWorkflow_workflowid) {
//TODO 创建成功,添加默认选中
try {
Class clazz = Class.forName("weaver.page.element.WfCenterInterface");
//type typeid==sysid flowid===workflowid
//content 具体值
Method method = clazz.getDeclaredMethod("setWfCenterDefaultData", String.class, String.class);
RecordSet rs = new RecordSet();
rs.executeQuery("select * from ofs_sysinfo where syscode = ?", syscode);
rs.next();
String sysid = rs.getString("sysid");
Object instance = clazz.newInstance();
method.invoke(instance, "typeid", sysid);
method.invoke(instance, "flowid", OfsWorkflow_workflowid);
log.error("flowid:" + OfsWorkflow_workflowid);
} catch (Exception e) {
e.printStackTrace();
log.error("添加门户的默认选中失败", e);
}
}
public OfsSysInfoCacheNew getOfsSysInfoCache(OfsTodoData data) {
OfsSysInfoCacheNew ofsSysInfoCacheNew = new OfsSysInfoCacheNew();
while (ofsSysInfoCacheNew.next()) {
String syscode1 = data.getSyscode();
String syscode2 = ofsSysInfoCacheNew.getSyscode();
if (syscode1.equals(syscode2)) {
return ofsSysInfoCacheNew;
}
}
return null;
}
/**
*
*/
public Map<String, String> saveLog(
String sysid,
String datatype,
String opertype,
String operresult,
String failremark,
OfsTodoData todoData
) {
String[] data = datatype.split("_");
datatype = data[0];
String dataid = data[1];
ofsLogService.insert(
sysid,
datatype,
dataid,
opertype,
operresult,
failremark,
todoData.getSyscode(),
todoData.getFlowid(),
todoData.getRequestname(),
todoData.getWorkflowname(),
todoData.getNodename(),
todoData.getIsremark(),
todoData.getPcurl(),
todoData.getAppurl(),
todoData.getCreator(),
todoData.getCreatorid(),
todoData.getCreatedate(),
todoData.getCreatetime(),
todoData.getReceiver(),
todoData.getUserid(),
todoData.getReceivedate(),
todoData.getReceivetime(),
todoData.getReceivets()
);
return buildReceiveTodoRequest(
todoData.getSyscode(),
datatype,
opertype,
operresult,
failremark
);
}
/**
* map
*/
public Map<String, String> buildReceiveTodoRequest(
String syscode,
String dataType,
String operType,
String operResult,
String message
) {
Map<String, String> map = new HashMap<String, String>();
map.put("syscode", syscode);
map.put("dataType", dataType);
map.put("operType", operType);
map.put("operResult", operResult);
map.put("message", message);
return map;
}
public static Map<String, String> parseUrlParameters(String url) {
Map<String, String> parameters = new HashMap<>();
try {
// URL parsedUrl = new URL(url);
// String query = parsedUrl.getQuery();
url = url.substring(url.indexOf("?") + 1);
if (url != null) {
String[] pairs = url.split("&");
for (String pair : pairs) {
String[] keyValue = pair.split("=");
if (keyValue.length == 2) {
String key = keyValue[0];
String value = keyValue[1];
parameters.put(key, value);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return parameters;
}
public static String getTitlebyOfswfid(String ofswfid) {
String sql = "select title from uf_ofsMsgtitle where wfid = ?";
RecordSet recordSet = new RecordSet();
recordSet.executeQuery(sql, ofswfid);
String title = "";
if (recordSet.next()) {
title = Util.null2String(recordSet.getString("title"));
}
return title;
}
public static void main(String[] args) {
String s = "/interface/transfer/ofsTrance.jsp?type=app&sysId=-2&workflowId=-111&flowId=794193549238206464&_weaverofsmsg=1&_ec_ismobile=true";
System.out.println(parseUrlParameters(s));
}
//配置文件是否开启
private boolean isOpen() {
String isopen = new BaseBean().getPropValue("updateMsgTitle", "isopen");
return "1".equals(isopen);
// return true;
}
}