退改签代码

master
rengp 2 years ago
parent 988222e450
commit 6028b2256d

@ -0,0 +1,392 @@
package com.api.meeting.cusvideo.util;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.lang.UUID;
import cn.hutool.http.ContentType;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.file.Prop;
import weaver.general.BaseBean;
import weaver.general.StaticObj;
import weaver.general.Util;
import weaver.hrm.resource.ResourceComInfo;
import java.nio.charset.StandardCharsets;
import java.util.*;
/**
* @Description:
* @Author: lj
* @CreateTime: 2023-06-05 15:51
* @Version: 1.0
*/
public class YealinkVideoUtil {
private static BaseBean logger = new BaseBean();
private static final String YEA_LINK_TOKEN_KEY = "YEA_LINK_TOKEN_KEY";
private static StaticObj cache = StaticObj.getInstance();
/**
* post
*
* @param url
* @param header
* @param body
* @return
*/
public static JSONObject doPost(String url, String token, Map<String, String> header, JSONObject body) {
try {
logger.writeLog("^^^ YealinkVideoUtil.doPost : url = " + url);
if (header == null) header = new HashMap<>();
if (!header.containsKey("Authorization")) header.put("Authorization", "Bearer " + token);
if (!header.containsKey("timestamp")) header.put("timestamp", System.currentTimeMillis() + "");
if (!header.containsKey("nonce")) header.put("nonce", UUID.randomUUID().toString(true));
if (body == null) body = new JSONObject();
logger.writeLog("^^^ YealinkVideoUtil.doPost : url = " + url
+ " , header = " + JSONObject.toJSONString(header)
+ " , body = " + body.toJSONString()
);
HttpResponse response = HttpRequest.post(url)
.charset(StandardCharsets.UTF_8)
.addHeaders(header)
.body(body.toJSONString())
.execute()
.charset(StandardCharsets.UTF_8);
String result = response.body();
logger.writeLog("^^^ YealinkVideoUtil.doPost : url = " + url + " , result = " + result);
JSONObject resultJson = JSONObject.parseObject(result);
if (response.getStatus() != 200) {
throw new RuntimeException("[" + resultJson.getString("code") + "]" + resultJson.getString("message"));
}
return resultJson;
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoUtil.doPost : 接口[" + url + "]请求失败!!!", e);
throw new RuntimeException(e.getMessage());
}
}
/**
* get
*
* @param url
* @param token
*/
public static JSONObject doGet(String url, String token, Map<String, String> header, JSONObject body) {
try {
logger.writeLog("^^^ YealinkVideoUtil.doGet : url = " + url);
if (header == null) header = new HashMap<>();
if (!header.containsKey("Authorization")) header.put("Authorization", "Bearer " + token);
if (!header.containsKey("timestamp")) header.put("timestamp", System.currentTimeMillis() + "");
if (!header.containsKey("nonce")) header.put("nonce", UUID.randomUUID().toString(true));
if (body == null) body = new JSONObject();
logger.writeLog("^^^ YealinkVideoUtil.doGet : url = " + url
+ " , header = " + JSONObject.toJSONString(header)
+ " , body = " + body.toJSONString()
);
HttpResponse response = HttpRequest.get(url)
.charset(StandardCharsets.UTF_8)
.addHeaders(header)
.contentType(ContentType.JSON.getValue())
.form(body)
.execute()
.charset(StandardCharsets.UTF_8);
String result = response.body();
logger.writeLog("^^^ YealinkVideoUtil.doGet : url = " + url + " , result = " + result);
JSONObject resultJson = JSONObject.parseObject(result);
if (response.getStatus() != 200) {
throw new RuntimeException("[" + resultJson.getString("code") + "]" + resultJson.getString("message"));
}
return resultJson;
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoUtil.doGet : 接口[" + url + "]请求失败!!!", e);
throw new RuntimeException(e.getMessage());
}
}
/**
* put
*
* @param url
* @param token
* @param header
* @param body
* @return
*/
public static JSONObject doPut(String url, String token, Map<String, String> header, JSONObject body) {
try {
logger.writeLog("^^^ YealinkVideoUtil.doPut : url = " + url);
if (header == null) header = new HashMap<>();
if (!header.containsKey("Authorization")) header.put("Authorization", "Bearer " + token);
if (!header.containsKey("timestamp")) header.put("timestamp", System.currentTimeMillis() + "");
if (!header.containsKey("nonce")) header.put("nonce", UUID.randomUUID().toString(true));
if (body == null) body = new JSONObject();
logger.writeLog("^^^ YealinkVideoUtil.doPut : url = " + url
+ " , header = " + JSONObject.toJSONString(header)
+ " , body = " + body.toJSONString()
);
HttpResponse response = HttpRequest.put(url)
.charset(StandardCharsets.UTF_8)
.addHeaders(header)
.body(body.toJSONString())
.execute()
.charset(StandardCharsets.UTF_8);
String result = response.body();
logger.writeLog("^^^ YealinkVideoUtil.doPut : url = " + url + " , result = " + result);
JSONObject resultJson = JSONObject.parseObject(result);
if (response.getStatus() != 200) {
throw new RuntimeException("[" + resultJson.getString("code") + "]" + resultJson.getString("message"));
}
return resultJson;
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoUtil.doPut : 接口[" + url + "]请求失败!!!", e);
throw new RuntimeException(e.getMessage());
}
}
/**
* delete
*
* @param url
* @param token
* @param header
* @param body
* @return
*/
public static JSONObject doDelete(String url, String token, Map<String, String> header, JSONObject body) {
try {
logger.writeLog("^^^ YealinkVideoUtil.doDelete : url = " + url);
if (header == null) header = new HashMap<>();
if (!header.containsKey("Authorization")) header.put("Authorization", "Bearer " + token);
if (!header.containsKey("timestamp")) header.put("timestamp", System.currentTimeMillis() + "");
if (!header.containsKey("nonce")) header.put("nonce", UUID.randomUUID().toString(true));
if (body == null) body = new JSONObject();
logger.writeLog("^^^ YealinkVideoUtil.doDelete : url = " + url
+ " , header = " + JSONObject.toJSONString(header)
+ " , body = " + body.toJSONString()
);
List<String> queryList = new ArrayList<>();
for (Object key : body.keySet()) {
if (key != null) {
queryList.add(key + "=" + body.getString((String) key));
}
}
if (queryList.size() > 0) {
if (url.contains("?")) {
url += "&";
} else {
url += "?";
}
url += StringUtils.join(queryList, "&");
}
HttpResponse response = HttpRequest.delete(url)
.charset(StandardCharsets.UTF_8)
.addHeaders(header)
.contentType(ContentType.JSON.getValue())
.execute()
.charset(StandardCharsets.UTF_8);
String result = response.body();
logger.writeLog("^^^ YealinkVideoUtil.doDelete : url = " + url + " , result = " + result);
JSONObject resultJson = JSONObject.parseObject(result);
if (response.getStatus() != 200) {
throw new RuntimeException("[" + resultJson.getString("code") + "]" + resultJson.getString("message"));
}
return resultJson;
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoUtil.doDelete : 接口[" + url + "]请求失败!!!", e);
throw new RuntimeException(e.getMessage());
}
}
/**
* token
*
* @param appKey
* @param appSecret
* @return
*/
public static String getToken(String host, String appKey, String appSecret) {
String token = "";
try {
//1、从缓存中获取
Object object = cache.getObject(YEA_LINK_TOKEN_KEY);
if (object != null) {
JSONObject tokenObj = JSONObject.parseObject((String) object);
if (tokenObj != null) {
long expires_in = tokenObj.getLongValue("expires_in");
if (expires_in > System.currentTimeMillis()) {
token = tokenObj.getString("access_token");
} else {
cache.removeObject(YEA_LINK_TOKEN_KEY);
}
}
}
if (StringUtils.isBlank(token)) {//去获取token
//请求头
Map<String, String> header = new HashMap<>();
header.put("Authorization", "Basic " + Base64.encode(appKey + ":" + appSecret));
header.put("timestamp", System.currentTimeMillis() + "");
header.put("nonce", UUID.randomUUID().toString(true));
//请求体
JSONObject body = new JSONObject();
body.put("grant_type", "client_credentials");
//构建请求url
String url = host + "/token";
//执行请求
logger.writeLog("^^^ YealinkVideoUtil.getToken : url = " + url);
logger.writeLog("^^^ YealinkVideoUtil.getToken : header = " + JSONObject.toJSONString(header));
logger.writeLog("^^^ YealinkVideoUtil.getToken : body = " + body.toJSONString());
HttpResponse response = HttpRequest.post(url)
.charset(StandardCharsets.UTF_8)
.addHeaders(header)
.body(body.toJSONString())
.execute()
.charset(StandardCharsets.UTF_8);
String result = response.body();
logger.writeLog("^^^ YealinkVideoUtil.getToken : url = " + url + " , result = " + result);
JSONObject resultJson = JSONObject.parseObject(result);
if (response.getStatus() != 200) {
throw new RuntimeException("[" + resultJson.getString("code") + "]" + resultJson.getString("message"));
}
//设置过期时间
int expires_in = resultJson.getIntValue("expires_in");
resultJson.put("expires_in", System.currentTimeMillis() + expires_in * 1000L);
//缓存token
cache.putObject(YEA_LINK_TOKEN_KEY, resultJson.toJSONString());
token = resultJson.getString("access_token");
}
return token;
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoUtil.getToken : error !!!", e);
throw new RuntimeException("Token获取失败" + e.getMessage());
}
}
/**
* yealinkid
*
* @param host
* @param token
* @param userId
* @return
*/
public static String getYeaLinkUserId(String host, String token, String userId) {
String value = "";
String hrmYeaLinkCusFieldName = Util.null2String(Prop.getPropValue("qc2281950", "hrmYeaLinkCusFieldName"));
String hrmYeaLinkIdCusFieldScope = Util.null2s(Prop.getPropValue("qc2281950", "hrmYeaLinkIdCusFieldScope"), "-1");
RecordSet rs = new RecordSet();
new BaseBean().writeLog("^^^ YealinkVideoUtil.getYeaLinkUserId : userId = " + userId
+ " , hrmYeaLinkCusFieldName = " + hrmYeaLinkCusFieldName
+ " , hrmYeaLinkIdCusFieldScope = " + hrmYeaLinkIdCusFieldScope);
rs.executeQuery("select " + hrmYeaLinkCusFieldName + " from cus_fielddata " +
"where scope='HrmCustomFieldByInfoType' and scopeid=? and id=?", hrmYeaLinkIdCusFieldScope, userId);
if (rs.next()) {
value = Util.null2String(rs.getString(1));
}
if (StringUtils.isBlank(value)) {
//如果为空则这里需要去添加用户以获得返回后的亿联用户ID
value = addYeaLinkUser(userId, host, token);
}
return value;
}
/**
* yealink
*
* @param userId
* @param host
* @param token
* @return
*/
public static String addYeaLinkUser(String userId, String host, String token) {
try {
ResourceComInfo comInfo = new ResourceComInfo();
JSONObject body = new JSONObject();
body.put("name", comInfo.getLastname(userId));
body.put("extension", comInfo.getWorkcode(userId));
String mobile = comInfo.getMobile(userId);
body.put("mobile", mobile);
//判断手机号是否存在
if (StringUtils.isBlank(mobile)) {
throw new RuntimeException("手机号[mobile]不能为空");
}
//先查询亿联是否存在用户
String yeaLinkUserId = queryYeaLinkUserId(host, token, mobile);
if (StringUtils.isBlank(yeaLinkUserId)) {
String url = host + "/users";
JSONObject resultObj = doPost(url, token, null, body);
//取出ID
yeaLinkUserId = resultObj.getString("id");
}
//更新到人力资源自定义表中
updateHrmYeaLinkUserId(userId, yeaLinkUserId);
return yeaLinkUserId;
} catch (Exception e) {
logger.writeLog("^^^ YealinkVideoUtil.addYeaLinkUser : error !!!", e);
throw new RuntimeException("添加亿联用户失败:" + e.getMessage());
}
}
/**
*
*
* @param mobile
* @return
*/
private static String queryYeaLinkUserId(String host, String token, String mobile) {
JSONObject body = new JSONObject();
body.put("mobile", mobile);
body.put("limit", 1);
String url = host + "/users";
JSONObject resultObj = doGet(url, token, null, body);
//取出数据
JSONArray dataArr = resultObj.getJSONArray("data");
if (dataArr != null && dataArr.size() > 0) {
JSONObject dataObj = dataArr.getJSONObject(0);
String phone = Util.null2String(dataObj.getString("mobile"));
if (mobile.equals(phone)) {
return Util.null2String(dataObj.getString("id"));
}
}
return null;
}
/**
*
*
* @param yeaLinkUserId
*/
private static void updateHrmYeaLinkUserId(String userId, String yeaLinkUserId) {
String hrmYeaLinkCusFieldName = Util.null2String(Prop.getPropValue("qc2281950", "hrmYeaLinkCusFieldName"));
String hrmYeaLinkIdCusFieldScope = Util.null2s(Prop.getPropValue("qc2281950", "hrmYeaLinkIdCusFieldScope"), "-1");
RecordSet rs = new RecordSet();
new BaseBean().writeLog("^^^ YealinkVideoUtil.updateHrmYeaLinkUserId : userId = " + userId
+ " , hrmYeaLinkCusFieldName = " + hrmYeaLinkCusFieldName
+ " , hrmYeaLinkIdCusFieldScope = " + hrmYeaLinkIdCusFieldScope);
String sql = "select * from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid=? and id=?";
rs.executeQuery(sql, hrmYeaLinkIdCusFieldScope, userId);
if (rs.next()) {//存在记录做更新
sql = "update cus_fielddata set " + hrmYeaLinkCusFieldName +
"=? where scope='HrmCustomFieldByInfoType' and scopeid=? and id=?";
List params = Arrays.asList(yeaLinkUserId, hrmYeaLinkIdCusFieldScope, userId);
boolean flag = rs.executeUpdate(sql, params.toArray());
if (!flag) {
logger.writeLog("^^^ YealinkVideoUtil.updateHrmYeaLinkUserId : execute update sql error , sql = " + sql
+ " , params = " + JSONObject.toJSONString(params));
}
} else {//不存在记录做新增
sql = "insert into cus_fielddata (scope,scopeid,id," + hrmYeaLinkCusFieldName + ") " +
"values ('HrmCustomFieldByInfoType',?,?,?)";
List params = Arrays.asList(hrmYeaLinkIdCusFieldScope, userId, yeaLinkUserId);
boolean flag = rs.executeUpdate(sql, params.toArray());
if (!flag) {
logger.writeLog("^^^ YealinkVideoUtil.updateHrmYeaLinkUserId : execute insert sql error , sql = " + sql
+ " , params = " + JSONObject.toJSONString(params));
}
}
}
}

@ -0,0 +1,16 @@
package com.api.tjyh;
import com.engine.tjyh.xc.web.AcceptXcDataAction;
import javax.ws.rs.Path;
/**
* TODO
*
* @Description
* @Author matrix
* @Date 2023/6/15 10:19
**/
@Path("/tjyh/secondev/xc")
public class AcceptXcDataActionApi extends AcceptXcDataAction {
}

@ -24,7 +24,7 @@ public class EsbRequestHeader {
} }
//此方法为推送补贴报销单到ESB的消息头,其他类型需自己set属性
public EsbRequestHeader(int id) { public EsbRequestHeader(int id) {
BaseBean baseBean = new BaseBean(); BaseBean baseBean = new BaseBean();
String idStr = String.format("%06d", id); String idStr = String.format("%06d", id);

@ -0,0 +1,851 @@
package com.engine.msgcenter.util;
import com.alibaba.fastjson.JSONObject;
import com.cloudstore.dev.api.bean.MessageBean;
import com.cloudstore.dev.api.message.constant.ConstantMapping;
import com.cloudstore.dev.api.util.APPManager;
import com.cloudstore.dev.api.util.EMManager;
import com.cloudstore.eccom.common.WeaIndexManager;
import com.engine.msgcenter.constant.MsgToEMConstant;
import com.engine.msgcenter.entity.MsgDataItem;
import com.engine.systeminfo.util.AppSyncUtil;
import com.weaver.file.Prop;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import weaver.conn.RecordSet;
import weaver.file.FileNamingManager;
import weaver.file.ImageFileManager;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.systeminfo.SystemEnv;
import java.io.InputStream;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MsgECToEM {
private static final Log log = LogFactory.getLog(MsgECToEM.class);
/**
* EM
*
* @param img_url EM
* @param agent_type 2
* @param name
* @param description
* @param dialog_url
* @param sendmobile emobile
* @return
*/
public static MsgDataItem createMsgDataItem(String img_url, int agent_type, String name, String description, String dialog_url, String dialog_url_pc, String sendmobile) {
MsgDataItem item = new MsgDataItem();
item.setImg_url(img_url);
item.setAgent_type(agent_type);
item.setDescription(description);
item.setDialog_url(dialog_url);
item.setDialog_url_pc(dialog_url_pc);//EM根据这个是否为空来决定显示原生的还是H5页面,传和dialog_url一样的值
sendmobile = MsgToEMConstant.SEND_MOBILE.equals(sendmobile) ? "1" : "0";
item.setSend_to_em(sendmobile);
String zh_name = name;
if (name.contains("~"))
zh_name = Util.formatMultiLang(name, 7 + "");
item.setName(zh_name);
Set<Map> set = new HashSet<>();
for (int i = 7; i <= 9; i++) {
Map<String, Object> map = new HashMap<>();
if (i == 7)
map.put("lang_tag", "zh");
if (i == 8)
map.put("lang_tag", "en");
if (i == 9)
map.put("lang_tag", "zh_TW");
map.put("set_value", Util.formatMultiLang(name, i + ""));
set.add(map);
}
item.setLang_data(set);
return item;
}
/**
* @param agentid EMid
* @param img_url EM
* @param agent_type 2
* @param name
* @param description
* @param dialog_url emobile
* @return
*/
public static MsgDataItem updateMsgDataItem(String agentid, String img_url, int agent_type, String name, String description, String dialog_url, String dialog_url_pc, String sendmobile) {
MsgDataItem item = new MsgDataItem();
item.setAgentid(agentid);
item.setImg_url(img_url);
item.setAgent_type(agent_type);
item.setDescription(description);
item.setDialog_url(dialog_url);
item.setDialog_url_pc(dialog_url_pc);
sendmobile = MsgToEMConstant.SEND_MOBILE.equals(sendmobile) ? "1" : "0";
item.setSend_to_em(sendmobile);
String zh_name = name;
if (name.contains("~"))
zh_name = Util.formatMultiLang(name, 7 + "");
item.setName(zh_name);
Set<Map> set = new HashSet<>();
for (int i = 7; i <= 9; i++) {
Map<String, Object> map = new HashMap<>();
if (i == 7)
map.put("lang_tag", "zh");
if (i == 8)
map.put("lang_tag", "en");
if (i == 9)
map.put("lang_tag", "zh_TW");
map.put("set_value", Util.formatMultiLang(name, i + ""));
set.add(map);
}
item.setLang_data(set);
return item;
}
/**
* EM
*
* @param msgtype "share"
* @param agentid agentid
* @param send_type 1
* @param opentype 1
* @param opentype_pc 2
* @param canforward 0: 1:
* @param callbackurl
* @return
*/
public static MsgDataItem sendMsgDataItem(String senderid, String userids, String msgtype, String agentid, String send_type, String content, String desc,
String linkurl, String linkurl_pc, String opentype, String opentype_pc,
String canforward, String callbackurl, String sharetype, String shareid, String sharetypename, Map<String, Object> sendParams) {
MsgDataItem item = new MsgDataItem();
item.setSenderid(senderid);
item.setUserids(userids);
item.setMsgtype(msgtype);
item.setAgentid(agentid);
item.setSend_type(send_type);
item.setContent(content);
item.setDesc(desc);
item.setLinkurl(linkurl);
item.setLinkurl_pc(linkurl_pc);
item.setOpentype(opentype);
item.setOpentype_pc(opentype_pc);
item.setCanforward(canforward);
item.setCallbackurl(callbackurl);
item.setSharetypename(sharetypename);
item.setSharetype(sharetype);
item.setShareid(shareid);
item.setSendParams(sendParams);
new BaseBean().writeLog("qwe====>"+JSONObject.toJSONString(item));
return item;
}
/**
* EMMap
*/
public static Map<String, Object> createAppParams(MsgDataItem item) {
Map<String, Object> params = new HashMap<>();
if (StringUtils.isNotBlank(item.getAgentid()))
params.put("agentid", item.getAgentid());
if (StringUtils.isNotBlank(item.getName()))
params.put("name", item.getName());
if (!item.getLang_data().isEmpty())
params.put("lang_data", item.getLang_data());
if (StringUtils.isNotBlank(item.getEnglish_name()))
params.put("english_name", item.getEnglish_name());
if (StringUtils.isNotBlank(item.getDescription()))
params.put("description", item.getDescription());
if (StringUtils.isNotBlank(String.valueOf(item.getAgent_type())))
params.put("agent_type", String.valueOf(item.getAgent_type()));
if (StringUtils.isNotBlank(item.getLogo()))
params.put("logo", item.getLogo());
if (StringUtils.isNotBlank(item.getLogo_pc()))
params.put("logo_pc", item.getLogo_pc());
if (StringUtils.isNotBlank(item.getClienttypes()))
params.put("clienttypes", item.getClienttypes());
if (StringUtils.isNotBlank(item.getDialog_url()))
params.put("dialog_url", item.getDialog_url());
if (StringUtils.isNotBlank(item.getDialog_url_pc()))
params.put("dialog_url_pc", item.getDialog_url_pc());
if (StringUtils.isNotBlank(item.getStatus_url()))
params.put("status_url", item.getStatus_url());
if (StringUtils.isNotBlank(item.getAttention_url()))
params.put("attention_url", item.getAttention_url());
if (StringUtils.isNotBlank(item.getMsg_url()))
params.put("msg_url", item.getMsg_url());
if (StringUtils.isNotBlank(item.getShare_url()))
params.put("share_url", item.getShare_url());
if (StringUtils.isNotBlank(item.getEnable_auth()))
params.put("enable_auth", item.getEnable_auth());
if (StringUtils.isNotBlank(item.getSend_to_em()))
params.put("send_to_em", item.getSend_to_em());
return params;
}
/**
* EM,Map
*/
public static Map<String, Object> sendMsgParams(MsgDataItem item) {
Map<String, Object> params = new HashMap<>(item.getSendParams());
if (StringUtils.isNotBlank(item.getSenderid()))
params.put("senderid", item.getSenderid());
if (StringUtils.isNotBlank(item.getUserids()))
params.put("userids", item.getUserids());
if (StringUtils.isNotBlank(item.getMsgtype()))
params.put("msgtype", item.getMsgtype());
if (StringUtils.isNotBlank(item.getAgentid()))
params.put("agentid", item.getAgentid());
if (StringUtils.isNotBlank(item.getSend_type()))
params.put("send_type", item.getSend_type());
Map<String, Object> shareParams = new HashMap<>();
if (params.get("share") != null) {
shareParams = (Map) JSONObject.toJSON(params.get("share"));
}
if (StringUtils.isNotBlank(item.getContent()))
shareParams.put("content", item.getContent());
Map<String, Object> extraParams = new HashMap<>();
if (shareParams.get("extra") != null) {
extraParams = (Map) JSONObject.toJSON(shareParams.get("extra"));
}
if (StringUtils.isNotBlank(item.getDesc()))
extraParams.put("desc", item.getDesc());
if (StringUtils.isNotBlank(item.getLinkurl()))
extraParams.put("linkurl", item.getLinkurl());
if (StringUtils.isNotBlank(item.getLinkurl_pc()))
extraParams.put("linkurl_pc", item.getLinkurl_pc());
if (StringUtils.isNotBlank(item.getOpentype()))
extraParams.put("opentype", item.getOpentype());
if (StringUtils.isNotBlank(item.getOpentype_pc()))
extraParams.put("opentype_pc", item.getOpentype_pc());
if (StringUtils.isNotBlank(item.getCanforward()))
extraParams.put("canforward", item.getCanforward());
if (StringUtils.isNotBlank(item.getSharetypename()))
extraParams.put("sharetypename", item.getSharetypename());
if (StringUtils.isNotBlank(item.getSharetype()))
extraParams.put("sharetype", item.getSharetype());
if (StringUtils.isNotBlank(item.getShareid()))
extraParams.put("shareid", item.getShareid());
shareParams.put("extra", extraParams);
params.put("share", shareParams);
return params;
}
public static String delHTMLTag(String htmlStr) {
if (htmlStr != null) {
htmlStr = htmlStr.replaceAll("\\</p>|<br>|</br>|<br/>", "\n");
htmlStr = htmlStr.replaceAll("&nbsp;", " ");
String regEx_html = "(<img )(.[^>]*)(>)";
Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
Matcher m_html = p_html.matcher(htmlStr);
htmlStr = m_html.replaceAll("[" + SystemEnv.getHtmlLabelName(74, 7) + "]"); //过滤html标签
regEx_html = "<[^>]+>"; //定义HTML标签的正则表达式
p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m_html = p_html.matcher(htmlStr);
htmlStr = m_html.replaceAll(""); //过滤html标签
return htmlStr.trim();
}
return null;
}
/**
* ECEM
*/
public static String CreateMsgTypeApp(String img_url, String name, String description, String dialog_url, String sendmobile) {
MsgDataItem item = createMsgDataItem(img_url, 2, name, description, checkDialogUrl_New(dialog_url), checkDialogUrl_Old(dialog_url), sendmobile);
return getAgentId(item);
}
/**
* ECEM
*/
public static String CreateMsgTypeApp(String img_url, String name, String description, String app_Dialog_url, String pc_Dialogurl, String sendmobile) {
MsgDataItem item = createMsgDataItem(img_url, 2, name, description, checkDialogUrl_New(app_Dialog_url), checkDialogUrl_Old(pc_Dialogurl), sendmobile);
return getAgentId(item);
}
public static String getDialog_Url(String belongId, String isTab) {
String dialog_url = MsgToEMConstant.DIALOG_URL + belongId;
//新到达流程
if (MsgToEMConstant.IS_TAB.equals(isTab))
dialog_url += MsgToEMConstant.DIALOG_URL_Flag;
return dialog_url;
}
/**
* EM PC
*
* @param id ecology_biz_mobile_config id
* @return
*/
public static String getEM_PC_DialogUrl(String id) {
String dialog_url = MsgToEMConstant.DIALOG_URL + id;
return dialog_url;
}
/**
* EM
*
* @param id ecology_biz_mobile_config id
* @return
*/
public static String getEM_APP_DialogUrl(String id) {
String dialog_url = MsgToEMConstant.DIALOG_URL_NEW + id;
return dialog_url;
}
//上传图片,setlogo
public static MsgDataItem mediaUpload(MsgDataItem item) {
if (StringUtils.isNotBlank(item.getImg_url())) {
FileNamingManager manager = FileNamingManager.getInstance();
String fileUrl = manager.unTransform(item.getImg_url());
String fileid = fileUrl.replaceAll("/weaver/weaver.file.FileDownload\\?fileid=", "");
ImageFileManager imageFileManager = new ImageFileManager();
InputStream input;
String responseData = null;
try {
if (StringUtils.isNumeric(fileid)) {
imageFileManager.getImageFileInfoById(Util.getIntValue(fileid));
responseData = APPManager.mediaUpload("image", imageFileManager.getImageFileType(), imageFileManager.getInputStream(), "media", imageFileManager.getImageFileName());
} else if ((input = AppSyncUtil.getFileInputSteam(null, item.getImg_url())) != null) {
responseData = APPManager.mediaUpload("image", AppSyncUtil.getFileType(item.getImg_url()), input, "media", AppSyncUtil.getFileName(item.getImg_url()));
} else {
return null;
}
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return null;
}
if (objectData != null)
item.setLogo(objectData.getString("media_id"));
else
log.info("==========" + item.getName() + " 图片为空 ========");
return item;
}
return null;
}
public static String getAgentId(MsgDataItem item) {
if (StringUtils.isBlank(item.getAgentid()) && StringUtils.isNotBlank(item.getImg_url())) {
String responseData = null;
item = mediaUpload(item);
if (item != null) {
Map<String, Object> params = createAppParams(item);//将参数基类转化为map
try {
responseData = APPManager.createApp(params);//创建应用
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return null;
}
return objectData.getString("agentid");
}
return null;
}
return null;
}
public static boolean getApp(String agentid) {
if (StringUtils.isNotBlank(agentid)) {
Map param = new HashMap();
String responseData = null;
param.put("agentid", agentid);
try {
responseData = APPManager.getApp(param);//获取单个应用
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return false;
}
return true;
}
return false;
}
public static String send(MsgDataItem item) {
String responseData = null;
try {
responseData = APPManager.send(sendMsgParams(item));
} catch (KeyManagementException e) {
log.error("消息推送到EM平台失败:" + e);
} catch (NoSuchAlgorithmException e) {
log.error("消息推送到EM平台失败:" + e);
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0)
log.error("消息推送到EM错误信息:" + objectData.getString("errmsg"));
return responseData;
}
/**
* EM
*
* @param message
*/
public static void sendMsg(MessageBean message) {
for (MessageBean messageBean : getLangMsgList(message)) {
send(sendMsgDataItem(messageBean));
}
}
/**
* EM
*
* @return
*/
public static MsgDataItem sendMsgDataItem(MessageBean messageBean) {
StringBuilder str = new StringBuilder();
String senderid = messageBean.getEmParams().get("senderid") == null ? Util.null2String(messageBean.getCreater()) : Util.null2String(messageBean.getEmParams().get("senderid"));
// String userids = messageBean.getEmParams().get("userids") == null ? null : Util.null2String(messageBean.getEmParams().get("userids"));
String userids;
String msgtype = messageBean.getEmParams().get("msgtype") == null ? "share" : Util.null2String(messageBean.getEmParams().get("msgtype"));
String agentid = messageBean.getEmParams().get("agentid") == null ? messageBean.getAgentId() : Util.null2String(messageBean.getEmParams().get("agentid"));
String send_type = messageBean.getEmParams().get("send_type") == null ? "1" : Util.null2String(messageBean.getEmParams().get("send_type"));
Map shareMap = messageBean.getEmParams().get("share") == null ? new HashMap() : (Map) JSONObject.toJSON(messageBean.getEmParams().get("share"));
String title;
if (StringUtils.isNotBlank(messageBean.getDetailTitle()) && !messageBean.getMessageGroupTypeName().equals(messageBean.getDetailTitle()))
title = shareMap.get("content") == null ? messageBean.getDetailTitle() + " " + delHTMLTag(messageBean.getTitle()) : Util.null2String(shareMap.get("content"));
else
title = shareMap.get("content") == null ? delHTMLTag(messageBean.getTitle()) : Util.null2String(shareMap.get("content"));
Map extraMap = shareMap.get("extra") == null ? new HashMap() : (Map) JSONObject.toJSON(shareMap.get("extra"));
String content = extraMap.get("desc") == null ? delHTMLTag(messageBean.getContext()) : Util.null2String(extraMap.get("desc"));
String linkurl = extraMap.get("linkurl") == null ? messageBean.getLinkMobileUrl() : Util.null2String(extraMap.get("linkurl"));
String linkurl_pc = extraMap.get("linkurl_pc") == null ? messageBean.getLinkUrl() : Util.null2String(extraMap.get("linkurl_pc"));
// String linkurl = extraMap.get("linkurl") == null ? "/message.jsp?linkurl=" + codeBase64(messageBean.getLinkUrl()) + "&linkmobileurl="+codeBase64(messageBean.getLinkMobileUrl()) : Util.null2String(extraMap.get("linkurl"));
// String linkurl_pc = extraMap.get("linkurl_pc") == null ? "/message.jsp?linkurl="+ codeBase64(messageBean.getLinkUrl()) + "&linkmobileurl="+codeBase64(messageBean.getLinkMobileUrl()) : Util.null2String(extraMap.get("linkurl_pc"));
String opentype = extraMap.get("opentype") == null ? "1" : Util.null2String(extraMap.get("opentype"));
String opentype_pc = extraMap.get("opentype_pc") == null ? "2" : Util.null2String(extraMap.get("opentype_pc"));
String canforward = extraMap.get("canforward") == null ? "0" : Util.null2String(extraMap.get("canforward"));
String callbackurl = extraMap.get("callbackurl") == null ? "" : Util.null2String(extraMap.get("callbackurl"));
String sharetypename = extraMap.get("sharetypename") == null ? messageBean.getDetailTitle() : Util.null2String(extraMap.get("sharetypename"));
String sharetype = extraMap.get("sharetype") == null ? null : Util.null2String(extraMap.get("sharetype"));
String shareid = extraMap.get("shareid") == null ? null : Util.null2String(extraMap.get("shareid"));
if (messageBean.getUserList().size() == 0) {
userids = Util.null2String(messageBean.getUserId());
} else {
for (String userid : messageBean.getUserList())
str.append(userid).append("|");
userids = str.toString().substring(0, str.length() - 1);//去掉最后一个“|”
}
if (StringUtils.isNotBlank(Util.null2String(messageBean.getEmParams().get("userids"))))
userids = userids + "|" + Util.null2String(messageBean.getEmParams().get("userids"));
if (StringUtils.isBlank(sharetype) && StringUtils.isNotBlank(messageBean.getTargetId())) {
sharetype = "workflow";
shareid = messageBean.getTargetId();
}
if ("share".equals(msgtype) && StringUtils.isBlank(linkurl)) {
msgtype = "text";
Map<String, Object> textMap = new HashMap<>();
if (StringUtils.isNotBlank(messageBean.getDetailTitle()) && !messageBean.getMessageGroupTypeName().equals(messageBean.getDetailTitle()))
textMap.put("content", messageBean.getDetailTitle() + " " + delHTMLTag(messageBean.getTitle()) + "\n" + delHTMLTag(messageBean.getContext()));
else
textMap.put("content", delHTMLTag(messageBean.getTitle()) + "\n" + delHTMLTag(messageBean.getContext()));
Map<String, Object> map = new HashMap<>();
map.put("text", textMap);
map.put("safe", 0);
messageBean.getEmParams().putAll(map);
}
//如果是此消息id是需要修改的消息则替换为空
String msgTypeId = (Util.null2String(Prop.getPropValue("QC2586804", "msgtype")));
if (msgTypeId.contains(messageBean.getMessageGroupType())){
title=title.replace("","\u0020");
// if (title.indexOf("-")>0){
// title = title.split("-")[1];
// }
// agentid = "87";
}
return sendMsgDataItem(senderid, userids, msgtype, agentid, send_type, title, content, linkurl,
linkurl_pc, opentype, opentype_pc, canforward, callbackurl, sharetype, shareid, sharetypename, messageBean.getEmParams());
}
public static List<MessageBean> getLangMsgList(MessageBean message) {
List<MessageBean> messageBeanList = new ArrayList<>();
Map<Integer, Set> lang_map = new HashMap<>();
int userLang;
if (message.getUserList().isEmpty())
message.getUserList().add(Util.null2String(message.getUserId()));
for (String userid : message.getUserList()) {
userLang = User.getUserLang(Util.getIntValue(userid, 0));
if (!lang_map.containsKey(userLang)) {
Set<String> userSet = new HashSet<>();
userSet.add(userid);
lang_map.put(userLang, userSet);
} else {
lang_map.get(userLang).add(userid);
}
}
for (Map.Entry<Integer, Set> entry : lang_map.entrySet()) {
MessageBean messageBean = message.shallowClone();
messageBean.setUserList(entry.getValue());
messageBean.setMessageGroupTypeName(Util.formatMultiLang(messageBean.getMessageGroupTypeName(), entry.getKey() + ""));
messageBean.setDetailTitle(MsgTypeUtil.spilt(messageBean.getDetailTitle(), entry.getKey()));
messageBean.setTitle(Util.formatMultiLang(messageBean.getTitle(), entry.getKey() + ""));
messageBean.setContext(Util.formatMultiLang(messageBean.getContext(), entry.getKey() + ""));
messageBeanList.add(messageBean);
}
return messageBeanList;
}
public static boolean updateMsgTypeApp(String agentid, String img_url, String name, String description, String sendmobile) {
String responseData = null;
MsgDataItem item = updateMsgDataItem(agentid, img_url, 2, name, description, null, null, sendmobile);
item = mediaUpload(item);
try {
responseData = APPManager.updateApp(createAppParams(item));
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return false;
}
return true;
}
public static boolean updateMsgTypeApp(String agentid, String img_url, String name, String description, String dialogurl, String sendmobile) {
String responseData = null;
MsgDataItem item = updateMsgDataItem(agentid, img_url, 2, name, description, checkDialogUrl_New(dialogurl), checkDialogUrl_Old(dialogurl), sendmobile);
item = mediaUpload(item);
if (StringUtils.isBlank(item.getLogo()))
return false;
try {
responseData = APPManager.updateApp(createAppParams(item));
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return false;
}
return true;
}
public static boolean updateMsgTypeApp(String agentid, String img_url, String name, String description, String dialogurl, String dialogurl_pc, String sendmobile) {
String responseData = null;
MsgDataItem item = updateMsgDataItem(agentid, img_url, 2, name, description, checkDialogUrl_New(dialogurl), checkDialogUrl_Old(dialogurl_pc), sendmobile);
item = mediaUpload(item);
if (StringUtils.isBlank(item.getLogo()))
return false;
try {
responseData = APPManager.updateApp(createAppParams(item));
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
JSONObject objectData = JSONObject.parseObject(responseData);
if (objectData != null && objectData.getIntValue("errcode") != 0) {
log.error(objectData.getString("errmsg"));
return false;
}
return true;
}
public static boolean updateMsgBizType(String id, String imgurl, String group, String enable, String enablepc, String enableem, String sendmobile) {
RecordSet rs = new RecordSet();
boolean flag;
rs.executeUpdate("update ecology_biz_mobile_config set groupid = ? , enable = ? ,enablepc = ?,enableem = ? ,imgurl=?, sendmobile = ? where belongid = ? and biztypeid is not null ", group, enable, enablepc, enableem, imgurl, sendmobile, id);
rs.executeQuery("select * from ecology_biz_mobile_config where belongid = ? and biztypeid is not null ", id);
while (rs.next()) {
if (StringUtils.isNotBlank(rs.getString("agentid"))) {
flag = updateMsgTypeApp(rs.getString("agentid"), rs.getString("imgurl"), rs.getString("name"), rs.getString("description"), rs.getString("em_app_url"), rs.getString("dialogurl"), rs.getString("sendmobile"));
}
}
return true;
}
public static void deleteMsgTypeApp(String agentids) {
try {
String[] agentid = agentids.split(",");
for (String id : agentid) {
String data = APPManager.delete(id);
log.info(data);
}
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
public static void deleteMsgBizType(String ids) {
String[] idStr = Util.splitString(ids, ",");
RecordSet rs = new RecordSet();
for (String id : idStr) {
rs.executeQuery("select * from ecology_biz_mobile_config where belongid = ? and biztypeid is not null ", id);
while (rs.next() && StringUtils.isNotBlank(rs.getString("agentid"))) {
deleteMsgTypeApp(rs.getString("agentid"));
}
rs.executeUpdate("delete from ecology_biz_mobile_config where belongid = ? and biztypeid is not null ", id);
}
}
/**
* ECEM dialogurl
*
* @return
*/
public static void initDialogUrlOld() {
//EM移动端地址在EC数据库中初始化
RecordSet rs = new RecordSet();
rs.executeQuery("select id,dialogurl,is_em_app_url from ECOLOGY_BIZ_MOBILE_CONFIG where is_em_app_url = ?", "n");
List<List> params = new ArrayList<>();
while (rs.next()) {
if (("n").equals(rs.getString("is_em_app_url"))) {
if (rs.getString("dialogurl")!= null && rs.getString("dialogurl").startsWith(MsgToEMConstant.DIALOG_URL)){
List list = new ArrayList<>();
list.add(checkDialogUrl_New(rs.getString("dialogurl")));
list.add("y");
list.add(rs.getString("id"));
params.add(list);
}
}
}
rs.executeBatchSql("update ECOLOGY_BIZ_MOBILE_CONFIG set em_app_url = ? ,is_em_app_url = ? where id = ? ", params);
// EM移动端地址在EM初始化
if (EMManager.getJoinStatus(true)) {
RecordSet recordSet = new RecordSet();
int random = (int) (Math.random() * 1000);
rs.executeQuery("select id,agentid,imgurl,name,dialogurl,em_app_url,sendmobile,belongid,is_dialogurl,is_em_app_url from ECOLOGY_BIZ_MOBILE_CONFIG where agentid is not null");
while (rs.next()) {
if (StringUtils.isNotBlank(rs.getString("agentid"))) {
// 修复客户交流提醒数据
if("28".equals(rs.getString("id")) && "y".equals(rs.getString("is_em_app_url"))){
try {
boolean flag = MsgECToEM.updateMsgTypeApp(rs.getString("agentid"), rs.getString("imgurl"), rs.getString("name"), "", randomDialogUrl(checkDialogUrl_New("/spa/crm/static4mobile/index.html#/remind"), random), randomDialogUrl(checkDialogUrl_Old(rs.getString("dialogurl")), random), rs.getString("sendmobile"));
if (flag)
recordSet.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set is_em_app_url =? where id = ? ", "n", rs.getString("id"));
} catch (Exception e) {
e.printStackTrace();
}
}
if (("n").equals(rs.getString("is_dialogurl"))) {
try {
boolean flag = MsgECToEM.updateMsgTypeApp(rs.getString("agentid"), rs.getString("imgurl"), rs.getString("name"), "", randomDialogUrl(checkDialogUrl_New(rs.getString("em_app_url")), random), randomDialogUrl(checkDialogUrl_Old(rs.getString("dialogurl")), random), rs.getString("sendmobile"));
if (flag)
recordSet.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set dialogurl = ?,is_dialogurl=? where id = ? ", checkDialogUrl_Old(rs.getString("dialogurl")), "y", rs.getString("id"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
/**
* ECEMEM
*
* @param dialogurl EM
* @param random
* @return
*/
public static String randomDialogUrl(String dialogurl, int random) {
if (dialogurl.startsWith(MsgToEMConstant.DIALOG_URL) || dialogurl.startsWith(MsgToEMConstant.DIALOG_URL_NEW)) {
// dialogurl = checkDialogUrl(dialogurl); //检测dialogUrl
String[] dialogurls = dialogurl.split("\\?");
if (dialogurls.length > 1)
dialogurl = dialogurl.replaceAll("#", "?" + dialogurls[1] + "&v=test" + random + "#");
else
return null;
}
return dialogurl;
}
/**
* ECEM
*
* @param dialogurl EM
* @return dialogurl
*/
public static String checkDialogUrl_New(String dialogurl) {
if (StringUtils.isNotBlank(dialogurl) && dialogurl.startsWith(MsgToEMConstant.DIALOG_URL))
dialogurl = dialogurl.replace(MsgToEMConstant.DIALOG_URL, MsgToEMConstant.DIALOG_URL_NEW);
return dialogurl;
}
/**
* ECEM
*
* @param dialogurl_Old EM
* @return dialogurl
*/
public static String checkDialogUrl_Old(String dialogurl_Old) {
if (StringUtils.isNotBlank(dialogurl_Old) && dialogurl_Old.startsWith(MsgToEMConstant.DIALOG_URL_NEW))
dialogurl_Old = dialogurl_Old.replace(MsgToEMConstant.DIALOG_URL_NEW, MsgToEMConstant.DIALOG_URL);
return dialogurl_Old;
}
/**
* agentidEMagentid
*/
public static void insureMessageType(MessageBean bean) {
if (bean != null) {
String agentName = bean.getMessageGroupTypeName();
// String dialogUrl = MsgToEMConstant.DIALOG_URL + bean.getMessageGroupType();
String app_Dialogurl = getEM_APP_DialogUrl(bean.getMessageGroupType());
String pc_Dialogurl = getEM_PC_DialogUrl(bean.getMessageGroupType());
String biztypeid = bean.getMessageGroupType() + "," + bean.getBizType();
boolean isAssistant = false;
RecordSet rs = new RecordSet();
String agentid = null;
rs.executeQuery("select * from ECOLOGY_BIZ_MOBILE_CONFIG where id = ? ", bean.getMessageGroupType());
if (rs.next()) {
agentid = rs.getString("agentid");
app_Dialogurl = rs.getString("em_app_url");
pc_Dialogurl = rs.getString("dialogurl");
}
//1、对业务类型的处理
if (StringUtils.isNotBlank(bean.getBizType()) && ConstantMapping.booleanOfString(bean.getIsDefault())) {
agentName = bean.getBizTitle();
app_Dialogurl = MsgToEMConstant.DIALOG_URL_NEW + bean.getMessageGroupType() + "," + bean.getBizType();
pc_Dialogurl = MsgToEMConstant.DIALOG_URL + bean.getMessageGroupType() + "," + bean.getBizType();
isAssistant = true;
}
if (!isAssistant) {
//3、如果不是业务类型,当agentid为空时调用EM接口创建应用并更新
if (StringUtils.isBlank(agentid)) {
//消息类型
String agentId = CreateMsgTypeApp(bean.getImgUrl(), agentName, agentName, app_Dialogurl, pc_Dialogurl, bean.getSendMobile());
rs.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set agentid=? where id=?", agentId, bean.getMessageGroupType());
bean.setAgentId(agentId);
} else
bean.setAgentId(agentid);
} else {
//4、如果是业务类型,查询业务类型对应的agentid
rs.executeQuery("select * from ECOLOGY_BIZ_MOBILE_CONFIG where biztypeid = ? ", "2,-1," + bean.getBizType());//查询老的业务类型
if (rs.next()) {
String eid = rs.getString("id");
String img_url = rs.getString("imgurl");
rs.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set NAME = ? , DIALOGURL = ? , em_app_url = ?,BIZTYPEID = ? where id = ?", bean.getBizTitle(), pc_Dialogurl, app_Dialogurl, biztypeid, eid);
updateMsgTypeApp(rs.getString("agentid"), img_url, bean.getBizTitle(), "", app_Dialogurl, pc_Dialogurl, bean.getSendMobile());
}
rs.executeQuery("select name,agentid,em_app_url,dialogurl from ecology_biz_mobile_config where biztypeid=?", biztypeid);
if (rs.next()) {
//5、当前业务类型已经创建EM应用时则更新消息实体中agentid参数即可
if (StringUtils.isNotBlank(rs.getString("agentid"))) {
bean.setAgentId(rs.getString("agentid"));
app_Dialogurl = rs.getString("em_app_url");
pc_Dialogurl = rs.getString("dialogurl");
if (!rs.getString("name").equals(bean.getBizTitle())) {
log.info("================update biztitle to EM ====================");
updateMsgTypeApp(bean.getAgentId(), bean.getImgUrl(), bean.getBizTitle(), "", app_Dialogurl, pc_Dialogurl, bean.getSendMobile());
rs.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set name=? where biztypeid=?", bean.getBizTitle(), biztypeid);
rs.executeUpdate("update ECOLOGY_MESSAGE_BIZ_TYPE set biztitle = ? where messagegrouptype = ? and biztype = ?", bean.getBizTitle(), bean.getMessageGroupType(), bean.getBizType());
}
} else {
//6、当前业务类型没有创建EM应用时则调用EM接口创建应用并更新
String agentId = CreateMsgTypeApp(bean.getImgUrl(), agentName, agentName, app_Dialogurl, pc_Dialogurl, bean.getSendMobile());
rs.executeUpdate("update ECOLOGY_BIZ_MOBILE_CONFIG set agentid=? ,dialogurl = ?,em_app_url = ? where biztypeid=?", agentId, pc_Dialogurl, app_Dialogurl, biztypeid);
bean.setAgentId(agentId);
}
} else {
//7、如果当前业务类型是第一次接收,调用EM接口创建并更新即可
String agentId = CreateMsgTypeApp(bean.getImgUrl(), agentName, agentName, app_Dialogurl, pc_Dialogurl, bean.getSendMobile());
rs.executeUpdate("insert into ECOLOGY_BIZ_MOBILE_CONFIG (id,name,messagetypeid,belongid,biztypeid,moduleid,groupid,agentid,dialogurl,em_app_url,imgurl,enable,enablepc,enableem,sendmobile,isshow,isdefault) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
WeaIndexManager.getGuid(8),
bean.getBizTitle(),
bean.getMessageGroupType(),
bean.getBelongId(),
biztypeid,
bean.getModuleId(),
null,
agentId,
pc_Dialogurl,
app_Dialogurl,
bean.getImgUrl(),
bean.getEnable(),
bean.getEnablePC(),
bean.getEnableEM(),
bean.getSendMobile(),
ConstantMapping.CONST_N,
ConstantMapping.CONST_N);
bean.setAgentId(agentId);
}
}
}
}
}

@ -29,7 +29,7 @@ public class CWGLSocketExecute extends BaseBean implements SocketExecute {
Map<String, String> resultMap = null; Map<String, String> resultMap = null;
int userid = 0; int userid = 0;
try { try {
resultMap = getBeanByOAnum(oaTrvlBnsExpnsAcctNo, "formtable_main_281"); resultMap = getBeanByOAnum(oaTrvlBnsExpnsAcctNo, "formtable_main_295");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return XMLUtils.CW2XML(paramMap, "1", e.getMessage()); return XMLUtils.CW2XML(paramMap, "1", e.getMessage());
@ -79,7 +79,7 @@ public class CWGLSocketExecute extends BaseBean implements SocketExecute {
private void updateStatus(int requestid, String flowStatus) throws Exception { private void updateStatus(int requestid, String flowStatus) throws Exception {
try { try {
RecordSet recordSet = new RecordSet(); RecordSet recordSet = new RecordSet();
recordSet.executeUpdate("update formtable_main_281 set cwxtzt = ? where requestId = ?", flowStatus, requestid); recordSet.executeUpdate("update formtable_main_295 set cwxtzt = ? where requestId = ?", flowStatus, requestid);
} catch (Exception e) { } catch (Exception e) {
throw new Exception("更新状态失败"); throw new Exception("更新状态失败");
} }
@ -112,8 +112,9 @@ public class CWGLSocketExecute extends BaseBean implements SocketExecute {
} }
public static void main(String[] args) { public static void main(String[] args) {
String rootPath = "D:\\WEAVER2\\ecology\\"; HashMap<String, String> paramMap = new HashMap<>();
GCONST.setRootPath(rootPath); String sgntrOpn = paramMap.get("sgntrOpn");
GCONST.setServerName("ecology"); sgntrOpn = "(" + 1111 + "):" + sgntrOpn;
System.out.println(sgntrOpn);
} }
} }

@ -0,0 +1,759 @@
package com.engine.tjyh.xc.cmd;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import weaver.general.TimeUtil;
import weaver.general.Util;
/**
* TODO
*
* @Description
* @Author matrix
* @Date 2023/8/12 18:15
**/
public class Test {
public static void main(String[] args) {
String in = "{\n" +
" \"ItineraryList\": [\n" +
" {\n" +
" \"JourneyNO\": null,\n" +
" \"FlightOrderInfoList\": [\n" +
" {\n" +
" \"BasicInfo\": {\n" +
" \"OrderID\": \"26307778053\",\n" +
" \"TripID\": \"0\",\n" +
" \"OrderStatus\": \"全部退票\",\n" +
" \"OrderStatusCode\": \"R\",\n" +
" \"UID\": \"2188872790\",\n" +
" \"PreEmployName\": \"朱琴\",\n" +
" \"EmployeeID\": \"10110551\",\n" +
" \"AccountID\": 989019,\n" +
" \"SubAccountID\": 1098980,\n" +
" \"CorpPayType\": \"因公\",\n" +
" \"CreateTime\": \"2023-08-11 12:47:55\",\n" +
" \"FinishDate\": \"2023-08-11 12:50:41\",\n" +
" \"PrintTicketTime\": \"2023-08-11 12:50:41\",\n" +
" \"FlightClass\": \"N\",\n" +
" \"FlightWay\": \"单程\",\n" +
" \"Remarks\": \"\",\n" +
" \"PreBookDays\": 36,\n" +
" \"ServiceDetailInfo\": {\n" +
" \"BaseServiceFee\": 0,\n" +
" \"BindServiceFee\": 0,\n" +
" \"SpecialServiceFee\": 0,\n" +
" \"UnWorkTimeServiceFee\": 0,\n" +
" \"VIPServiceFee\": 0,\n" +
" \"ItineraryFeeForRMB\": 0,\n" +
" \"ItineraryFeeForForeign\": 0,\n" +
" \"TechnicalServiceFee\": 0,\n" +
" \"PresentInsuranceServiceFee\": 0\n" +
" },\n" +
" \"NBillingType\": \"D\",\n" +
" \"TicketStatus\": \"A\",\n" +
" \"RebookOrderID\": \"\",\n" +
" \"ServerFrom\": \"App\",\n" +
" \"IsOfficialCard\": \"\",\n" +
" \"BookingChannel\": \"App\",\n" +
" \"PlatformOrderID\": \"\",\n" +
" \"PayExchangeRate\": 1,\n" +
" \"OperationCode\": 3,\n" +
" \"Amount\": 2300,\n" +
" \"TravelMoney\": 0,\n" +
" \"ChangeAmount\": 0,\n" +
" \"RefundAmount\": 0,\n" +
" \"CCardPayFee\": 0,\n" +
" \"SendTicketFee\": 0,\n" +
" \"InsuranceFee\": 0,\n" +
" \"PrepayType\": \"MAPAY\",\n" +
" \"TotalServiceFee\": 0,\n" +
" \"Currency\": \"CNY\",\n" +
" \"ForeignAmount\": 2300,\n" +
" \"Refundable\": false,\n" +
" \"Rebookable\": false,\n" +
" \"JourneyID\": \"334388-1\",\n" +
" \"CostCenter\": \"信息技术部\",\n" +
" \"CostCenter2\": \"朱琴\",\n" +
" \"CostCenter3\": \"信息技术部\",\n" +
" \"CostCenter4\": \"\",\n" +
" \"CostCenter5\": \"\",\n" +
" \"CostCenter6\": \"\",\n" +
" \"DefineFlag\": \"2023-09-06 12:00\",\n" +
" \"DefineFlag2\": \"2023-09-07 12:00\",\n" +
" \"JourneyReason\": \"测试飞机退改签。\",\n" +
" \"Project\": \"CLSQDHZ-202308110025\",\n" +
" \"AuditStatus\": \"授权通过\",\n" +
" \"ConfirmPerson\": \"AUTOPASS_APPROVER\",\n" +
" \"ConfirmPerson2\": \"\",\n" +
" \"ConfirmPersonCC\": null,\n" +
" \"ConfirmPersonCC2\": null,\n" +
" \"ConfirmType\": \"A1;C0\",\n" +
" \"ConfirmType2\": \"\",\n" +
" \"PayMixed\": false,\n" +
" \"PaymentItemList\": [\n" +
" {\n" +
" \"PayType\": \"PERSONAL\",\n" +
" \"PayAmount\": 2300,\n" +
" \"ItemDetailList\": [\n" +
" {\n" +
" \"Sequence\": 1,\n" +
" \"PassengerId\": 194517689288163360,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"FeeCode\": \"FlightPackage-Refund\",\n" +
" \"FeeAmount\": 10\n" +
" },\n" +
" {\n" +
" \"Sequence\": 1,\n" +
" \"PassengerId\": 194517689288163360,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"FeeCode\": \"FlightPackage-AirportTransfer\",\n" +
" \"FeeAmount\": 10\n" +
" },\n" +
" {\n" +
" \"Sequence\": 1,\n" +
" \"PassengerId\": 194517689288163360,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"FeeCode\": \"TicketFee\",\n" +
" \"FeeAmount\": 2150\n" +
" },\n" +
" {\n" +
" \"Sequence\": 1,\n" +
" \"PassengerId\": 194517689288163360,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"FeeCode\": \"FlightPackage-Delay\",\n" +
" \"FeeAmount\": 20\n" +
" },\n" +
" {\n" +
" \"Sequence\": 1,\n" +
" \"PassengerId\": 194517689288163360,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"FeeCode\": \"FlightTax\",\n" +
" \"FeeAmount\": 50\n" +
" },\n" +
" {\n" +
" \"Sequence\": 1,\n" +
" \"PassengerId\": 194517689288163360,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"FeeCode\": \"FlightOilFee\",\n" +
" \"FeeAmount\": 60\n" +
" }\n" +
" ]\n" +
" }\n" +
" ],\n" +
" \"IsOnline\": \"T\",\n" +
" \"CorporationId\": \"TIANJINBANK\",\n" +
" \"DockingVendorPlatform\": 0,\n" +
" \"DockingVendorPlatformAccount\": null,\n" +
" \"CorpDockingInfoList\": null,\n" +
" \"airlineCountryIdEqualAccount\": null,\n" +
" \"PreEmployNamePinYin\": \"ZhuQin\",\n" +
" \"CancelAble\": false,\n" +
" \"NewTotalServiceFee\": 0\n" +
" },\n" +
" \"DeliveryInfo\": {\n" +
" \"DeliveryInfo\": \"无需报销凭证\",\n" +
" \"ContactPhone\": \"17612200533\",\n" +
" \"ContactMobile\": \"17612200533\",\n" +
" \"ContactName\": \"商旅客户\",\n" +
" \"DeliveryAddress\": \"\",\n" +
" \"ContactEmail\": \"\"\n" +
" },\n" +
" \"FlightInfo\": [\n" +
" {\n" +
" \"Sequence\": \"1\",\n" +
" \"Flight\": \"CA1507\",\n" +
" \"AirLineCode\": \"CA\",\n" +
" \"AirLineName\": \"中国国航\",\n" +
" \"Remark\": \"\",\n" +
" \"TakeoffTime\": \"2023-09-16 07:30:00\",\n" +
" \"ArrivalTime\": \"2023-09-16 10:00:00\",\n" +
" \"DCityName\": \"北京\",\n" +
" \"DCityName_EN\": \"Beijing\",\n" +
" \"DCityCode\": \"BJS\",\n" +
" \"DPortName\": \"首都国际机场\",\n" +
" \"DPortCode\": \"PEK\",\n" +
" \"Agreement\": \"非协议\",\n" +
" \"Amount\": 2260,\n" +
" \"Price\": 2150,\n" +
" \"PrintPrice\": 2150,\n" +
" \"PriceRate\": 1,\n" +
" \"StandardPrice\": 2150,\n" +
" \"HasMeal\": true,\n" +
" \"OilFee\": 60,\n" +
" \"Tax\": 50,\n" +
" \"Bindtype\": \"U\",\n" +
" \"BindNum\": 1,\n" +
" \"BindAmount\": 40,\n" +
" \"ServerFee\": 0,\n" +
" \"Subsidy\": 0,\n" +
" \"AgeType\": \"ADU\",\n" +
" \"Class\": \"Y\",\n" +
" \"ClassName\": \"经济舱\",\n" +
" \"ClassNameNew\": \"经济舱\",\n" +
" \"SubClass\": \"Y\",\n" +
" \"OfficeNo\": \"PEK841\",\n" +
" \"NonRer\": \"有条件改期\",\n" +
" \"RerNotes\": \"航班起飞前336小时以外同等舱位免费更改起飞前336小时不含内至航班起飞前48小时收取票价5%的更改费起飞前48小时不含内至起飞前4小时收取票面价5%的更改费起飞前4小时不含内及起飞后需收取票面价10%的更改费。改期费与升舱费同时发生时,需同时收取。(婴儿免收变更费)\",\n" +
" \"NonRef\": \"有条件退票\",\n" +
" \"RefNotes\": \"航班起飞前336小时外免收退票费起飞前336小时不含内至航班起飞前48小时需收取票面价5的退票费起飞前48小时不含内至起飞前4小时收取票面价10%的退票费起飞前4小时不含内及起飞后需收取票面价15%的退票费。(婴儿免收退票费)\",\n" +
" \"NonEnd\": \"有条件签转\",\n" +
" \"EndNotes\": \"允许签转,如变更后承运人适用票价高于国航票价,需补齐票价差额后进行变更,同时收取变更手续费;如变更后承运人适用票价低于国航票价,可按自愿退票办理.如按照自愿变更办理,差额不退,同时收取变更手续费.\",\n" +
" \"Adtk\": \"\",\n" +
" \"FuelMileage\": 1178,\n" +
" \"EClassStandardPrice\": 2150,\n" +
" \"SpeicalClassTypeName\": \"\",\n" +
" \"SpeicalClassTypeDescription\": \"\",\n" +
" \"CraftType\": \"747\",\n" +
" \"DAirport\": {\n" +
" \"Name\": \"首都国际机场3号航站楼\",\n" +
" \"Name_en\": \"首都国际机场3号航站楼\",\n" +
" \"Shortname\": \"T3航站楼\",\n" +
" \"Shortname_en\": \"T3航站楼\"\n" +
" },\n" +
" \"ACityName\": \"上海\",\n" +
" \"ACityName_EN\": \"Shanghai\",\n" +
" \"ACityCode\": \"SHA\",\n" +
" \"APortName\": \"虹桥国际机场\",\n" +
" \"APortCode\": \"SHA\",\n" +
" \"AAirport\": {\n" +
" \"Name\": \"虹桥国际机场2号航站楼\",\n" +
" \"Name_en\": \"虹桥国际机场2号航站楼\",\n" +
" \"Shortname\": \"T2航站楼\",\n" +
" \"Shortname_en\": \"T2航站楼\"\n" +
" },\n" +
" \"IsOpenTran\": \"F\",\n" +
" \"IsSurface\": \"F\",\n" +
" \"Reason\": \"\",\n" +
" \"ReasonDesc\": \"您已选择预订时可订到的最低折扣航班\",\n" +
" \"PreBookReason\": \"\",\n" +
" \"PreBookReasonDesc\": \"\",\n" +
" \"LowFlight\": \"\",\n" +
" \"LowClass\": \"\",\n" +
" \"LowestPrice\": 0,\n" +
" \"LowRate\": 0,\n" +
" \"LowDTime\": \"\",\n" +
" \"Tpm\": 1087,\n" +
" \"ClassReason\": \"\",\n" +
" \"ClassReasonDesc\": \"\",\n" +
" \"AgreementReason\": \"\",\n" +
" \"AgreementReasonDesc\": \"\",\n" +
" \"DistanceReason\": \"\",\n" +
" \"DistanceReasonDesc\": \"\",\n" +
" \"FlightTime\": 150,\n" +
" \"AirlineRecordNo\": \"NDYHST\",\n" +
" \"FlightStopInfoList\": null,\n" +
" \"SaleType\": \"NORMAL\",\n" +
" \"PNR\": \"JP8PSH\",\n" +
" \"SegmentNo\": 1,\n" +
" \"ItineraryFee\": 0,\n" +
" \"ItineraryPassengers\": null,\n" +
" \"AgreementCode\": \"NA\",\n" +
" \"DepartureCountryCode\": \"CN\",\n" +
" \"ArrivalCountryCode\": \"CN\",\n" +
" \"TakeOffTimeUTC\": \"2023-09-15T23:30:00Z\",\n" +
" \"ArrivalTimeUTC\": \"2023-09-16T02:00:00Z\",\n" +
" \"Alliance\": \"星空联盟\",\n" +
" \"SectorType\": null,\n" +
" \"DepartureDistrictCode\": \"110000\",\n" +
" \"ArrivalDistrictCode\": \"310000\",\n" +
" \"SettlementAccntAmount\": 0,\n" +
" \"SettlementAccntPrice\": 0,\n" +
" \"SettlementAccntOilFee\": 0,\n" +
" \"SettlementAccntTax\": 0,\n" +
" \"SettlementIndividualAmount\": 2260,\n" +
" \"SettlementIndividualPrice\": 2150,\n" +
" \"SettlementIndividualOilFee\": 60,\n" +
" \"SettlementIndividualTax\": 50,\n" +
" \"ShareFlightNo\": null,\n" +
" \"ReasonCodeInfoList\": null\n" +
" }\n" +
" ],\n" +
" \"PassengerInfo\": [\n" +
" {\n" +
" \"PassengerBasic\": {\n" +
" \"CorpEid\": \"10110551\",\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"PassengerNamePY\": \"ZhuQin\",\n" +
" \"NationalityCode\": \"CN\",\n" +
" \"NationalityName\": \"中国\",\n" +
" \"CardTypeName\": \"身份证\",\n" +
" \"CardTypeNumber\": \"513701199709053029\",\n" +
" \"Gender\": \"F\",\n" +
" \"Birthday\": \"1997-09-05 00:00:00\",\n" +
" \"CostCenter\": \"信息技术部\",\n" +
" \"CostCenter2\": \"朱琴\",\n" +
" \"CostCenter3\": \"信息技术部\",\n" +
" \"CostCenter4\": \"\",\n" +
" \"CostCenter5\": \"\",\n" +
" \"CostCenter6\": \"\",\n" +
" \"Dept1\": \"信息技术部\",\n" +
" \"Dept2\": \"\",\n" +
" \"Dept3\": \"\",\n" +
" \"Dept4\": \"\",\n" +
" \"Dept5\": \"\",\n" +
" \"Dept6\": \"\",\n" +
" \"Dept7\": \"\",\n" +
" \"Dept8\": \"\",\n" +
" \"Dept9\": \"\",\n" +
" \"Dept10\": \"\",\n" +
" \"CardValid\": \"\"\n" +
" },\n" +
" \"SequenceInfo\": [\n" +
" {\n" +
" \"Sequence\": 1,\n" +
" \"TicketInfo\": [\n" +
" {\n" +
" \"AirLineCode\": \"999\",\n" +
" \"TicketNo\": \"2327199524\",\n" +
" \"TicketNoSignCode\": \"999-2327199524\",\n" +
" \"Status\": \"6\",\n" +
" \"StatusDesc\": \"已退票\"\n" +
" },\n" +
" {\n" +
" \"AirLineCode\": \"999\",\n" +
" \"TicketNo\": \"2327200094\",\n" +
" \"TicketNoSignCode\": \"999-2327200094\",\n" +
" \"Status\": \"6\",\n" +
" \"StatusDesc\": \"已退票\"\n" +
" }\n" +
" ],\n" +
" \"InsuranceInfo\": null,\n" +
" \"ChangeInfo\": [\n" +
" {\n" +
" \"Sequence\": 1,\n" +
" \"RebookId\": 66966439,\n" +
" \"CPrepayType\": \"MAPAY\",\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"CStatus\": \"改签成功\",\n" +
" \"CFee\": 0,\n" +
" \"RebookServiceFee\": 0,\n" +
" \"RebookingTime\": \"2023-08-11 12:55:30\",\n" +
" \"RebookedTime\": \"2023-08-11 12:57:00\",\n" +
" \"OriTicketNO\": \"2327199524\",\n" +
" \"PreTicketNO\": \"2327199524\",\n" +
" \"CTicketNO\": \"2327200094\",\n" +
" \"CTicketNoSignCode\": \"999-2327200094\",\n" +
" \"CAirline\": \"CA\",\n" +
" \"CAirlineName\": \"中国国航\",\n" +
" \"CAirType\": \"747\",\n" +
" \"CFlight\": \"CA1507\",\n" +
" \"CPrintPrice\": 2150,\n" +
" \"OilFee\": 60,\n" +
" \"Tax\": 50,\n" +
" \"Subsidy\": 0,\n" +
" \"SubClass\": \"Y\",\n" +
" \"CClass\": \"Y\",\n" +
" \"CClassName\": \"经济舱\",\n" +
" \"CTakeOffTime\": \"2023-09-15 07:30:00\",\n" +
" \"CArrivalTime\": \"2023-09-15 10:00:00\",\n" +
" \"CDCityName\": \"北京\",\n" +
" \"CDPortName\": \"首都国际机场\",\n" +
" \"CDTerminal\": \"T3\",\n" +
" \"CACityName\": \"上海\",\n" +
" \"CAPortName\": \"虹桥国际机场\",\n" +
" \"CATerminal\": \"T2\",\n" +
" \"RebookStatus\": \"S\",\n" +
" \"PriceDifferential\": 0,\n" +
" \"DateChangeFee\": 0,\n" +
" \"SendTicketFee\": 0,\n" +
" \"OriAirLineCode\": \"999\",\n" +
" \"CAirLineCode\": \"999\",\n" +
" \"RebookResonDesc\": \"测试飞机改签。\",\n" +
" \"FlightTime\": \"150\",\n" +
" \"FlightStopInfoList\": null,\n" +
" \"OilFeeDifferential\": 0,\n" +
" \"SpecialClassName\": \"\",\n" +
" \"SpecialClassDesc\": \"\",\n" +
" \"JounaryNo\": \"\",\n" +
" \"AuthorizeStatus\": \"A\",\n" +
" \"CDPortCode\": \"PEK\",\n" +
" \"CAPortCode\": \"SHA\",\n" +
" \"RebookReasonDesc\": \"测试飞机改签。\",\n" +
" \"RebookType\": \"0\",\n" +
" \"CACityCode\": \"SHA\",\n" +
" \"CDCityCode\": \"BJS\",\n" +
" \"TaxDifferential\": 0,\n" +
" \"TakeOffTimeUTC\": \"2023-09-14T23:30:00Z\",\n" +
" \"ArrivalTimeUTC\": \"2023-09-15T02:00:00Z\",\n" +
" \"PriceRate\": 1,\n" +
" \"DepartureCountryCode\": \"CN\",\n" +
" \"ArrivalCountryCode\": \"CN\",\n" +
" \"FlightWay\": \"\",\n" +
" \"DepartureDistrictCode\": \"110000\",\n" +
" \"ArrivalDistrictCode\": \"310000\",\n" +
" \"CheckTicketPrice\": 0,\n" +
" \"ShareFlightNo\": \"\",\n" +
" \"OriginalTicketNoSignCode\": \"999-2327199524\",\n" +
" \"PreTicketNoSignCode\": \"999-2327199524\"\n" +
" }\n" +
" ]\n" +
" }\n" +
" ]\n" +
" }\n" +
" ],\n" +
" \"RefundInfo\": [\n" +
" {\n" +
" \"TokenNO\": \"\",\n" +
" \"Audited\": \"F\",\n" +
" \"PayCustomerAmount\": 2260,\n" +
" \"PayCustomerTravelMoney\": 0,\n" +
" \"RefundAplyTime\": \"2023-08-11 13:02:30\",\n" +
" \"RefundAuditedTime\": \"\",\n" +
" \"RefundTime\": \"2023-08-11 13:04:08\",\n" +
" \"RefundDesc\": \"行程单未打印;航段1 自愿 朱琴,退/改金额0.00,费率0.00。 航段1 自愿 朱琴,退/改金额0.00,费率0.00。\",\n" +
" \"RefundOrderID\": 183992901,\n" +
" \"RefundStatus\": \"S\",\n" +
" \"RefundStatusDesc\": \"已退款\",\n" +
" \"RefundResonDesc\": \"测试退票。\",\n" +
" \"PrepareApprovalNo\": null,\n" +
" \"RefundEmergency\": false,\n" +
" \"RefundDetail\": [\n" +
" {\n" +
" \"Sequence\": 1,\n" +
" \"AirLineCode\": \"999\",\n" +
" \"TicketNo\": \"2327200094\",\n" +
" \"TicketNoSignCode\": \"999-2327200094\",\n" +
" \"Flight\": \"CA1507\",\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"RefundFee\": 0,\n" +
" \"RefundRate\": 0,\n" +
" \"RefundServiceFee\": 0,\n" +
" \"Subsidy\": 0,\n" +
" \"RebookingListID\": 66966439,\n" +
" \"RebookingID\": 66966439,\n" +
" \"UsedAmount\": 0,\n" +
" \"UsedTax\": 0,\n" +
" \"UnusedRefundServiceFeeType\": 0,\n" +
" \"UnusedRefundServiceFee\": 0,\n" +
" \"RefundItineraryFee\": 0,\n" +
" \"RefundInsuranceDetail\": null,\n" +
" \"TotalEmdAmount\": 0,\n" +
" \"ShareFlightNo\": \"\"\n" +
" },\n" +
" {\n" +
" \"Sequence\": 1,\n" +
" \"AirLineCode\": \"999\",\n" +
" \"TicketNo\": \"2327199524\",\n" +
" \"TicketNoSignCode\": \"999-2327199524\",\n" +
" \"Flight\": \"CA1507\",\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"RefundFee\": 0,\n" +
" \"RefundRate\": 0,\n" +
" \"RefundServiceFee\": 0,\n" +
" \"Subsidy\": 0,\n" +
" \"RebookingListID\": 0,\n" +
" \"RebookingID\": 0,\n" +
" \"UsedAmount\": 0,\n" +
" \"UsedTax\": 0,\n" +
" \"UnusedRefundServiceFeeType\": 0,\n" +
" \"UnusedRefundServiceFee\": 0,\n" +
" \"RefundItineraryFee\": 0,\n" +
" \"RefundInsuranceDetail\": null,\n" +
" \"TotalEmdAmount\": 0,\n" +
" \"ShareFlightNo\": null\n" +
" }\n" +
" ],\n" +
" \"RefundProcessList\": [\n" +
" {\n" +
" \"ProcessName\": \"A\",\n" +
" \"ProcessStatus\": 2\n" +
" },\n" +
" {\n" +
" \"ProcessName\": \"O\",\n" +
" \"ProcessStatus\": 2\n" +
" },\n" +
" {\n" +
" \"ProcessName\": \"F\",\n" +
" \"ProcessStatus\": 2\n" +
" },\n" +
" {\n" +
" \"ProcessName\": \"V\",\n" +
" \"ProcessStatus\": 2\n" +
" },\n" +
" {\n" +
" \"ProcessName\": \"C\",\n" +
" \"ProcessStatus\": 2\n" +
" },\n" +
" {\n" +
" \"ProcessName\": \"R\",\n" +
" \"ProcessStatus\": 2\n" +
" },\n" +
" {\n" +
" \"ProcessName\": \"Q\",\n" +
" \"ProcessStatus\": -1\n" +
" }\n" +
" ]\n" +
" }\n" +
" ],\n" +
" \"FlightChangeInfo\": null,\n" +
" \"RelatedOrderList\": null,\n" +
" \"FlightTicketPrintInfo\": {\n" +
" \"SegmentPrintInfoList\": null,\n" +
" \"RegularExpressInfoList\": null\n" +
" },\n" +
" \"PackageList\": [\n" +
" {\n" +
" \"PackageID\": 26309456058,\n" +
" \"PackageName\": \"商旅超能增值包\",\n" +
" \"PackageDescription\": \"1.机票发生退票后,航班延误服务不再适用于退票后重新预定的航班。<br>2.本产品不支持婴儿购买。\",\n" +
" \"RefundBookNotice\": \"航班起飞前,服务包中服务均未使用、未过期,服务包可与机票一起退订(不支持服务包子产品单退),航班起飞后服务包不可退订。\",\n" +
" \"PaymentAmount\": 40,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"ProductList\": [\n" +
" {\n" +
" \"ProductName\": \"24小时退票立减\",\n" +
" \"ProductDescription\": \"出票后24小时内所下单机票起飞前发生退票乘机人可获得1次退票费立减服务可享抵扣退票费的40%。&lt;br&gt;使用说明1. 退票费抵用券所下单机票出票后24小时内可使用仅限原航班起飞前使用。2. 机票发生退票后航班延误补偿服务不再适用于退票后重新预定的航班。3. 成人可购买不支持儿童婴儿购买。4. 本服务一经发放,不可退改。\",\n" +
" \"EffectTime\": \"\",\n" +
" \"ExpireTime\": \"2023-09-16 07:30:00\"\n" +
" },\n" +
" {\n" +
" \"ProductName\": \"延误补偿\",\n" +
" \"ProductDescription\": \"乘机人乘坐本航班且抵达目的地时间延误2小时以上即可享受接送机券补偿。航班取消备降返航以及改签后的航班不可享受该服务。抵达目的地时间延误超过2小时且 不超过4小时补偿5张20元接送机券抵达目的地时间延误超过4小时以上补偿10张20元接送机券接送机券自发放之日起30天内使用有效且限对应乘机人使用。&lt;br&gt;使用说明1. 仅适用于携程商旅Online和APP国内接送机服务因公因私都可用。2. 购买携程商旅指定增值服务包赠送每张价值20元。每张国内接送机订单只能使用一张优惠券限预订账户使用。3. 订单支付成功后获得优惠券获券之日起30天内有效。4. 本券一经发放不可退改。\",\n" +
" \"EffectTime\": \"\",\n" +
" \"ExpireTime\": \"2023-10-16 07:30:00\"\n" +
" },\n" +
" {\n" +
" \"ProductName\": \"商旅40元接送机券\",\n" +
" \"ProductDescription\": \"接送机券服务介绍40元接送机券服务仅限携程商旅国内接送机使用抵扣40元每张国内接送机订单只能使用一张优惠券30天内可使用。优惠券使用方法1、仅适用于携程商旅Online和APP国内接送机服务因公因私都可用。 2、购买携程商旅指定增值服务包赠送每张价值40元。每张国内接送机订单只能使用一张优惠券限预订账户使用。 3、订单支付成功后获得优惠券获券之日起30天内有效。退定须知航班起飞前服务包中服务均未使用未过期服务包可与机票一起退定不支持服务包子产品单退航班起飞后服务包不可退订\",\n" +
" \"EffectTime\": \"\",\n" +
" \"ExpireTime\": \"\"\n" +
" }\n" +
" ]\n" +
" }\n" +
" ],\n" +
" \"XProductDetailList\": null,\n" +
" \"FlightOrderFeeDetailList\": [\n" +
" {\n" +
" \"TransactionType\": \"D\",\n" +
" \"PayType\": \"PERSONAL\",\n" +
" \"TransactionAmount\": 2260,\n" +
" \"PayCurrency\": \"CNY\",\n" +
" \"TransactionId\": 1326002175015649300,\n" +
" \"PassengerId\": 96759836,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"Sequence\": 1,\n" +
" \"EmployeeID\": \"10110551\",\n" +
" \"TransactionTime\": \"2023-08-11 12:49:37\"\n" +
" },\n" +
" {\n" +
" \"TransactionType\": \"R\",\n" +
" \"PayType\": \"PERSONAL\",\n" +
" \"TransactionAmount\": -2260,\n" +
" \"PayCurrency\": \"CNY\",\n" +
" \"TransactionId\": 1326009575083933700,\n" +
" \"PassengerId\": 96759836,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"Sequence\": 1,\n" +
" \"EmployeeID\": \"10110551\",\n" +
" \"TransactionTime\": \"2023-08-11 13:04:21\"\n" +
" },\n" +
" {\n" +
" \"TransactionType\": \"D\",\n" +
" \"PayType\": \"PERSONAL\",\n" +
" \"TransactionAmount\": 10,\n" +
" \"PayCurrency\": \"CNY\",\n" +
" \"TransactionId\": 1326002156393005000,\n" +
" \"PassengerId\": 96759836,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"Sequence\": 1,\n" +
" \"EmployeeID\": \"10110551\",\n" +
" \"TransactionTime\": \"2023-08-11 12:49:37\"\n" +
" },\n" +
" {\n" +
" \"TransactionType\": \"D\",\n" +
" \"PayType\": \"PERSONAL\",\n" +
" \"TransactionAmount\": 20,\n" +
" \"PayCurrency\": \"CNY\",\n" +
" \"TransactionId\": 1326002156393005000,\n" +
" \"PassengerId\": 96759836,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"Sequence\": 1,\n" +
" \"EmployeeID\": \"10110551\",\n" +
" \"TransactionTime\": \"2023-08-11 12:49:37\"\n" +
" },\n" +
" {\n" +
" \"TransactionType\": \"D\",\n" +
" \"PayType\": \"PERSONAL\",\n" +
" \"TransactionAmount\": 10,\n" +
" \"PayCurrency\": \"CNY\",\n" +
" \"TransactionId\": 1326002156393005000,\n" +
" \"PassengerId\": 96759836,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"Sequence\": 1,\n" +
" \"EmployeeID\": \"10110551\",\n" +
" \"TransactionTime\": \"2023-08-11 12:49:37\"\n" +
" },\n" +
" {\n" +
" \"TransactionType\": \"R\",\n" +
" \"PayType\": \"PERSONAL\",\n" +
" \"TransactionAmount\": -10,\n" +
" \"PayCurrency\": \"CNY\",\n" +
" \"TransactionId\": 1326008687367815200,\n" +
" \"PassengerId\": 96759836,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"Sequence\": 1,\n" +
" \"EmployeeID\": \"10110551\",\n" +
" \"TransactionTime\": \"2023-08-11 13:02:35\"\n" +
" },\n" +
" {\n" +
" \"TransactionType\": \"R\",\n" +
" \"PayType\": \"PERSONAL\",\n" +
" \"TransactionAmount\": -10,\n" +
" \"PayCurrency\": \"CNY\",\n" +
" \"TransactionId\": 1326008576513540000,\n" +
" \"PassengerId\": 96759836,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"Sequence\": 1,\n" +
" \"EmployeeID\": \"10110551\",\n" +
" \"TransactionTime\": \"2023-08-11 13:02:34\"\n" +
" },\n" +
" {\n" +
" \"TransactionType\": \"R\",\n" +
" \"PayType\": \"PERSONAL\",\n" +
" \"TransactionAmount\": -20,\n" +
" \"PayCurrency\": \"CNY\",\n" +
" \"TransactionId\": 1326008633413402600,\n" +
" \"PassengerId\": 96759836,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"Sequence\": 1,\n" +
" \"EmployeeID\": \"10110551\",\n" +
" \"TransactionTime\": \"2023-08-11 13:02:34\"\n" +
" }\n" +
" ],\n" +
" \"TripRecordInfoList\": [\n" +
" {\n" +
" \"TripId\": 49790311,\n" +
" \"Sequence\": 1,\n" +
" \"PassengerName\": \"朱琴\",\n" +
" \"RecordStatus\": \"R\",\n" +
" \"ValidFlag\": true,\n" +
" \"FlightClass\": \"N\",\n" +
" \"Flight\": \"CA1507\",\n" +
" \"ClassGrade\": \"Y\",\n" +
" \"SubClass\": \"Y\",\n" +
" \"TakeOffTime\": \"2023-09-15 07:30:00.000\",\n" +
" \"ArrivalTime\": \"2023-09-15 10:00:00.000\",\n" +
" \"DCity\": 1,\n" +
" \"DPort\": \"PEK\",\n" +
" \"DPortBuilding\": \"T3\",\n" +
" \"DPortBuildingId\": 3,\n" +
" \"ACity\": 2,\n" +
" \"APort\": \"SHA\",\n" +
" \"APortBuilding\": \"T2\",\n" +
" \"APortBuildingId\": 35,\n" +
" \"OpenTranFlag\": false,\n" +
" \"PrintPrice\": 2150,\n" +
" \"Oil\": 60,\n" +
" \"Tax\": 50,\n" +
" \"RecordNo\": \"JP8PSH\",\n" +
" \"AirlineRecordNo\": \"MFTPDS\",\n" +
" \"SharedFlag\": false,\n" +
" \"SharedFlight\": \"\",\n" +
" \"SurfaceFlag\": false,\n" +
" \"AirLineCode\": \"999\",\n" +
" \"TicketNo\": \"2327200094\",\n" +
" \"TicketNoStatus\": 1,\n" +
" \"DepartureCityName\": \"北京\",\n" +
" \"DepartureAirPortName\": \"首都国际机场\",\n" +
" \"ArrivalCityName\": \"上海\",\n" +
" \"ArrivalAirportName\": \"虹桥国际机场\",\n" +
" \"DepartureDistrictCode\": \"110000\",\n" +
" \"ArrivalDistrictCode\": \"310000\",\n" +
" \"ClassTypeName\": \"经济舱\",\n" +
" \"AirLineName\": \"中国国际航空股份有限公司\"\n" +
" }\n" +
" ]\n" +
" }\n" +
" ],\n" +
" \"HotelOrderInfoList\": null,\n" +
" \"TrainOrderInfoList\": null,\n" +
" \"HotelSupplementOrderInfoList\": null,\n" +
" \"TrainSupplementOrderInfoList\": null,\n" +
" \"CarOrderInfoList\": null,\n" +
" \"CarQuickOrderInfoList\": null,\n" +
" \"DomPickUpOrderInfoList\": null,\n" +
" \"DomCharterCarOrderInfoList\": null,\n" +
" \"IntlTrainOrderInfoList\": null\n" +
" }\n" +
" ],\n" +
" \"Status\": {\n" +
" \"Success\": true,\n" +
" \"Message\": \"调用成功。\",\n" +
" \"ErrorCode\": 0\n" +
" }\n" +
"}";
System.out.println(in);
JSONObject orderObj = JSONObject.parseObject(in);
JSONArray array = orderObj.getJSONArray("ItineraryList");
JSONArray flightOrderInfoList = null;
for (int i = 0; i < array.size(); i++) {
JSONObject detailObj = array.getJSONObject(i);
flightOrderInfoList = detailObj.getJSONArray("FlightOrderInfoList");
}
JSONObject obj = flightOrderInfoList.getJSONObject(0);
// JSONObject baseInfo = obj.getJSONObject("BasicInfo");
// String employeeID = baseInfo.getString("EmployeeID");
// }
JSONArray PassengerInfoList = obj.getJSONArray("PassengerInfo");
JSONArray ticketInfoList = obj.getJSONArray("TicketInfoList");
JSONObject passengerInfoObj = PassengerInfoList.getJSONObject(0);
String employeeID = passengerInfoObj.getJSONObject("PassengerBasic").getString("CorpEid"); //FlightOrderInfoEntity—PassengerInfoEntity—PassengerBasic
JSONObject basicInfo = obj.getJSONObject("BasicInfo");
String jouneryID = basicInfo.getString("JourneyID"); //—FlightOrderInfoEntity—BasicInfo
JSONObject FlightInfo= obj.getJSONArray("FlightInfo").getJSONObject(0);
System.out.println(FlightInfo.getString("Flight"));//航班号
System.out.println(FlightInfo.getString("TakeoffTime"));//开始时间
System.out.println(FlightInfo.getString("ArrivalTime"));//到达时间
System.out.println(FlightInfo.getString("DCityName"));
System.out.println(FlightInfo.getString("DCityCode"));
System.out.println(FlightInfo.getString("Amount"));
JSONArray RefundInfoEntityList = obj.getJSONArray("RefundInfo");
String tgqyy = "";
JSONObject RefundInfoEntity = null;
if(RefundInfoEntityList!=null) {
RefundInfoEntity = RefundInfoEntityList.getJSONObject(0);
// 退票ItineraryEntity—FlightOrderInfoEntity—RefundInfoEntity
// 改签:
// ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
tgqyy = RefundInfoEntity.getString("RefundResonDesc");//TrainOrderInfoEntity—PassengerInfo—OrderTicketInfo
}
JSONArray SequenceInfoEntityList = passengerInfoObj.getJSONArray("SequenceInfo");
JSONObject SequenceInfoEntity = SequenceInfoEntityList.getJSONObject(0);
JSONArray ChangeInfoEntityList = SequenceInfoEntity.getJSONArray("ChangeInfo");
JSONObject ChangeInfoEntity = ChangeInfoEntityList.getJSONObject(0);
JSONArray TripRecordInfoList = obj.getJSONArray("TripRecordInfoList");
JSONObject TripRecordInfoEntity = TripRecordInfoList.getJSONObject(0);
tgqyy = RefundInfoEntity.getString("RefundResonDesc");
System.out.println( tgqyy);
// System.out.println(ChangeInfoEntity.getString("CTicketNO"));//航班号
// System.out.println(ChangeInfoEntity.getString("CTakeOffTime"));//开始时间
// System.out.println(ChangeInfoEntity.getString("CArrivalTime"));//结束时间
// System.out.println(ChangeInfoEntity.getString("CDCityName"));//cfd
// System.out.println(ChangeInfoEntity.getString("CACityName"));//到达地
// System.out.println(ChangeInfoEntity.getString("CPrintPrice"));//改签后机票金额
}
}

@ -0,0 +1,975 @@
package com.engine.tjyh.xc.cmd;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.tjyh.xc.util.HttpRequestUtil;
import com.engine.tjyh.xc.util.WorkflowCreateHandler;
import okhttp3.*;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
/**
* @Description
* @Author matrix
* @Date 2023/6/15 10:09
**/
public class XcCmd extends AbstractCommonCommand<Map<String, Object>> {
public XcCmd(JSONObject params) {
this.params = params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
HttpRequestUtil httpRequestUtil = HttpRequestUtil.getInstance();
RecordSet rs = new RecordSet();
BaseBean bb = new BaseBean();
Map<String, Object> apimap = new HashMap<String, Object>();
writeLog("XcCmd--------:"+params);
String appKey = bb.getPropValue("tjyhxcjc","appKey");
String appSecurity = bb.getPropValue("tjyhxcjc","appSecurity");
String url = bb.getPropValue("tjyhxcjc","url");
String orderurl = bb.getPropValue("tjyhxcjc","orderurl");
String workflowId = bb.getPropValue("tjyhxcjc","workflowId");
Map map= new HashMap<>();
map.put("appKey",appKey);
map.put("appSecurity",appSecurity);
String input = JSON.toJSONString(map);
writeLog("input="+input);
String back = httpRequestUtil.doPostJson(url, input);
writeLog("back="+back);
JSONObject backObj = JSONObject.parseObject(back);
String ticket = backObj.getString("Ticket");
bb.writeLog("ticket="+ticket);
JSONObject obj = (JSONObject) params;
String approveScenario = obj.getString("approveScenario");
String corpId = obj.getString("corpId");
String orderId = obj.getString("orderId");
String orderStatus = obj.getString("orderStatus");
String productType = obj.getString("productType");
String sign = obj.getString("sign");
String tgq="0"; //1 改签 2:退
if("FlightInternational".equals(productType)||"FlightDomestic".equals(productType)){
//机票 ,改签成功
if("rebookSuccess".equals(orderStatus)){
tgq="1";
}
//退票成功(退款成功)
if("refunded".equals(orderStatus)||"RefundSuccess".equals(orderStatus)){
tgq="2";
}
}
if("HotelContract".equals(productType)||"HotelMember".equals(productType)){
// 取消
if("Cancelled".equals(orderStatus)){
tgq="2";
}
}
if("Train".equals(productType)){
//已改签
if("Rebooked".equals(orderStatus)){
tgq="1";
}
//SubmitRefund 退票成功
if("SubmitRefund".equals(orderStatus)){
tgq="2";
}
}
if("0".equals(tgq)){
apimap.put("errno","-1");
apimap.put("errmsg","不触发流程");
return apimap;
}
Map orderMap = new HashMap();
Map authMap = new HashMap();
authMap.put("AppKey",appKey);
authMap.put("Ticket",ticket);
orderMap.put("Auth",authMap);
orderMap.put("JourneyNo","");
orderMap.put("OrderID",orderId);
orderMap.put("SearchType",1);
String orderInput = JSON.toJSONString(orderMap);
bb.writeLog("orderInput="+orderInput);
String orderBack = httpRequestUtil.doPostJson(orderurl, orderInput);
// String orderBack = postData(orderInput,orderurl);
bb.writeLog("orderBack="+orderBack);
if(isJsonValid(orderBack)) {
JSONObject orderObj = JSONObject.parseObject(orderBack);
JSONArray array = orderObj.getJSONArray("ItineraryList");
for (int i = 0; i < array.size(); i++) {
JSONObject detailObj = array.getJSONObject(i);
JSONArray flightOrderInfoList = detailObj.getJSONArray("FlightOrderInfoList");
JSONArray hotelOrderInfoList = detailObj.getJSONArray("HotelOrderInfoList");
JSONArray trainOrderInfoList = detailObj.getJSONArray("TrainOrderInfoList");
if(flightOrderInfoList!=null){
doFlightOrder(flightOrderInfoList,workflowId,tgq);
}
if(hotelOrderInfoList!=null){
doHotailOrder(hotelOrderInfoList,workflowId,tgq);
}
if(trainOrderInfoList!=null){
doTrainOrder(trainOrderInfoList,workflowId,tgq);
}
}
}else{
apimap.put("errno","-1");
apimap.put("errmsg","订单数据格式不对");
}
if("".equals(params.toString())){
apimap.put("errno","-1");
apimap.put("errmsg","空数据");
}else {
apimap.put("errno", "0");
apimap.put("errmsg", "");
}
return apimap;
}
public static String GetSign(String corpId,String productType,String orderStatus,String orderId,String statusIDs ,String refundType,String secret,String approveScenario)
{
//构造字典
HashMap<String,String> hashMap=new HashMap<String,String>();
hashMap.put("secret",secret);
hashMap.put("corpId",corpId);
hashMap.put("productType",productType);
hashMap.put("orderId",orderId);
hashMap.put("orderStatus",orderStatus);
//排序
Collection<String> collection=hashMap.keySet();
ArrayList<String> list=new ArrayList<String>(collection);
Collections.sort(list);
//拼接
String str="";
for( int i=0;i<list.size();i++)
{
str+=list.get(i)+"="+hashMap.get(list.get(i));
if(i!=list.size()-1)
str+="&";
}
//SH1加密
return DigestUtils.sha1Hex(str).toUpperCase();
}
/**
*
* @param hotelOrderInfoList
* @param workflowId
* @param tgq
* @return
*/
public String doHotailOrder(JSONArray hotelOrderInfoList,String workflowId,String tgq){
String tgqlx = "2";//飞机 火车 酒店
String sqlx = "0";// 退单 改签
if("1".equals(tgq)){
sqlx = "1";
}else if("2".equals(tgq)){
sqlx = "0";
}
String tgqcplx = "5";// 飞机退单 飞机改签 火车退单 火车改签 酒店退单 酒店改签
String cbzx ="";//成本中心 主表 浏览按钮 分部 1.00
String ccrbm ="";//出差人部门 主表 浏览按钮 部门 2.00
String ccr="";//出差人 主表 浏览按钮 人力资源 3.00
String zwcj="";//职务层级 主表 单行文本框 文本 4.00 加密设置
String sqrq="";//申请日期 主表 浏览按钮 日期 5.00
String lcbh="";//流程编号 主表 单行文本框 文本 6.00 加密设置
String yccsj="-1";//原出差数据 主表 浏览按钮 流程 7.00
String tgqyy="改签";//退改签原因 主表 多行文本框 多行文本框 8.00
String str = "";
// for(int i=0;i<trainOrderInfoList.size();i++){
JSONObject obj = hotelOrderInfoList.getJSONObject(0);
// JSONObject baseInfo = obj.getJSONObject("BasicInfo");
// String employeeID = baseInfo.getString("EmployeeID");
// }
JSONArray ClientInfoList = obj.getJSONArray("ClientInfo");
JSONObject ClientInfoEntity = ClientInfoList.getJSONObject(0);
String employeeID = ClientInfoEntity.getString("EmployeeID"); //TrainOrderInfoEntity—PassengerInfo
writeLog("employeeID="+employeeID);
ccr = getUserId(employeeID)+"";
cbzx = getCompanyIdDeptId(ccr).split("-")[0];
ccrbm = getCompanyIdDeptId(ccr).split("-")[1];
zwcj = getZw(ccr);
sqrq = TimeUtil.getCurrentDateString();
String jouneryID = obj.getString("JourneyNo"); //—HotelOrderInfoEntity
tgqyy = obj.getString("CancelReasonCode");//HotelOrderInfoEntity
String StartTime = obj.getString("StartTime");//开始时间
String EndTime = obj.getString("EndTime");//结束时间
String CityName = obj.getString("CityName");//入住城市
String AmountRMB = obj.getString("AmountRMB");//原酒店金额
JSONObject RefundAmountInfoEnty = obj.getJSONObject("RefundTotalAmount");
String RefundTotalAmount = RefundAmountInfoEnty.getString("TicketPrice");//退回金额
String SubcriptionFee = RefundAmountInfoEnty.getString("SubcriptionFee");//退/改签费
writeLog("tgqyy="+tgqyy);
Map map = new HashMap();
map.put("tgqlx",tgqlx);
map.put("sqlx",sqlx);
map.put("tgqcplx",tgqcplx);
map.put("cbzx",cbzx);
map.put("ccr",ccr);
map.put("zwcj",zwcj);
map.put("ccrbm",ccrbm);
map.put("sqrq",sqrq);
map.put("yccsj",yccsj);
map.put("tgqyy",tgqyy);
if("".equals(AmountRMB)){
AmountRMB="0";
}
if("".equals(SubcriptionFee)){
SubcriptionFee="0";
}
map.put("jdypj",AmountRMB);
map.put("jdtpcsfy",SubcriptionFee);
if(jouneryID.contains("-")){
yccsj= jouneryID.split("-")[0];
writeLog("yccsj="+yccsj);
}
WorkflowCreateHandler handler = new WorkflowCreateHandler();
String tablename = handler.findWorkflowForm(workflowId);
String IsNextFlow = "1";
String title = handler.bulidWorkflowTitle(workflowId,ccr);
String requestId = handler.WorkflowCreateByRequestMap(ccr,workflowId,title,IsNextFlow,map);
writeLog("requestid="+requestId);
if(Util.getIntValue(requestId)>1) {
RecordSet rs = new RecordSet();
rs.execute("select id from " + tablename +" where requestid="+requestId);
rs.next();
String dataId = Util.null2String(rs.getString(1));
writeLog("dataId="+dataId);
String detailTableName = "";
Set set = new HashSet();
List list = new ArrayList();
detailTableName = tablename + "_dt5";
Map mapmx = new HashMap();
mapmx.put("rzsj", StartTime);
mapmx.put("lksj", EndTime);
mapmx.put("rzcs", CityName);
mapmx.put("yjdje", AmountRMB);
mapmx.put("thje", RefundTotalAmount);
mapmx.put("tgqf", SubcriptionFee);
list.add(mapmx);
set.add("rzsj");
set.add("lksj");
set.add("rzcs");
set.add("yjdje");
set.add("thje");
set.add("tgqf");
handler.insertTableDtMX(list, detailTableName, dataId, set);
}
return requestId;
}
/**
*
* @param trainOrderInfoList
* @param workflowId
* @param tgq
* @return
*/
public String doTrainOrder(JSONArray trainOrderInfoList,String workflowId,String tgq){
String tgqlx = "1";//飞机 火车 酒店
String sqlx = "1";// 退单 改签
if("1".equals(tgq)){
sqlx = "1";
}else if("2".equals(tgq)){
sqlx = "0";
}
String tgqcplx = "4";// 飞机退单 飞机改签 火车退单 火车改签 酒店退单 酒店改签
if("1".equals(tgq)){
tgqcplx="4";
}else if("2".equals(tgq)){
tgqcplx="3";
}
String cbzx ="";//成本中心 主表 浏览按钮 分部 1.00
String ccrbm ="";//出差人部门 主表 浏览按钮 部门 2.00
String ccr="";//出差人 主表 浏览按钮 人力资源 3.00
String zwcj="";//职务层级 主表 单行文本框 文本 4.00 加密设置
String sqrq="";//申请日期 主表 浏览按钮 日期 5.00
String lcbh="";//流程编号 主表 单行文本框 文本 6.00 加密设置
String yccsj="-1";//原出差数据 主表 浏览按钮 流程 7.00
String tgqyy="改签";//退改签原因 主表 多行文本框 多行文本框 8.00
String str = "";
// for(int i=0;i<trainOrderInfoList.size();i++){
JSONObject obj = trainOrderInfoList.getJSONObject(0);
// JSONObject baseInfo = obj.getJSONObject("BasicInfo");
// String employeeID = baseInfo.getString("EmployeeID");
// }
JSONArray PassengerInfoList = obj.getJSONArray("PassengerInfoList");
JSONArray ticketInfoList = obj.getJSONArray("TicketInfoList");
JSONObject passengerInfoObj = PassengerInfoList.getJSONObject(0);
String employeeID = passengerInfoObj.getString("EmployeeID"); //TrainOrderInfoEntity—PassengerInfo
writeLog("employeeID="+employeeID);
ccr = getUserId(employeeID)+"";
cbzx = getCompanyIdDeptId(ccr).split("-")[0];
ccrbm = getCompanyIdDeptId(ccr).split("-")[1];
sqrq = TimeUtil.getCurrentDateString();
zwcj = getZw(ccr);
JSONObject corpOrderInfo = obj.getJSONObject("CorpOrderInfo");
String jouneryID = corpOrderInfo.getString("JouneryID"); //—TrainOrderInfoEntity—CorpOrderInfo
if(jouneryID.contains("-")){
yccsj = jouneryID.split("-")[0];
}
JSONArray OrderTicketList = passengerInfoObj.getJSONArray("OrderTicket");
JSONObject OrderTicket = OrderTicketList.getJSONObject(0);
tgqyy = OrderTicket.getString("RefundReasonCodeDesc");//TrainOrderInfoEntity—PassengerInfo—OrderTicketInfo
Map map = new HashMap();
map.put("tgqlx",tgqlx);
map.put("sqlx",sqlx);
map.put("tgqcplx",tgqcplx);
map.put("cbzx",cbzx);
map.put("ccr",ccr);
map.put("zwcj",zwcj);
map.put("ccrbm",ccrbm);
map.put("sqrq",sqrq);
map.put("yccsj",yccsj);
map.put("tgqyy",tgqyy);
JSONObject ticketInfo = null;
JSONObject ticketInfo_z = null;
String refundTicketFee = OrderTicket.getString("RefundTicketFee");//退票费:
if("".equals(refundTicketFee)){
refundTicketFee = "0";
}
String dealTicketPrice = OrderTicket.getString("DealTicketPrice");//DealTicketPrice改签车票金额
if("".equals(dealTicketPrice)){
dealTicketPrice = "0";
}
double jg = 0;
for(int i=0;i<ticketInfoList.size();i++) {
ticketInfo_z = ticketInfoList.getJSONObject(i);
String TicketInfoID_th = ticketInfo_z.getString("TicketInfoID");
writeLog("TicketInfoID_th----" + TicketInfoID_th);
//D原车次C改签车次
String TrainTicketType = ticketInfo_z.getString("TrainTicketType");
String ticketPrice = ticketInfo_z.getString("TicketPrice");//原火车金额
jg = jg + Util.getDoubleValue(ticketPrice);
}
map.put("hcypj",jg);
map.put("hctpcsfy",refundTicketFee);
map.put("hcgqj",dealTicketPrice);
if(jouneryID.contains("-")){
yccsj= jouneryID.split("-")[0];
writeLog("yccsj="+yccsj);
}
WorkflowCreateHandler handler = new WorkflowCreateHandler();
String tablename = handler.findWorkflowForm(workflowId);
String IsNextFlow = "1";
String title = handler.bulidWorkflowTitle(workflowId,ccr);
String requestId = handler.WorkflowCreateByRequestMap(ccr,workflowId,title,IsNextFlow,map);
writeLog("requestid="+requestId);
if(Util.getIntValue(requestId)>1) {
RecordSet rs = new RecordSet();
rs.execute("select id from " + tablename +" where requestid="+requestId);
rs.next();
String dataId = Util.null2String(rs.getString(1));
writeLog("dataId="+dataId);
for(int i=0;i<ticketInfoList.size();i++){
ticketInfo = ticketInfoList.getJSONObject(i);
String TicketInfoID_th = ticketInfo.getString("TicketInfoID");
writeLog("TicketInfoID_th----"+TicketInfoID_th);
//D原车次C改签车次
String TrainTicketType = ticketInfo.getString("TrainTicketType");
String trainName = ticketInfo.getString("TrainName");//列车号
writeLog("trainName="+trainName);
String departureDateTime = ticketInfo.getString("DepartureDateTime");//开始时间
String arrivalDateTime = ticketInfo.getString("ArrivalDateTime");//结束时间
String departureCityName = ticketInfo.getString("DepartureCityName");//出发地
String arrivalCityName = ticketInfo.getString("ArrivalCityName");//到达地
String ticketPrice = ticketInfo.getString("TicketPrice");//原火车金额
String refund = OrderTicket.getString("Refund");//退回金额
if("".equals(refund)){
refund = "0";
}
String detailTableName = "";
Set set = new HashSet();
List list = new ArrayList();
if("1".equals(tgq)){
if("C".equals(TrainTicketType)) {
detailTableName = tablename + "_dt4";
Map mapmx = new HashMap();
mapmx.put("lch", trainName);
mapmx.put("kssj", departureDateTime);
mapmx.put("jssj", arrivalDateTime);
mapmx.put("cfd", departureCityName);
mapmx.put("mdd", arrivalCityName);
mapmx.put("gqhcfy", dealTicketPrice);
list.add(mapmx);
set.add("lch");
set.add("kssj");
set.add("jssj");
set.add("cfd");
set.add("mdd");
set.add("gqhcfy");
}else if("D".equals(TrainTicketType)){
detailTableName =tablename + "_dt3";
Map mapmx = new HashMap();
mapmx.put("lch",trainName);
mapmx.put("kssj",departureDateTime);
mapmx.put("jssj",arrivalDateTime);
mapmx.put("cfd",departureCityName);
mapmx.put("mdd",arrivalCityName);
mapmx.put("yhcje",ticketPrice);
mapmx.put("thje",refund);
mapmx.put("tgqf",refundTicketFee);
list.add(mapmx);
set.add("lch");
set.add("kssj");
set.add("jssj");
set.add("cfd");
set.add("mdd");
set.add("yhcje");
set.add("thje");
set.add("tgqf");
}
}else if("2".equals(tgq)){
writeLog("tgq="+tgq);
String TicketInfoID = "";
for(int j=0;j<PassengerInfoList.size();j++){
JSONObject PassengerInfo = PassengerInfoList.getJSONObject(j);
JSONArray OrderTicketlist = PassengerInfo.getJSONArray("OrderTicket");
for(int k=0;k<OrderTicketlist.size();k++){
JSONObject OrderTicket_mx = OrderTicketList.getJSONObject(k);
String RefundTicketStatus = OrderTicket_mx.getString("RefundTicketStatus");
if("S".equals(RefundTicketStatus)){
TicketInfoID = OrderTicket_mx.getString("TicketInfoID");
}
}
}
writeLog("TicketInfoID="+TicketInfoID);
writeLog("TicketInfoID_th="+TicketInfoID_th);
if(TicketInfoID_th.equals(TicketInfoID)) {
detailTableName = tablename + "_dt3";
Map mapmx = new HashMap();
mapmx.put("lch", trainName);
mapmx.put("kssj", departureDateTime);
mapmx.put("jssj", arrivalDateTime);
mapmx.put("cfd", departureCityName);
mapmx.put("mdd", arrivalCityName);
mapmx.put("yhcje", ticketPrice);
mapmx.put("thje", refund);
mapmx.put("tgqf", refundTicketFee);
list.add(mapmx);
set.add("lch");
set.add("kssj");
set.add("jssj");
set.add("cfd");
set.add("mdd");
set.add("yhcje");
set.add("thje");
set.add("tgqf");
}
}
handler.insertTableDtMX(list, detailTableName, dataId,set);
}
}
return requestId;
}
/**
*
* @param flightOrderInfoList
* @param workflowId
* @param tgq
* @return
*/
public String doFlightOrder(JSONArray flightOrderInfoList,String workflowId,String tgq){
String tgqlx = "0";//飞机 火车 酒店
String sqlx = "0";// 退单 改签
if("1".equals(tgq)){
sqlx = "1";
}else if("2".equals(tgq)){
sqlx = "0";
}
String tgqcplx = "4";// 飞机退单 飞机改签 火车退单 火车改签 酒店退单 酒店改签
if("1".equals(tgq)){
tgqcplx="4";
}else if("2".equals(tgq)){
tgqcplx="3";
}
String cbzx ="";//成本中心 主表 浏览按钮 分部 1.00
String ccrbm ="";//出差人部门 主表 浏览按钮 部门 2.00
String ccr="";//出差人 主表 浏览按钮 人力资源 3.00
String zwcj="";//职务层级 主表 单行文本框 文本 4.00 加密设置
String sqrq="";//申请日期 主表 浏览按钮 日期 5.00
String lcbh="";//流程编号 主表 单行文本框 文本 6.00 加密设置
String yccsj="-1";//原出差数据 主表 浏览按钮 流程 7.00
String tgqyy="改签";//退改签原因 主表 多行文本框 多行文本框 8.00
String str = "";
// for(int i=0;i<trainOrderInfoList.size();i++){
JSONObject obj = flightOrderInfoList.getJSONObject(0);
// JSONObject baseInfo = obj.getJSONObject("BasicInfo");
// String employeeID = baseInfo.getString("EmployeeID");
// }
JSONArray PassengerInfoList = obj.getJSONArray("PassengerInfo");
JSONArray ticketInfoList = obj.getJSONArray("TicketInfoList");
JSONObject passengerInfoObj = PassengerInfoList.getJSONObject(0);
String employeeID = passengerInfoObj.getJSONObject("PassengerBasic").getString("CorpEid"); //FlightOrderInfoEntity—PassengerInfoEntity—PassengerBasic
writeLog("employeeID="+employeeID);
ccr = getUserId(employeeID)+"";
cbzx = getCompanyIdDeptId(ccr).split("-")[0];
ccrbm = getCompanyIdDeptId(ccr).split("-")[1];
sqrq = TimeUtil.getCurrentDateString();
zwcj = getZw(ccr);
JSONObject basicInfo = obj.getJSONObject("BasicInfo");
String jouneryID = basicInfo.getString("JourneyID"); //—FlightOrderInfoEntity—BasicInfo
JSONObject FlightInfo= obj.getJSONArray("FlightInfo").getJSONObject(0);
JSONArray RefundInfoEntityList = obj.getJSONArray("RefundInfo");
JSONObject RefundInfoEntity = null;
if(RefundInfoEntityList!=null) {
RefundInfoEntity = RefundInfoEntityList.getJSONObject(0);
//退票ItineraryEntity—FlightOrderInfoEntity—RefundInfoEntity
//改签:
//ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
tgqyy = RefundInfoEntity.getString("RefundResonDesc");//TrainOrderInfoEntity—PassengerInfo—OrderTicketInfo
}
JSONArray SequenceInfoEntityList = passengerInfoObj.getJSONArray("SequenceInfo");
JSONObject SequenceInfoEntity = SequenceInfoEntityList.getJSONObject(0);
JSONArray ChangeInfoEntityList = SequenceInfoEntity.getJSONArray("ChangeInfo");
JSONObject ChangeInfoEntity = ChangeInfoEntityList.getJSONObject(0);
JSONArray TripRecordInfoList = obj.getJSONArray("TripRecordInfoList");
JSONObject TripRecordInfoEntity = TripRecordInfoList.getJSONObject(0);
if("1".equals(tgq)){
if(ChangeInfoEntity!=null) {
tgqyy = ChangeInfoEntity.getString("RebookResonDesc");
}
}else if("2".equals(tgq)){
if(RefundInfoEntity!=null) {
tgqyy = RefundInfoEntity.getString("RefundResonDesc");
}
}
writeLog("tgqyy="+tgqyy);
Map map = new HashMap();
map.put("tgqlx",tgqlx);
map.put("sqlx",sqlx);
map.put("tgqcplx",tgqcplx);
map.put("cbzx",cbzx);
map.put("ccr",ccr);
map.put("zwcj",zwcj);
map.put("ccrbm",ccrbm);
map.put("sqrq",sqrq);
map.put("yccsj",yccsj);
map.put("tgqyy",tgqyy);
double yjpje_2 = Util.getDoubleValue(TripRecordInfoEntity.getString("PrintPrice"))+Util.getDoubleValue(TripRecordInfoEntity.getString("Oil"))+Util.getDoubleValue(TripRecordInfoEntity.getString("Tax"));
double tgqf_2 = Util.getDoubleValue(basicInfo.getString("RefundAmount"))+Util.getDoubleValue(basicInfo.getString("ChangeAmount"));
String xx = ChangeInfoEntity.getString("CPrintPrice");
if("".equals(xx)){
xx = "0";
}
map.put("fjypj",yjpje_2);
map.put("fjtpcsfy",tgqf_2);
map.put("fjgqj",0);
if(jouneryID.contains("-")){
yccsj= jouneryID.split("-")[0];
writeLog("yccsj="+yccsj);
}
WorkflowCreateHandler handler = new WorkflowCreateHandler();
String tablename = handler.findWorkflowForm(workflowId);
String IsNextFlow = "1";
String title = handler.bulidWorkflowTitle(workflowId,ccr);
String requestId = handler.WorkflowCreateByRequestMap(ccr,workflowId,title,IsNextFlow,map);
writeLog("requestid="+requestId);
if(Util.getIntValue(requestId)>1) {
RecordSet rs = new RecordSet();
rs.execute("select id from " + tablename +" where requestid="+requestId);
rs.next();
String dataId = Util.null2String(rs.getString(1));
writeLog("dataId="+dataId);
String detailTableName = "";
if("1".equals(tgq)){
// 改签明细表 航班号 CTicketNO ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
// 改签明细表 开始时间 CTakeOffTime ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
// 改签明细表 结束时间 CArrivalTime ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
// 改签明细表 出发地 CDCityName ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
// 改签明细表 到达地 CACityName ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
// 改签明细表 "改签后机票金额
// " CPrintPrice ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
detailTableName =tablename + "_dt1";
Set set = new HashSet();
List list = new ArrayList();
Map mapmx = new HashMap();
mapmx.put("hbh",FlightInfo.getString("Flight"));//航班号
mapmx.put("qfsj",FlightInfo.getString("TakeoffTime"));//开始时间
mapmx.put("ddsj",FlightInfo.getString("ArrivalTime"));//到达时间
mapmx.put("cfd",FlightInfo.getString("DCityName"));
mapmx.put("mdd",FlightInfo.getString("ACityName"));
mapmx.put("yjpje",FlightInfo.getString("Amount"));
list.add(mapmx);
set.add("hbh");
set.add("qfsj");
set.add("ddsj");
set.add("cfd");
set.add("mdd");
set.add("yjpje");
handler.insertTableDtMX(list, detailTableName, dataId,set);
set = new HashSet();
list = new ArrayList();
detailTableName =tablename + "_dt2";
mapmx = new HashMap();
mapmx.put("hbh",ChangeInfoEntity.getString("CFlight"));//航班号
mapmx.put("qfsj",ChangeInfoEntity.getString("CTakeOffTime"));//开始时间
mapmx.put("ddsj",ChangeInfoEntity.getString("CArrivalTime"));//结束时间
mapmx.put("cfd",ChangeInfoEntity.getString("CDCityName"));//cfd
mapmx.put("mdd",ChangeInfoEntity.getString("CACityName"));//到达地
mapmx.put("gqfjfy",ChangeInfoEntity.getString("CPrintPrice"));//改签后机票金额
list.add(mapmx);
set.add("tgqf");
set.add("qfsj");
set.add("ddsj");
set.add("cfd");
set.add("mdd");
set.add("gqfjfy");
handler.insertTableDtMX(list, detailTableName, dataId,set);
}else if("2".equals(tgq)){
// 退单明细表 航班号 Flight ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity
// 退单明细表 开始时间 TakeOffTime ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity RecordStatus=R退票
// 退单明细表 结束时间 ArrivalTime ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity RecordStatus=R退票
// 退单明细表 出发地 DepartureCityName ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity RecordStatus=R退票
// 退单明细表 到达地 ArrivalCityName ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity RecordStatus=R退票
// 退单明细表 原机票金额 PrintPrice+Oil+Tax ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity RecordStatus=R退票
// 退单明细表 退回金额 PayCustomerAmount ItineraryEntity—FlightOrderInfoEntity—RefundInfoEntity
// 退单明细表 退/改签费 RefundAmount+ChangeAmount ItineraryEntity—FlightOrderInfoEntity—BasicInfo
Set set2 = new HashSet();
List list = new ArrayList();
detailTableName =tablename + "_dt1";
Map mapmx = new HashMap();
double yjpje = Util.getDoubleValue(TripRecordInfoEntity.getString("PrintPrice"))+Util.getDoubleValue(TripRecordInfoEntity.getString("Oil"))+Util.getDoubleValue(TripRecordInfoEntity.getString("Tax"));
double tgqf = Util.getDoubleValue(basicInfo.getString("RefundAmount"))+Util.getDoubleValue(basicInfo.getString("ChangeAmount"));
mapmx.put("hbh",TripRecordInfoEntity.getString("Flight"));//航班号
mapmx.put("qfsj",TripRecordInfoEntity.getString("TakeOffTime"));//开始时间
mapmx.put("ddsj",TripRecordInfoEntity.getString("ArrivalTime"));//到达时间
mapmx.put("cfd",TripRecordInfoEntity.getString("DepartureCityName"));
mapmx.put("mdd",TripRecordInfoEntity.getString("ArrivalCityName"));
mapmx.put("yjpje",yjpje+"");
mapmx.put("thje", RefundInfoEntity.getString("PayCustomerAmount"));
mapmx.put("tgqf",tgqf+"");
list.add(mapmx);
set2.add("hbh");
set2.add("qfsj");
set2.add("ddsj");
set2.add("cfd");
set2.add("mdd");
set2.add("yjpje");
set2.add("thje");
set2.add("tgqf");
handler.insertTableDtMX(list, detailTableName, dataId,set2);
}
}
return requestId;
}
/**
* id
* @param code
* @return
*/
public int getUserId(String code){
int id= 0;
RecordSet rs = new RecordSet();
rs.execute("select id from hrmresource where workcode='"+code+"'");
rs.next();
id = Util.getIntValue(rs.getString(1));
return id;
}
/**
*
* @param input
* @param url
* @return
*/
public String postData2(String input,String url){
String back = "";
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, input);
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("cache-control", "no-cache")
.build();
try {
Response response = client.newCall(request).execute();
back = response.body().string();
} catch (IOException e) {
throw new RuntimeException(e);
}
return back;
}
/**
*
* @param param
* @param url
* @return
*/
public static String postData(String param,String url)
{
OutputStreamWriter out = null;
BufferedReader in =null;
String result = "";
try
{
URL realUrl = new URL(url);
HttpURLConnection conn = null;
conn = (HttpURLConnection) realUrl.openConnection();
//发送POST请求必须设置如下两行
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
//设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
conn.setRequestProperty("Content-Type", "application/json");
conn.connect();
//获取URLConnection对象对应的输出流
out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
out.write(param);
//发送请求参数
out.flush();
//flush输出流的缓冲
//定义BufferedReader输入流来读取URL的响应
in =new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null)
{
result += line;
System.out.println("OK");
}
}
catch(Exception e)
{
System.out.println("发送POST请求出现异常" + e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally
{
try
{
if (out != null)
{
out.close();
}
if ( in !=null)
{
in .close();
}
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
return result;
}
/**
* JSON
*
* @param jsonStr JSON
* @return truefalse
*/
public static boolean isJsonValid(String jsonStr) {
try {
JSON.parse(jsonStr);
return true;
} catch (JSONException e) {
return false;
}
}
/**
* id
* @param userid
* @return
*/
public String getCompanyIdDeptId(String userid){
RecordSet rs = new RecordSet();
String str = "";
rs.execute(" select subcompanyid1,departmentid from hrmresource where id="+userid);
rs.next();
str = Util.null2String(rs.getString("subcompanyid1"))+"-"+Util.null2String(rs.getString("departmentid"));
return str;
}
/**
*
* @param userid
* @return
*/
public String getZw(String userid){
String str = "";
BaseBean bb = new BaseBean();
RecordSet rs = new RecordSet();
String field4 = bb.getPropValue("tjyhxcjc","field4");
if(!"".equals(field4)) {
// select lastname,field4 from hrmresource left join cus_fielddata on hrmresource.id=cus_fielddata.id where cus_fielddata.scope='HrmCustomFieldByInfoType'
rs.execute("select " + field4 + " from cus_fielddata where scope='HrmCustomFieldByInfoType' and id=" + userid);
rs.next();
str = Util.null2String(rs.getString(1));
}
return str;
}
}

@ -0,0 +1,894 @@
package com.engine.tjyh.xc.cmd;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.tjyh.xc.util.WorkflowCreateHandler;
import com.ibm.db2.jcc.uw.h;
import okhttp3.*;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.hrm.resource.ResourceComInfo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
/**
* @Description
* @Author matrix
* @Date 2023/6/15 10:09
**/
public class XcCmd2 extends AbstractCommonCommand<Map<String, Object>> {
public XcCmd2(JSONObject params) {
this.params = params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
RecordSet rs = new RecordSet();
BaseBean bb = new BaseBean();
Map<String, Object> apimap = new HashMap<String, Object>();
writeLog("XcCmd--------:"+params);
String appKey = bb.getPropValue("tjyhxcjc","appKey");
String appSecurity = bb.getPropValue("tjyhxcjc","appSecurity");
String url = bb.getPropValue("tjyhxcjc","url");
String orderurl = bb.getPropValue("tjyhxcjc","orderurl");
String workflowId = bb.getPropValue("tjyhxcjc","workflowId");
Map map= new HashMap<>();
map.put("appKey",appKey);
map.put("appSecurity",appSecurity);
String input = JSON.toJSONString(map);
// String back =" postData(input,url)";
// JSONObject backObj = JSONObject.parseObject(back);
// String ticket = backObj.getString("Ticket");
// bb.writeLog("ticket="+ticket);
//
// JSONObject obj = (JSONObject) params;
// String approveScenario = obj.getString("approveScenario");
// String corpId = obj.getString("corpId");
// String orderId = obj.getString("orderId");
// String orderStatus = obj.getString("orderStatus");
// String productType = obj.getString("productType");
// String sign = obj.getString("sign");
String tgq="2"; //1 改签 2:退
// if("FlightInternational".equals(productType)||"FlightDomestic".equals(productType)){
// //机票 ,改签成功
// if("rebookSuccess".equals(orderStatus)){
// tgq="1";
// }
// //退票成功(退款成功)
// if("refunded".equals(orderStatus)){
// tgq="2";
// }
// }
// if("HotelContract".equals(productType)||"HotelMember".equals(productType)){
// // 取消
// if("Cancelled".equals(orderStatus)){
// tgq="2";
// }
// }
// if("Train".equals(productType)){
// //已改签
// if("Rebooked".equals(orderStatus)){
// tgq="1";
// }
// //SubmitRefund 退票成功
// if("SubmitRefund".equals(orderStatus)){
// tgq="2";
// }
// }
//
// if("0".equals(tgq)){
// apimap.put("errno","-1");
// apimap.put("errmsg","不触发流程");
// return apimap;
// }
//
//
// Map orderMap = new HashMap();
// Map authMap = new HashMap();
// authMap.put("AppKey",appKey);
// authMap.put("Ticket",ticket);
// orderMap.put("Auth",authMap);
// orderMap.put("JourneyNo","");
// orderMap.put("OrderID",orderId);
// orderMap.put("SearchType",1);
//
// String orderInput = JSON.toJSONString(orderMap);
String orderBack = JSON.toJSONString(params);
bb.writeLog("orderBack="+orderBack);
if(isJsonValid(orderBack)) {
JSONObject orderObj = JSONObject.parseObject(orderBack);
JSONArray array = orderObj.getJSONArray("ItineraryList");
for (int i = 0; i < array.size(); i++) {
JSONObject detailObj = array.getJSONObject(i);
JSONArray flightOrderInfoList = detailObj.getJSONArray("FlightOrderInfoList");
JSONArray hotelOrderInfoList = detailObj.getJSONArray("HotelOrderInfoList");
JSONArray trainOrderInfoList = detailObj.getJSONArray("TrainOrderInfoList");
if(flightOrderInfoList!=null){
doFlightOrder(flightOrderInfoList,workflowId,tgq);
}
if(hotelOrderInfoList!=null){
doHotailOrder(hotelOrderInfoList,workflowId,tgq);
}
if(trainOrderInfoList!=null){
doTrainOrder(trainOrderInfoList,workflowId,tgq);
}
}
}else{
apimap.put("errno","-1");
apimap.put("errmsg","订单数据格式不对");
}
if("".equals(params.toString())){
apimap.put("errno","-1");
apimap.put("errmsg","空数据");
}else {
apimap.put("errno", "0");
apimap.put("errmsg", "");
}
return apimap;
}
public static String GetSign(String corpId,String productType,String orderStatus,String orderId,String statusIDs ,String refundType,String secret,String approveScenario)
{
//构造字典
HashMap<String,String> hashMap=new HashMap<String,String>();
hashMap.put("secret",secret);
hashMap.put("corpId",corpId);
hashMap.put("productType",productType);
hashMap.put("orderId",orderId);
hashMap.put("orderStatus",orderStatus);
//排序
Collection<String> collection=hashMap.keySet();
ArrayList<String> list=new ArrayList<String>(collection);
Collections.sort(list);
//拼接
String str="";
for( int i=0;i<list.size();i++)
{
str+=list.get(i)+"="+hashMap.get(list.get(i));
if(i!=list.size()-1)
str+="&";
}
//SH1加密
return DigestUtils.sha1Hex(str).toUpperCase();
}
/**
*
* @param hotelOrderInfoList
* @param workflowId
* @param tgq
* @return
*/
public String doHotailOrder(JSONArray hotelOrderInfoList,String workflowId,String tgq){
String tgqlx = "2";//飞机 火车 酒店
String sqlx = "0";// 退单 改签
if("1".equals(tgq)){
sqlx = "1";
}else if("2".equals(tgq)){
sqlx = "0";
}
String tgqcplx = "5";// 飞机退单 飞机改签 火车退单 火车改签 酒店退单 酒店改签
String cbzx ="";//成本中心 主表 浏览按钮 分部 1.00
String ccrbm ="";//出差人部门 主表 浏览按钮 部门 2.00
String ccr="";//出差人 主表 浏览按钮 人力资源 3.00
String zwcj="";//职务层级 主表 单行文本框 文本 4.00 加密设置
String sqrq="";//申请日期 主表 浏览按钮 日期 5.00
String lcbh="";//流程编号 主表 单行文本框 文本 6.00 加密设置
String yccsj="-1";//原出差数据 主表 浏览按钮 流程 7.00
String tgqyy="改签";//退改签原因 主表 多行文本框 多行文本框 8.00
String str = "";
// for(int i=0;i<trainOrderInfoList.size();i++){
JSONObject obj = hotelOrderInfoList.getJSONObject(0);
// JSONObject baseInfo = obj.getJSONObject("BasicInfo");
// String employeeID = baseInfo.getString("EmployeeID");
// }
JSONArray ClientInfoList = obj.getJSONArray("ClientInfo");
JSONObject ClientInfoEntity = ClientInfoList.getJSONObject(0);
String employeeID = ClientInfoEntity.getString("EmployeeID"); //TrainOrderInfoEntity—PassengerInfo
writeLog("employeeID="+employeeID);
ccr = getUserId(employeeID)+"";
cbzx = getCompanyIdDeptId(ccr).split("-")[0];
ccrbm = getCompanyIdDeptId(ccr).split("-")[1];
sqrq = TimeUtil.getCurrentDateString();
String jouneryID = obj.getString("JourneyNo"); //—HotelOrderInfoEntity
tgqyy = obj.getString("CancelReasonCode");//HotelOrderInfoEntity
writeLog("tgqyy="+tgqyy);
Map map = new HashMap();
map.put("tgqlx",tgqlx);
map.put("sqlx",sqlx);
map.put("tgqcplx",tgqcplx);
map.put("cbzx",cbzx);
map.put("ccr",ccr);
map.put("zwcj",zwcj);
map.put("ccrbm",ccrbm);
map.put("sqrq",sqrq);
map.put("yccsj",yccsj);
map.put("tgqyy",tgqyy);
if(jouneryID.contains("-")){
yccsj= jouneryID.split("-")[0];
writeLog("yccsj="+yccsj);
}
WorkflowCreateHandler handler = new WorkflowCreateHandler();
String tablename = handler.findWorkflowForm(workflowId);
String IsNextFlow = "1";
String title = handler.bulidWorkflowTitle(workflowId,ccr);
String requestId = handler.WorkflowCreateByRequestMap(ccr,workflowId,title,IsNextFlow,map);
writeLog("requestid="+requestId);
if(Util.getIntValue(requestId)>1) {
RecordSet rs = new RecordSet();
rs.execute("select id from " + tablename +" where requestid="+requestId);
rs.next();
String dataId = Util.null2String(rs.getString(1));
writeLog("dataId="+dataId);
String StartTime = obj.getString("StartTime");//开始时间
String EndTime = obj.getString("EndTime");//结束时间
String CityName = obj.getString("CityName");//入住城市
String CouponAmount = obj.getString("CouponAmount");//原酒店金额
JSONObject RefundAmountInfoEnty = obj.getJSONObject("RefundAmountInfo");
String RefundTotalAmount = RefundAmountInfoEnty.getString("TicketPrice");//退回金额
String SubcriptionFee = RefundAmountInfoEnty.getString("SubcriptionFee");//退/改签费
String detailTableName = "";
Set set = new HashSet();
List list = new ArrayList();
detailTableName = tablename + "_dt5";
Map mapmx = new HashMap();
mapmx.put("rzsj", StartTime);
mapmx.put("lksj", EndTime);
mapmx.put("rzcs", CityName);
mapmx.put("yjdje", CouponAmount);
mapmx.put("thje", RefundTotalAmount);
mapmx.put("tgqf", SubcriptionFee);
list.add(mapmx);
set.add("rzsj");
set.add("lksj");
set.add("rzcs");
set.add("yjdje");
set.add("thje");
set.add("tgqf");
handler.insertTableDtMX(list, detailTableName, dataId, set);
}
return requestId;
}
/**
*
* @param trainOrderInfoList
* @param workflowId
* @param tgq
* @return
*/
public String doTrainOrder(JSONArray trainOrderInfoList,String workflowId,String tgq){
String tgqlx = "1";//飞机 火车 酒店
String sqlx = "1";// 退单 改签
if("1".equals(tgq)){
sqlx = "1";
}else if("2".equals(tgq)){
sqlx = "0";
}
String tgqcplx = "4";// 飞机退单 飞机改签 火车退单 火车改签 酒店退单 酒店改签
if("1".equals(tgq)){
tgqcplx="4";
}else if("2".equals(tgq)){
tgqcplx="3";
}
String cbzx ="";//成本中心 主表 浏览按钮 分部 1.00
String ccrbm ="";//出差人部门 主表 浏览按钮 部门 2.00
String ccr="";//出差人 主表 浏览按钮 人力资源 3.00
String zwcj="";//职务层级 主表 单行文本框 文本 4.00 加密设置
String sqrq="";//申请日期 主表 浏览按钮 日期 5.00
String lcbh="";//流程编号 主表 单行文本框 文本 6.00 加密设置
String yccsj="-1";//原出差数据 主表 浏览按钮 流程 7.00
String tgqyy="改签";//退改签原因 主表 多行文本框 多行文本框 8.00
String str = "";
// for(int i=0;i<trainOrderInfoList.size();i++){
JSONObject obj = trainOrderInfoList.getJSONObject(0);
// JSONObject baseInfo = obj.getJSONObject("BasicInfo");
// String employeeID = baseInfo.getString("EmployeeID");
// }
JSONArray PassengerInfoList = obj.getJSONArray("PassengerInfoList");
JSONArray ticketInfoList = obj.getJSONArray("TicketInfoList");
JSONObject passengerInfoObj = PassengerInfoList.getJSONObject(0);
String employeeID = passengerInfoObj.getString("EmployeeID"); //TrainOrderInfoEntity—PassengerInfo
writeLog("employeeID="+employeeID);
ccr = getUserId(employeeID)+"";
cbzx = getCompanyIdDeptId(ccr).split("-")[0];
ccrbm = getCompanyIdDeptId(ccr).split("-")[1];
sqrq = TimeUtil.getCurrentDateString();
JSONObject corpOrderInfo = obj.getJSONObject("CorpOrderInfo");
String jouneryID = corpOrderInfo.getString("JouneryID"); //—TrainOrderInfoEntity—CorpOrderInfo
JSONArray OrderTicketList = passengerInfoObj.getJSONArray("OrderTicket");
JSONObject OrderTicket = OrderTicketList.getJSONObject(0);
tgqyy = OrderTicket.getString("RefundReasonCodeDesc");//TrainOrderInfoEntity—PassengerInfo—OrderTicketInfo
Map map = new HashMap();
map.put("tgqlx",tgqlx);
map.put("sqlx",sqlx);
map.put("tgqcplx",tgqcplx);
map.put("cbzx",cbzx);
map.put("ccr",ccr);
map.put("zwcj",zwcj);
map.put("ccrbm",ccrbm);
map.put("sqrq",sqrq);
map.put("yccsj",yccsj);
map.put("tgqyy",tgqyy);
if(jouneryID.contains("-")){
yccsj= jouneryID.split("-")[0];
writeLog("yccsj="+yccsj);
}
WorkflowCreateHandler handler = new WorkflowCreateHandler();
String tablename = handler.findWorkflowForm(workflowId);
String IsNextFlow = "1";
String title = handler.bulidWorkflowTitle(workflowId,ccr);
String requestId = handler.WorkflowCreateByRequestMap(ccr,workflowId,title,IsNextFlow,map);
writeLog("requestid="+requestId);
if(Util.getIntValue(requestId)>1) {
RecordSet rs = new RecordSet();
rs.execute("select id from " + tablename +" where requestid="+requestId);
rs.next();
String dataId = Util.null2String(rs.getString(1));
writeLog("dataId="+dataId);
JSONObject ticketInfo = null;
for(int i=0;i<ticketInfoList.size();i++){
ticketInfo = ticketInfoList.getJSONObject(i);
String TicketInfoID_th = ticketInfo.getString("TicketInfoID");
writeLog("TicketInfoID_th----"+TicketInfoID_th);
//D原车次C改签车次
String TrainTicketType = ticketInfo.getString("TrainTicketType");
String trainName = ticketInfo.getString("TrainName");//列车号
writeLog("trainName="+trainName);
String departureDateTime = ticketInfo.getString("DepartureDateTime");//开始时间
String arrivalDateTime = ticketInfo.getString("ArrivalDateTime");//结束时间
String departureCityName = ticketInfo.getString("DepartureCityName");//出发地
String arrivalCityName = ticketInfo.getString("ArrivalCityName");//到达地
String ticketPrice = ticketInfo.getString("TicketPrice");//原火车金额
String refund = OrderTicket.getString("Refund");//退回金额
if("".equals(refund)){
refund = "0";
}
String refundTicketFee = OrderTicket.getString("RefundTicketFee");//退票费:
if("".equals(refundTicketFee)){
refundTicketFee = "0";
}
String dealTicketPrice = OrderTicket.getString("DealTicketPrice");//DealTicketPrice改签车票金额
if("".equals(dealTicketPrice)){
dealTicketPrice = "0";
}
String detailTableName = "";
Set set = new HashSet();
List list = new ArrayList();
if("1".equals(tgq)){
if("C".equals(TrainTicketType)) {
detailTableName = tablename + "_dt4";
Map mapmx = new HashMap();
mapmx.put("lch", trainName);
mapmx.put("kssj", departureDateTime);
mapmx.put("jssj", arrivalDateTime);
mapmx.put("cfd", departureCityName);
mapmx.put("mdd", arrivalCityName);
mapmx.put("gqhcfy", dealTicketPrice);
list.add(mapmx);
set.add("lch");
set.add("kssj");
set.add("jssj");
set.add("cfd");
set.add("mdd");
set.add("gqhcfy");
}else if("D".equals(TrainTicketType)){
detailTableName =tablename + "_dt3";
Map mapmx = new HashMap();
mapmx.put("lch",trainName);
mapmx.put("kssj",departureDateTime);
mapmx.put("jssj",arrivalDateTime);
mapmx.put("cfd",departureCityName);
mapmx.put("mdd",arrivalCityName);
mapmx.put("yhcje",ticketPrice);
mapmx.put("thje",refund);
mapmx.put("tgqf",refundTicketFee);
list.add(mapmx);
set.add("lch");
set.add("kssj");
set.add("jssj");
set.add("cfd");
set.add("mdd");
set.add("yhcje");
set.add("thje");
set.add("tgqf");
}
}else if("2".equals(tgq)){
writeLog("tgq="+tgq);
String TicketInfoID = "";
for(int j=0;j<PassengerInfoList.size();j++){
JSONObject PassengerInfo = PassengerInfoList.getJSONObject(j);
JSONArray OrderTicketlist = PassengerInfo.getJSONArray("OrderTicket");
for(int k=0;k<OrderTicketlist.size();k++){
JSONObject OrderTicket_mx = OrderTicketList.getJSONObject(k);
String RefundTicketStatus = OrderTicket_mx.getString("RefundTicketStatus");
if("S".equals(RefundTicketStatus)){
TicketInfoID = OrderTicket_mx.getString("TicketInfoID");
}
}
}
writeLog("TicketInfoID="+TicketInfoID);
writeLog("TicketInfoID_th="+TicketInfoID_th);
if(TicketInfoID_th.equals(TicketInfoID)) {
detailTableName = tablename + "_dt3";
Map mapmx = new HashMap();
mapmx.put("lch", trainName);
mapmx.put("kssj", departureDateTime);
mapmx.put("jssj", arrivalDateTime);
mapmx.put("cfd", departureCityName);
mapmx.put("mdd", arrivalCityName);
mapmx.put("yhcje", ticketPrice);
mapmx.put("thje", refund);
mapmx.put("tgqf", refundTicketFee);
list.add(mapmx);
set.add("lch");
set.add("kssj");
set.add("jssj");
set.add("cfd");
set.add("mdd");
set.add("yhcje");
set.add("thje");
set.add("tgqf");
}
}
handler.insertTableDtMX(list, detailTableName, dataId,set);
}
}
return requestId;
}
/**
*
* @param flightOrderInfoList
* @param workflowId
* @param tgq
* @return
*/
public String doFlightOrder(JSONArray flightOrderInfoList,String workflowId,String tgq){
String tgqlx = "0";//飞机 火车 酒店
String sqlx = "0";// 退单 改签
if("1".equals(tgq)){
sqlx = "1";
}else if("2".equals(tgq)){
sqlx = "0";
}
String tgqcplx = "4";// 飞机退单 飞机改签 火车退单 火车改签 酒店退单 酒店改签
if("1".equals(tgq)){
tgqcplx="4";
}else if("2".equals(tgq)){
tgqcplx="3";
}
String cbzx ="";//成本中心 主表 浏览按钮 分部 1.00
String ccrbm ="";//出差人部门 主表 浏览按钮 部门 2.00
String ccr="";//出差人 主表 浏览按钮 人力资源 3.00
String zwcj="";//职务层级 主表 单行文本框 文本 4.00 加密设置
String sqrq="";//申请日期 主表 浏览按钮 日期 5.00
String lcbh="";//流程编号 主表 单行文本框 文本 6.00 加密设置
String yccsj="-1";//原出差数据 主表 浏览按钮 流程 7.00
String tgqyy="改签";//退改签原因 主表 多行文本框 多行文本框 8.00
String str = "";
// for(int i=0;i<trainOrderInfoList.size();i++){
JSONObject obj = flightOrderInfoList.getJSONObject(0);
// JSONObject baseInfo = obj.getJSONObject("BasicInfo");
// String employeeID = baseInfo.getString("EmployeeID");
// }
JSONArray PassengerInfoList = obj.getJSONArray("PassengerInfo");
JSONArray ticketInfoList = obj.getJSONArray("TicketInfoList");
JSONObject passengerInfoObj = PassengerInfoList.getJSONObject(0);
String employeeID = passengerInfoObj.getJSONObject("PassengerBasic").getString("CorpEid"); //FlightOrderInfoEntity—PassengerInfoEntity—PassengerBasic
writeLog("employeeID="+employeeID);
ccr = getUserId(employeeID)+"";
cbzx = getCompanyIdDeptId(ccr).split("-")[0];
ccrbm = getCompanyIdDeptId(ccr).split("-")[1];
sqrq = TimeUtil.getCurrentDateString();
JSONObject basicInfo = obj.getJSONObject("BasicInfo");
String jouneryID = basicInfo.getString("JourneyID"); //—FlightOrderInfoEntity—BasicInfo
JSONObject FlightInfo= obj.getJSONArray("FlightInfo").getJSONObject(0);
JSONArray RefundInfoEntityList = obj.getJSONArray("RefundInfo");
JSONObject RefundInfoEntity = null;
if(RefundInfoEntityList!=null) {
RefundInfoEntity = RefundInfoEntityList.getJSONObject(0);
//退票ItineraryEntity—FlightOrderInfoEntity—RefundInfoEntity
//改签:
//ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
tgqyy = RefundInfoEntity.getString("RefundResonDesc");//TrainOrderInfoEntity—PassengerInfo—OrderTicketInfo
}
JSONArray SequenceInfoEntityList = passengerInfoObj.getJSONArray("SequenceInfo");
JSONObject SequenceInfoEntity = SequenceInfoEntityList.getJSONObject(0);
JSONArray ChangeInfoEntityList = SequenceInfoEntity.getJSONArray("ChangeInfo");
JSONObject ChangeInfoEntity = ChangeInfoEntityList.getJSONObject(0);
JSONArray TripRecordInfoList = obj.getJSONArray("TripRecordInfoList");
JSONObject TripRecordInfoEntity = TripRecordInfoList.getJSONObject(0);
if("1".equals(tgq)){
if(ChangeInfoEntity!=null) {
tgqyy = ChangeInfoEntity.getString("RebookResonDesc");
}
}else if("2".equals(tgq)){
if(RefundInfoEntity!=null) {
tgqyy = RefundInfoEntity.getString("RefundResonDesc");
}
}
writeLog("tgqyy="+tgqyy);
Map map = new HashMap();
map.put("tgqlx",tgqlx);
map.put("sqlx",sqlx);
map.put("tgqcplx",tgqcplx);
map.put("cbzx",cbzx);
map.put("ccr",ccr);
map.put("zwcj",zwcj);
map.put("ccrbm",ccrbm);
map.put("sqrq",sqrq);
map.put("yccsj",yccsj);
map.put("tgqyy",tgqyy);
if(jouneryID.contains("-")){
yccsj= jouneryID.split("-")[0];
writeLog("yccsj="+yccsj);
}
WorkflowCreateHandler handler = new WorkflowCreateHandler();
String tablename = handler.findWorkflowForm(workflowId);
String IsNextFlow = "1";
String title = handler.bulidWorkflowTitle(workflowId,ccr);
String requestId = handler.WorkflowCreateByRequestMap(ccr,workflowId,title,IsNextFlow,map);
writeLog("requestid="+requestId);
if(Util.getIntValue(requestId)>1) {
RecordSet rs = new RecordSet();
rs.execute("select id from " + tablename +" where requestid="+requestId);
rs.next();
String dataId = Util.null2String(rs.getString(1));
writeLog("dataId="+dataId);
String detailTableName = "";
if("1".equals(tgq)){
// 改签明细表 航班号 CTicketNO ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
// 改签明细表 开始时间 CTakeOffTime ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
// 改签明细表 结束时间 CArrivalTime ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
// 改签明细表 出发地 CDCityName ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
// 改签明细表 到达地 CACityName ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
// 改签明细表 "改签后机票金额
// " CPrintPrice ItineraryEntity—FlightOrderInfoEntity—PassengerInfoEntity—SequenceInfoEntity—ChangeInfoEntity
detailTableName =tablename + "_dt1";
Set set = new HashSet();
List list = new ArrayList();
Map mapmx = new HashMap();
mapmx.put("hbh",FlightInfo.getString("Flight"));//航班号
mapmx.put("qfsj",FlightInfo.getString("TakeoffTime"));//开始时间
mapmx.put("ddsj",FlightInfo.getString("ArrivalTime"));//到达时间
mapmx.put("cfd",FlightInfo.getString("DCityName"));
mapmx.put("mdd",FlightInfo.getString("ACityName"));
mapmx.put("yjpje",FlightInfo.getString("Amount"));
list.add(mapmx);
set.add("hbh");
set.add("qfsj");
set.add("ddsj");
set.add("cfd");
set.add("mdd");
set.add("yjpje");
handler.insertTableDtMX(list, detailTableName, dataId,set);
set = new HashSet();
list = new ArrayList();
detailTableName =tablename + "_dt2";
mapmx = new HashMap();
mapmx.put("hbh",ChangeInfoEntity.getString("CFlight"));//航班号
mapmx.put("qfsj",ChangeInfoEntity.getString("CTakeOffTime"));//开始时间
mapmx.put("ddsj",ChangeInfoEntity.getString("CArrivalTime"));//结束时间
mapmx.put("cfd",ChangeInfoEntity.getString("CDCityName"));//cfd
mapmx.put("mdd",ChangeInfoEntity.getString("CACityName"));//到达地
mapmx.put("gqfjfy",ChangeInfoEntity.getString("CPrintPrice"));//改签后机票金额
list.add(mapmx);
set.add("tgqf");
set.add("qfsj");
set.add("ddsj");
set.add("cfd");
set.add("mdd");
set.add("gqfjfy");
handler.insertTableDtMX(list, detailTableName, dataId,set);
}else if("2".equals(tgq)){
// 退单明细表 航班号 Flight ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity
// 退单明细表 开始时间 TakeOffTime ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity RecordStatus=R退票
// 退单明细表 结束时间 ArrivalTime ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity RecordStatus=R退票
// 退单明细表 出发地 DepartureCityName ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity RecordStatus=R退票
// 退单明细表 到达地 ArrivalCityName ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity RecordStatus=R退票
// 退单明细表 原机票金额 PrintPrice+Oil+Tax ItineraryEntity—FlightOrderInfoEntity—TripRecordInfoEntity RecordStatus=R退票
// 退单明细表 退回金额 PayCustomerAmount ItineraryEntity—FlightOrderInfoEntity—RefundInfoEntity
// 退单明细表 退/改签费 RefundAmount+ChangeAmount ItineraryEntity—FlightOrderInfoEntity—BasicInfo
Set set2 = new HashSet();
List list = new ArrayList();
detailTableName =tablename + "_dt1";
Map mapmx = new HashMap();
double yjpje = Util.getDoubleValue(TripRecordInfoEntity.getString("PrintPrice"))+Util.getDoubleValue(TripRecordInfoEntity.getString("Oil"))+Util.getDoubleValue(TripRecordInfoEntity.getString("Tax"));
double tgqf = Util.getDoubleValue(basicInfo.getString("RefundAmount"))+Util.getDoubleValue(basicInfo.getString("ChangeAmount"));
mapmx.put("hbh",TripRecordInfoEntity.getString("Flight"));//航班号
mapmx.put("qfsj",TripRecordInfoEntity.getString("TakeOffTime"));//开始时间
mapmx.put("ddsj",TripRecordInfoEntity.getString("ArrivalTime"));//到达时间
mapmx.put("cfd",TripRecordInfoEntity.getString("DepartureCityName"));
mapmx.put("mdd",TripRecordInfoEntity.getString("ArrivalCityName"));
mapmx.put("yjpje",yjpje+"");
mapmx.put("thje", RefundInfoEntity.getString("PayCustomerAmount"));
mapmx.put("tgqf",tgqf+"");
list.add(mapmx);
set2.add("hbh");
set2.add("qfsj");
set2.add("ddsj");
set2.add("cfd");
set2.add("mdd");
set2.add("yjpje");
set2.add("thje");
set2.add("tgqf");
handler.insertTableDtMX(list, detailTableName, dataId,set2);
}
}
return requestId;
}
/**
* id
* @param code
* @return
*/
public int getUserId(String code){
int id= 0;
RecordSet rs = new RecordSet();
rs.execute("select id from hrmresource where workcode='"+code+"'");
rs.next();
id = Util.getIntValue(rs.getString(1));
return id;
}
/**
*
* @param input
* @param url
* @return
*/
public String postData2(String input,String url){
String back = "";
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, input);
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("cache-control", "no-cache")
.build();
try {
Response response = client.newCall(request).execute();
back = response.body().string();
} catch (IOException e) {
throw new RuntimeException(e);
}
return back;
}
/**
*
* @param param
* @param url
* @return
*/
public static String postData(String param,String url)
{
OutputStreamWriter out = null;
BufferedReader in =null;
String result = "";
try
{
URL realUrl = new URL(url);
HttpURLConnection conn = null;
conn = (HttpURLConnection) realUrl.openConnection();
//发送POST请求必须设置如下两行
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
//设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
conn.setRequestProperty("Content-Type", "application/json");
conn.connect();
//获取URLConnection对象对应的输出流
out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
out.write(param);
//发送请求参数
out.flush();
//flush输出流的缓冲
//定义BufferedReader输入流来读取URL的响应
in =new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null)
{
result += line;
System.out.println("OK");
}
}
catch(Exception e)
{
System.out.println("发送POST请求出现异常" + e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally
{
try
{
if (out != null)
{
out.close();
}
if ( in !=null)
{
in .close();
}
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
return result;
}
/**
* JSON
*
* @param jsonStr JSON
* @return truefalse
*/
public static boolean isJsonValid(String jsonStr) {
try {
JSON.parse(jsonStr);
return true;
} catch (JSONException e) {
return false;
}
}
/**
* id
* @param userid
* @return
*/
public String getCompanyIdDeptId(String userid){
RecordSet rs = new RecordSet();
String str = "";
rs.execute(" select subcompanyid1,departmentid from hrmresource where id="+userid);
rs.next();
str = Util.null2String(rs.getString("subcompanyid1"))+"-"+Util.null2String(rs.getString("departmentid"));
return str;
}
}

@ -0,0 +1,17 @@
package com.engine.tjyh.xc.service;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
/**
* @Description
* @Author matrix
* @Date 2023/6/15 10:06
**/
public interface XcService {
Map<String,Object> sendData(JSONObject input);
Map<String,Object> sendData2(JSONObject input);
}

@ -0,0 +1,28 @@
package com.engine.tjyh.xc.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.engine.core.impl.Service;
import com.engine.tjyh.xc.cmd.XcCmd;
import com.engine.tjyh.xc.cmd.XcCmd2;
import com.engine.tjyh.xc.service.XcService;
import java.util.Map;
/**
* TODO
*
* @Description
* @Author matrix
* @Date 2023/6/15 10:08
**/
public class XcServiceImpl extends Service implements XcService {
public Map<String, Object> sendData(JSONObject input) {
return commandExecutor.execute(new XcCmd(input));
}
public Map<String, Object> sendData2(JSONObject input) {
return commandExecutor.execute(new XcCmd2(input));
}
}

@ -0,0 +1,57 @@
package com.engine.tjyh.xc.util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import weaver.general.BaseBean;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
/**
* Created by fmj on 2018/9/18.
*/
public class HttpClientWrapper {
private static Log log = LogFactory.getLog(HttpClientWrapper.class.getClass());
public static DefaultHttpClient wrapClient(DefaultHttpClient base) {
try {
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new WeaverTrustManager();
ctx.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("https", 443, ssf));
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
ThreadSafeClientConnManager mgr = new ThreadSafeClientConnManager(registry);
return new DefaultHttpClient(mgr, base.getParams());
} catch (Exception ex) {
log.error("HttpClientWrapper.wrapClient catch a exception : " + ex);
}
return base;
}
static class WeaverTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
}

@ -0,0 +1,284 @@
package com.engine.tjyh.xc.util;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.http.*;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.params.ConnRouteParams;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HttpRequestUtil extends BaseBean {
private static HttpRequestUtil httpRequestUtil;
private String charset = "utf-8";
/**
* constructor
*/
private HttpRequestUtil() {
}
/**
*
*
* @return
*/
public static HttpRequestUtil getInstance() {
return new HttpRequestUtil();
}
/**
* HttpClient
*
* @return
*/
public DefaultHttpClient getClient() {
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charset);
//超时设置
int timeOut = Util.getIntValue(60000);
client.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, timeOut);
client = HttpClientWrapper.wrapClient(client); //先绕过证书,不验证证书
proxyConfig(client);
return client;
}
/**
*
*
* @param client
*/
private void proxyConfig(DefaultHttpClient client) {
writeLog("================proxyConfig==================");
boolean isAgent = true;
if (isAgent) { //开启了代理
String host = "10.200.1.69";
int port = 9063;
String userName = "root";
String password = "Qasd!234";
client.getCredentialsProvider().setCredentials(new AuthScope(host, port), new UsernamePasswordCredentials(userName, password));
HttpHost httpHost = new HttpHost(host, port);
client.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, httpHost);
}
}
/**
* post,json
*
* @param url
* @param params
* @return
*/
public String doPostJson(String url, Map params) {
String json = JSONObject.toJSONString(params);
return doPostJson(url, json);
}
public String doPostJson(String url, String json) {
String response = "";
HttpClient client = getClient();
HttpPost post = null;
String exceptionmsg = "";
String timeformat = "yyyy-MM-dd HH:mm:ss.SSS";
String currentTime = TimeUtil.getFormartString(Calendar.getInstance(), timeformat);
// if (!"".equals(url)) {
// url = ctripConfig.correctUrl(url);
// }
try {
post = new HttpPost(url);
post.setHeader(HTTP.CONTENT_TYPE, "application/json"); //请求数据的格式为json
post.setHeader(HTTP.CONN_DIRECTIVE, "Keep-Alive"); //长连接
post.setHeader(HTTP.CONTENT_ENCODING, charset);
post.setHeader("accept", "*/*");
post.setHeader(HTTP.USER_AGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(8000)
.setSocketTimeout(8000).setConnectTimeout(8000).build();
post.setConfig(requestConfig);
StringEntity entity = new StringEntity(json, charset);
post.setEntity(entity);
HttpResponse httpResponse = client.execute(post);
int httpCode = httpResponse.getStatusLine().getStatusCode();
if (httpCode == HttpStatus.SC_OK) {
response = EntityUtils.toString(httpResponse.getEntity(), charset);
} else {
writeLog("WebUtil.doPostJson httpCode:" + httpCode);
}
} catch (UnsupportedEncodingException e) {
writeLog("WebUtil.doPostJson catch a UnsupportedEncodingException exception:" + e.getMessage());
writeLog(e);
exceptionmsg = "WebUtil.doPostJson catch a UnsupportedEncodingException exception:" + e.getMessage();
} catch (ClientProtocolException e) {
writeLog("WebUtil.doPostJson catch a ClientProtocolException exception:" + e.getMessage());
writeLog(e);
exceptionmsg = "WebUtil.doPostJson catch a ClientProtocolException exception:" + e.getMessage();
} catch (IOException e) {
writeLog("WebUtil.doPostJson catch a IOException exception:" + e.getMessage());
writeLog(e);
exceptionmsg = "WebUtil.doPostJson catch a IOException exception:" + e.getMessage();
} finally {
if (post != null) {
post.releaseConnection();
}
}
// String sql = "insert into ctrip_allrequest_logs (requesturl,requestjson,responsejson,exceptionmsg,logtime) values (?, ?, ?, ?,?)";
// ConnStatement connStatement = null;
//
// try {
// connStatement = new ConnStatement();
// connStatement.setStatementSql(sql);
// connStatement.setString(1, url);
// connStatement.setString(2, json);
// connStatement.setString(3, response);
// connStatement.setString(4, exceptionmsg);
// connStatement.setString(5, currentTime);
// connStatement.executeUpdate();
// connStatement.close();
// } catch (SQLException e) {
// writeLog("WebUtil.doPostJson catch a SQLException:" + e.getMessage());
// writeLog(e);
// } catch (Exception e) {
// writeLog("WebUtil.doPostJson catch a Exception:" + e.getMessage());
// writeLog(e);
// } finally {
// if (connStatement != null) {
// connStatement.close();
// }
// }
return response;
}
/**
* postform
*
* @param url
* @param params
* @return
*/
public String doPostForm(String url, Map<String, String> params) {
String response = "";
HttpClient client = getClient();
HttpPost post = null;
post = new HttpPost(url);
post.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded");
post.setHeader(HTTP.CONN_DIRECTIVE, "Keep-Alive"); //长连接
post.setHeader(HTTP.CONTENT_ENCODING, charset);
String json = JSONObject.toJSONString(params);
try {
List<NameValuePair> pairList = new ArrayList<NameValuePair>();
for (Iterator<Map.Entry<String, String>> iterator = params.entrySet().iterator(); iterator.hasNext(); ) {
Map.Entry<String, String> entry = iterator.next();
String key = entry.getKey();
String value = entry.getValue();
NameValuePair nameValuePair = new BasicNameValuePair(key, value);
pairList.add(nameValuePair);
}
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(pairList, charset);
post.setEntity(formEntity);
HttpResponse httpResponse = client.execute(post);
int httpCode = httpResponse.getStatusLine().getStatusCode();
if (httpCode == HttpStatus.SC_OK) {
response = EntityUtils.toString(httpResponse.getEntity(), charset);
} else {
writeLog("WebUtil.doPostForm httpCode:" + httpCode);
}
} catch (UnsupportedEncodingException e) {
writeLog("WebUtil.doPostForm catch a UnsupportedEncodingException exception:" + e.getMessage());
writeLog(e);
} catch (ClientProtocolException e) {
writeLog("WebUtil.doPostForm catch a ClientProtocolException exception:" + e.getMessage());
writeLog(e);
} catch (IOException e) {
writeLog("WebUtil.doPostForm catch a IOException exception:" + e.getMessage());
writeLog(e);
} finally {
if (post != null) {
post.releaseConnection();
}
}
return response;
}
/**
* unicode
*
* @param unicodeStr
* @return
*/
public String decode(String unicodeStr) {
/**
* unicode
*/
Pattern reUnicode = Pattern.compile("\\\\u([0-9a-zA-Z]{4})");
Matcher m = reUnicode.matcher(unicodeStr);
StringBuffer sb = new StringBuffer(unicodeStr.length());
while (m.find()) {
m.appendReplacement(sb,
Character.toString((char) Integer.parseInt(m.group(1), 16)));
}
m.appendTail(sb);
return sb.toString();
}
/**
* unicode
*
* @param s
* @return
*/
public String encode(String s) {
StringBuilder sb = new StringBuilder(s.length() * 3);
for (char c : s.toCharArray()) {
if (c < 256) {
sb.append(c);
} else {
sb.append("\\u");
sb.append(Character.forDigit((c >>> 12) & 0xf, 16));
sb.append(Character.forDigit((c >>> 8) & 0xf, 16));
sb.append(Character.forDigit((c >>> 4) & 0xf, 16));
sb.append(Character.forDigit((c) & 0xf, 16));
}
}
return sb.toString();
}
}

@ -0,0 +1,534 @@
package com.engine.tjyh.xc.util;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.hrm.resource.ResourceComInfo;
import weaver.soa.workflow.request.*;
import weaver.workflow.request.RequestComInfo;
import weaver.workflow.workflow.WorkflowComInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
*
* @ClassName: WorkflowCreateHandler
* @Description: TODO
* }
* @author shil
* @date 2020-03-25 5:03:03
*
*/
public class WorkflowCreateHandler extends BaseBean {
public WorkflowCreateHandler() {
super();
}
/***
*
* @param workflowid
* @return
*/
public String findWorkflowForm(String workflowid)
{
String tablename = "";
String cDandT = TimeUtil.getCurrentDateString()+" "+ TimeUtil.getCurrentTimeString();
RecordSet ws = new RecordSet();
ws.execute("select t2.tablename from workflow_base t1,workflow_bill t2 where t2.id=t1.formid and t1.id ='"+workflowid+"'");
if(ws.next()){
tablename = Util.null2String(ws.getString("tablename"));
}else{
tablename = "-1";
writeLog("shauter 当前时间:"+cDandT+"-workflowid="+workflowid+"-没有设置表单");
}
return tablename;
}
/**
*
* @Title: bulidWorkflowTitle
* @Description: TODO()
* @param @param workflowid
* @param @param creatorid
* @param @return
* @return String
* @throws
*/
public String bulidWorkflowTitle(String workflowid,String creatorid)
{
StringBuffer workflowtitle=new StringBuffer("");
ResourceComInfo ResourceComInfo = null;
try {
ResourceComInfo = new ResourceComInfo();
} catch (Exception e) {
e.printStackTrace();
}
String latsname = ResourceComInfo.getLastname(creatorid);
workflowtitle.append(findWorkflowName(""+workflowid)+"--"+latsname);
return workflowtitle.toString();
}
/**
*
* @Title: findWorkflowName
* @Description: TODO()
* @param @param workflowid
* @param @return
* @return String
* @throws
*/
public String findWorkflowName(String workflowid){
String workflowname="";
WorkflowComInfo WorkflowComInfo = null;
try {
WorkflowComInfo = new WorkflowComInfo();
workflowname = WorkflowComInfo.getWorkflowname(""+workflowid);
} catch (Exception e) {
e.printStackTrace();
workflowname ="-1";
}
return workflowname;
}
/**
*
* @Title: findDataIDByReqID
* @Description: TODO(id)
* @param @param workflowid
* @param @param requestid
* @param @return
* @return String
* @throws
*/
public String findDataIDByReqID(String workflowid,String requestid){
String dataid="";
RecordSet rs = new RecordSet();
rs.execute("select id from "+findWorkflowForm(workflowid)+" where requestid='"+requestid+"' ");
rs.next();
dataid = Util.null2String(rs.getString(1));
return dataid;
}
/**
*
* @Title: expoundRequest
* @Description: TODO()
* @param @param requestid
* @param @return
* @return String
* @throws
*/
public String expoundRequest(String requestid)
{
writeLog("--------------requestid:"+requestid);
String dec = "";
int ireqid = Util.getIntValue(requestid, 0);
if(ireqid>0){
}else if(ireqid==-1){
dec = "创建流程失败";
}else if(ireqid==-2){
dec = "用户没有流程创建权限";
}else if(ireqid==-3){
dec = "创建流程基本信息失败";
}else if(ireqid==-4){
dec = "保存表单主表信息失败";
}else if(ireqid==-5){
dec = "更新紧急程度失败";
}else if(ireqid==-6){
dec = "流程操作者失败";
}else if(ireqid==-7){
dec = "流转至下一节点失败";
}else if(ireqid==-8){
dec = "节点附加操作失败";
}
return dec;
}
/**
*
* @Title: WorkflowCreateByMainTableMap
* @param @param creatorId Id
* @param @param workflowId Id
* @param @param requestName
* @param @param IsNextFlow
* @param @param requestMap Map<fieldname,fieldvalue>=<,>
* @param @return
* @return String
* @throws
*/
public String WorkflowCreateByRequestMap(String creatorId ,String workflowId ,String requestName ,String IsNextFlow,Map<String,String> requestMainMap)
{
writeLog("creatorId:"+creatorId);
writeLog("workflowId:"+workflowId);
writeLog("requestName:"+requestName);
writeLog("IsNextFlow:"+IsNextFlow);
String requestid = "";
RequestInfo requestInfo = new RequestInfo();
requestInfo.setCreatorid(creatorId);//创建人Id
requestInfo.setWorkflowid(workflowId);//工作流Id
requestInfo.setDescription(requestName);//请求标题
requestInfo.setRequestlevel("0");
if(!"".equals(IsNextFlow))
{
requestInfo.setIsNextFlow(IsNextFlow);
}
//主表字段
MainTableInfo mainTableInfo = new MainTableInfo();
Property[] propertyArray = new Property[requestMainMap.size()];
int p = 0;
for (Entry<String, String> entry : requestMainMap.entrySet())
{
propertyArray[p] = new Property();
propertyArray[p].setName(Util.null2String(entry.getKey()));
propertyArray[p].setValue(Util.null2String(entry.getValue()));
writeLog("\r\n---p="+p+"---Key="+entry.getKey()+"---Value="+entry.getValue());
p++;
}
writeLog("-----创建流程传递的参数个数p="+p);
mainTableInfo.setProperty(propertyArray);
requestInfo.setMainTableInfo(mainTableInfo);
RequestService service = new RequestService();
try {
//流程
try {
requestid = service.createRequest(requestInfo);//创建请求id
} catch (Exception e) {
writeLog("======="+e.getMessage());
}
//记录日志
StringBuffer sbf = new StringBuffer("\r\n---创建工作流记录日志开始");
WorkflowComInfo wfcif =new WorkflowComInfo();
RequestComInfo rcif = new RequestComInfo();
ResourceComInfo rscif = new ResourceComInfo();
sbf.append("\r\n-----姓名:"+rscif.getLastname(rcif.getRequestCreater(requestid)));
sbf.append("\r\n-----时间:"+rcif.getRequestCreateTime(requestid));
sbf.append("\r\n-----创建流程:"+wfcif.getWorkflowname(workflowId));
sbf.append("\r\n-----请求:"+rcif.getRequestname(requestid));
sbf.append("\r\n-----请求:"+requestid);
sbf.append("\r\n-----创建工作流记录日志结束");
writeLog(sbf.toString());
System.out.println(""+sbf.toString());
} catch (Exception e) {
writeLog("错误:" + e);
System.out.println("错误:" + e);
}
return requestid;
}
/***
*
* @param ireqid
* @param detailList
* @param tablename
* @param dataid
* @return
*/
public String insertTableDt1(int ireqid, List<Map<String,String>> detailList, String tablename, String dataid, Set<String> fileSet)
{
String message = "0" ;
if(!"".equals(dataid) && dataid !=null)
{
RecordSet rs = new RecordSet();
//插入明细表
String tablename_dt1 = tablename+"_dt1"; //明细表名
for(Map<String,String> detailMap : detailList)
{
String dttablename = "" ;
String dttablenvalue = "" ;
for (Entry<String, String> entry : detailMap.entrySet())
{
String fieldname = Util.null2String(entry.getKey());
String fieldvalue = Util.null2String(entry.getValue());
dttablename += dttablename==""? fieldname :","+fieldname ;
if(fileSet.contains(fieldname))
{
dttablenvalue += dttablenvalue == "" ? fieldvalue : ","+fieldvalue ;
}else{
dttablenvalue += dttablenvalue == "" ? "'"+fieldvalue.replace("'", "''").trim()+"'" : ",'"+fieldvalue.replace("'", "''").trim()+"'" ;
}
}
writeLog("dttablename:"+dttablename);
writeLog("dttablenvalue:"+dttablenvalue);
if(dttablename !="" && dttablenvalue !="")
{
String sql = "insert into "+tablename_dt1+" (mainid,"+dttablename+") values ("+dataid+","+dttablenvalue+")";
writeLog(sql);
boolean boo = rs.execute(sql);
if(!boo)
{
message = "-1" ;
}
}else{
message = "-2" ;
}
}
}else{
message = "-3" ;
}
return message;
}
/**
*
* @param detailList
* @param tablename
* @param dataid
* @return
*/
public String insertTableDtMX(List<Map<String,String>> detailList, String tablename, String dataid,Set<String> fileSet)
{
String message = "0" ;
if(!"".equals(dataid) && dataid !=null)
{
RecordSet rs = new RecordSet();
//插入明细表
String tablename_dt = tablename;
writeLog("tablename_dt="+tablename_dt);
for(Map<String,String> detailMap : detailList)
{
String dttablename = "" ;
String dttablenvalue = "" ;
try {
for (Entry<String, String> entry : detailMap.entrySet()) {
String fieldname = Util.null2String(entry.getKey());
String fieldvalue = "'" + Util.null2String(entry.getValue()) + "'";
dttablename += dttablename == "" ? fieldname : "," + fieldname;
if (fileSet.contains(fieldname)) {
dttablenvalue += dttablenvalue == "" ? fieldvalue : "," + fieldvalue;
} else {
dttablenvalue += dttablenvalue == "" ? "'" + fieldvalue.replace("'", "''").trim() + "'" : ",'" + fieldvalue.replace("'", "''").trim() + "'";
}
}
}catch (Exception e){
System.out.println(e.toString());
e.printStackTrace();
}
writeLog("dttablename:"+dttablename);
writeLog("dttablenvalue:"+dttablenvalue);
if(dttablename !="" && dttablenvalue !="")
{
String sql = "insert into "+tablename_dt+" (mainid,"+dttablename+") values ("+dataid+","+dttablenvalue+")";
writeLog(sql);
boolean boo = rs.execute(sql);
if(!boo)
{
message = "-1" ;
}
}else{
message = "-2" ;
}
}
}else{
message = "-3" ;
}
return message;
}
/***
*
* @param requestid
* @param formtable
* @param requestMap
* @return
*/
public String updateWorkflowBySap(String requestid, String formtable, Map<String,String> requestMap)
{
RecordSet rs = new RecordSet();
BaseBean bb = new BaseBean();
String msg = "" ;
try{
String tableset = "" ;
for (Entry<String, String> entry : requestMap.entrySet())
{
String fieldname = Util.null2String(entry.getKey()).trim();
String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim();
tableset += tableset =="" ? fieldname+"='"+fieldvalue.replace("'", "''").trim()+"'" :","+fieldname+"='"+fieldvalue.replace("'", "''").trim()+"'" ;
}
if(!"".equals(tableset))
{
String sql = " update "+formtable+" set "+tableset+" where requestid="+requestid;
bb.writeLog("sql:"+sql);
boolean flag = rs.executeUpdate(sql);
if(flag){
msg = "1";
}else{
msg = "0";
}
}else{
msg = "-1";
}
}catch (Exception e){
msg = "-1";
}
bb.writeLog("msg:"+msg);
return msg;
}
/***
*
* @param detailList
* @param detailid
* @return
*/
public DetailTableInfo queryDetailTableInfo(List<Map<String,String>> detailList,String detailid){
DetailTableInfo dti = new DetailTableInfo();
if("".equals(detailid)){
return dti;
}
List<DetailTable> detailtables = new ArrayList<DetailTable>();
DetailTable dt = new DetailTable();
dt.setId(detailid);
List<Row> rows = new ArrayList<Row>();
for(int i=0;i<detailList.size();i++)
{
Map<String,String> detailMap = detailList.get(i);
Row r = new Row();
List<Cell> cells = new ArrayList<Cell>();
for (Entry<String, String> entry : detailMap.entrySet())
{
String fieldname = Util.null2String(entry.getKey()).trim();
String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim();
Cell c = new Cell();
c.setName(fieldname);
c.setValue(fieldvalue);
cells.add(c);
}
Cell[] ca = new Cell[cells.size()];
cells.toArray(ca);
r.setCell(ca);
rows.add(r);
}
Row[] ra = new Row[rows.size()];
rows.toArray(ra);
dt.setRow(ra);
detailtables.add(dt);
DetailTable[] dta = new DetailTable[detailtables.size()];
detailtables.toArray(dta);
dti.setDetailTable(dta);
return dti;
}
/***
*
* @param creatorId
* @param workflowId
* @param requestName
* @param IsNextFlow
* @param requestMainMap
* @param detailList
* @return
*/
public String WorkflowCreateByRequestMap2(String creatorId ,String workflowId ,String requestName ,String IsNextFlow,Map<String,String> requestMainMap,List<Map<String,String>> detailList)
{
writeLog("-----创建流程传递的参数个数--------");
writeLog("creatorId:"+creatorId);
writeLog("workflowId:"+workflowId);
writeLog("requestName:"+requestName);
writeLog("IsNextFlow:"+IsNextFlow);
String requestid = "";
RequestInfo requestInfo = new RequestInfo();
requestInfo.setCreatorid(creatorId);//创建人Id
requestInfo.setWorkflowid(workflowId);//工作流Id
requestInfo.setDescription(requestName);//请求标题
if(!"".equals(IsNextFlow))
{
requestInfo.setIsNextFlow(IsNextFlow);
}
//主表字段
MainTableInfo mainTableInfo = new MainTableInfo();
Property[] propertyArray = new Property[requestMainMap.size()];
int p = 0;
for (Entry<String, String> entry : requestMainMap.entrySet())
{
propertyArray[p] = new Property();
propertyArray[p].setName(Util.null2String(entry.getKey()));
propertyArray[p].setValue(Util.null2String(entry.getValue()));
writeLog("\r\n---p="+p+"---Key="+entry.getKey()+"---Value="+entry.getValue());
p++;
}
writeLog("-----创建流程传递的参数个数p="+p);
mainTableInfo.setProperty(propertyArray);
requestInfo.setMainTableInfo(mainTableInfo);
if(detailList.size() >0){
DetailTableInfo detailTableInfo = queryDetailTableInfo(detailList,"1");
requestInfo.setDetailTableInfo(detailTableInfo);
}
RequestService service = new RequestService();
try {
//流程
try {
requestid = service.createRequest(requestInfo);//创建请求id
} catch (Exception e) {
writeLog("======="+e.getMessage());
}
//String userId = requestInfo.getLastoperator();//请求最后的操作者
//记录日志
StringBuffer sbf = new StringBuffer("\r\n-----xwd创建工作流记录日志开始");
WorkflowComInfo wfcif =new WorkflowComInfo();
RequestComInfo rcif = new RequestComInfo();
ResourceComInfo rscif = new ResourceComInfo();
sbf.append("\r\n-----姓名:"+rscif.getLastname(rcif.getRequestCreater(requestid)));
sbf.append("\r\n-----时间:"+rcif.getRequestCreateTime(requestid));
sbf.append("\r\n-----创建流程:"+wfcif.getWorkflowname(workflowId));
sbf.append("\r\n-----请求:"+rcif.getRequestname(requestid));
sbf.append("\r\n-----请求:"+requestid);
sbf.append("\r\n-----创建工作流记录日志结束");
writeLog(sbf.toString());
System.out.println(""+sbf.toString());
} catch (Exception e) {
writeLog("错误:" + e);
System.out.println("错误:" + e);
}
return requestid;
}
/***
*
* @param requestid
* @param userid
* @return
*/
public boolean WorkflowNextNodeBySubmit(int requestid,int userid)
{
writeLog("-----创建流程传递的参数个数--------");
writeLog("requestid:"+requestid);
boolean istrue = false;
RequestService service = new RequestService();
RequestInfo requestInfo = service.getRequest(requestid);
try {
istrue = service.nextNodeBySubmit(requestInfo,requestid,userid, "");//创建请求id
} catch (Exception e) {
writeLog("======="+e.getMessage());
istrue = false;
}
return istrue;
}
}

@ -0,0 +1,123 @@
package com.engine.tjyh.xc.web;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.engine.common.util.ServiceUtil;
import com.engine.tjyh.xc.service.XcService;
import com.engine.tjyh.xc.service.impl.XcServiceImpl;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
/**
*
* @Description
* @Author matrix
* @Date 2023/6/15 10:05
**/
@Slf4j
public class AcceptXcDataAction {
public XcService getService(){
return (XcService) ServiceUtil.getService(XcServiceImpl.class);
}
@POST
@Path("/sendData")
@Produces(MediaType.TEXT_PLAIN)
public String sendData(@Context HttpServletRequest request, @Context HttpServletResponse response){
log.info("测试-------------------------");
Map<String,Object> apidatas = new HashMap<String,Object>();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(), "utf-8"));
String line = null;
StringBuilder sb = new StringBuilder();
while((line = br.readLine())!=null){
sb.append(line);
}
String input = null2String(sb.toString());
if(!"".equals(input)) {
if(isJsonValid(input)) {
JSONObject jo1 = JSON.parseObject(input);
apidatas.putAll(this.getService().sendData(jo1));
}else{
apidatas.put("errno", -1);
apidatas.put("errmsg", "输入参数不是json格式");
}
}else {
apidatas.put("errno", -1);
apidatas.put("errmsg", "输入参数为空!");
}
} catch (Exception e) {
apidatas.put("errno", -1);
apidatas.put("errmsg", "catch exception : " + e.getMessage());
}
log.info("测试-------------------------"+JSON.toJSONString(apidatas));
return JSONObject.toJSONString(apidatas);
}
@POST
@Path("/sendData2")
@Produces(MediaType.TEXT_PLAIN)
public String sendData2(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String,Object> apidatas = new HashMap<String,Object>();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(), "utf-8"));
String line = null;
StringBuilder sb = new StringBuilder();
while((line = br.readLine())!=null){
sb.append(line);
}
String input = null2String(sb.toString());
if(!"".equals(input)) {
if(isJsonValid(input)) {
JSONObject jo1 = JSON.parseObject(input);
apidatas.putAll(this.getService().sendData2(jo1));
}else{
apidatas.put("errno", -1);
apidatas.put("errmsg", "输入参数不是json格式");
}
}else {
apidatas.put("errno", -1);
apidatas.put("errmsg", "输入参数为空!");
}
} catch (Exception e) {
apidatas.put("errno", -1);
apidatas.put("errmsg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(apidatas);
}
public static String null2String(String s) {
return s == null ? "" : s;
}
/**
* JSON
*
* @param jsonStr JSON
* @return truefalse
*/
public static boolean isJsonValid(String jsonStr) {
try {
JSON.parse(jsonStr);
return true;
} catch (JSONException e) {
return false;
}
}
}

@ -1,48 +1,102 @@
package com.engine.web.meeting; package com.engine.web.meeting;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.api.meeting.cusvideo.util.YealinkVideoUtil;
import com.engine.common.util.ParamUtil; import com.engine.common.util.ParamUtil;
import weaver.general.BaseBean; import weaver.general.BaseBean;
import weaver.meeting.video.consumer.MeetingVideoFactory;
import weaver.meeting.video.consumer.VideoMeetingClient;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.POST; import javax.ws.rs.POST;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context; import javax.ws.rs.core.Context;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class NewMeet { public class NewMeet {
@Path("/newMeet") @Path("/newMeet")
@POST @POST
public String newMeet(@Context HttpServletRequest request, @Context HttpServletResponse response) { @Produces("application/json")
public String newMeet(@Context HttpServletRequest request, @Context HttpServletResponse response) throws IOException {
// try {
// Map<String, Object> map = getRequestParams(request);
// Map<String, Object> map = ParamUtil.request2Map(request);
JSONObject requestBody = getJson(request);
JSONObject meetingInfo = requestBody.getJSONObject("data").getJSONObject("meetingInfo");
HashMap<String, String> param = new HashMap<>();
param.put("meetingNum",meetingInfo.getString("meetingNum"));
param.put("meetingID",meetingInfo.getString("meetingID"));
param.put("subject",meetingInfo.getString("subject"));
param.put("startTime",meetingInfo.getString("startTime"));
param.put("createType",meetingInfo.getString("createType"));
param.put("subjectID",meetingInfo.getJSONObject("organizer").getString("subjectID"));
param.put("displayName",meetingInfo.getJSONObject("organizer").getString("displayName"));
VideoMeetingClient videoMeetingClient = MeetingVideoFactory.getInstance("yealink");
// videoMeetingClient.addMeeting()
return JSONObject.toJSONString(param);
}
public static JSONObject getJson(HttpServletRequest request) throws IOException {
//从前端获取输入字节流
ServletInputStream requestInputStream = request.getInputStream();
//将字节流转换为字符流,并设置字符编码为utf-8
InputStreamReader ir = new InputStreamReader(requestInputStream,"utf-8");
//使用字符缓冲流进行读取
BufferedReader br = new BufferedReader(ir);
StringBuilder sb = new StringBuilder();
try {
//开始拼装json字符串
String line = null;
while((line = br.readLine())!=null) {
sb.append(line);
}
}catch (Exception e){
e.printStackTrace();
}finally {
requestInputStream.close();
ir.close();
br.close();
}
JSONObject json = JSONObject.parseObject(sb.toString());
return json;
// StringBuilder stringBuilder = new StringBuilder();
// BufferedReader reader = request.getReader();
// try { // try {
Map<String, Object> map = ParamUtil.request2Map(request); // String line;
new BaseBean().writeLog("oameeting/newMeet--->" + map); // while ((line = reader.readLine()) != null) {
new BaseBean().writeLog("oameeting/newMeet--->" + JSONObject.toJSONString(map)); // stringBuilder.append(line).append('\n');
// String dataTable = (String) map.get("dataTable");
// RecordSet recordSet = new RecordSet();
// recordSet.executeQuery("select * from uf_View_resume_perm where sfqy = 0");
// StringBuilder s = new StringBuilder();
// while (recordSet.next()){
// String xld = Utils.null2String(recordSet.getString("xld"));
// s.append(xld).append(",");
// } // }
// HashMap<String, String> result = new HashMap<>(); // } finally {
// if (s.length()>0){ // reader.close();
// result.put("data",s.toString().substring(0, s.length()-1));
// }else {
// result.put("data","");
// } // }
// result.put("code","200"); // return JSONObject.parseObject(stringBuilder.toString()) ;
// return JSONObject.toJSONString(result); }
// }catch (Exception e){
// e.printStackTrace();
// HashMap<String, String> result = new HashMap<>();
// result.put("data",e.getMessage());
// result.put("code","500");
return JSONObject.toJSONString(null);
private String getYealinkUrl(String host, String token, String mtnum, String userId, String meetingPassword) {
String url = host + "/meeting-join-links/" + mtnum;
JSONObject body = new JSONObject();
body.put("language", "zh");
body.put("password", meetingPassword);
JSONObject resultJson = YealinkVideoUtil.doGet(url, token, null, body);
return resultJson.getString("joinLink");
} }
} }

@ -18,7 +18,7 @@ import java.nio.charset.StandardCharsets;
import java.util.Map; import java.util.Map;
public class TjbkServerSocket implements ServletContextListener { public class TjbkServerSocket implements ServletContextListener {
private SocketThread_sl socketThread; private SocketThread socketThread;
@Override @Override
public void contextDestroyed(ServletContextEvent arg0) { public void contextDestroyed(ServletContextEvent arg0) {
@ -35,7 +35,7 @@ public class TjbkServerSocket implements ServletContextListener {
new BaseBean().writeLog("contextInitialized启动"); new BaseBean().writeLog("contextInitialized启动");
ServletContext servletContext = arg0.getServletContext(); ServletContext servletContext = arg0.getServletContext();
if (socketThread == null) { if (socketThread == null) {
socketThread = new SocketThread_sl(null, servletContext); socketThread = new SocketThread(null, servletContext);
socketThread.start(); // servlet上下文初始化时启动socket服务端线程 socketThread.start(); // servlet上下文初始化时启动socket服务端线程
} }
} }

@ -1,166 +0,0 @@
package com.engine.web.tjbk;
import com.engine.tjbankSocket.SocketExecute;
import com.engine.tjbankSocket.impl.CWGLSocketExecute;
import com.engine.tjbankSocket.impl.GetToCountSocketExecute;
import com.engine.util.XMLUtils;
import org.apache.commons.lang.StringEscapeUtils;
import weaver.general.BaseBean;
import weaver.general.StringUtil;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Map;
public class Tjbk_SL_ServerSocket implements ServletContextListener {
private SocketThread_sl socketThread;
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
if (socketThread != null && socketThread.isInterrupted()) {
socketThread.closeServerSocket();
socketThread.interrupt();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
new BaseBean().writeLog("contextInitialized启动");
ServletContext servletContext = arg0.getServletContext();
if (socketThread == null) {
socketThread = new SocketThread_sl(null, servletContext);
socketThread.start(); // servlet上下文初始化时启动socket服务端线程
}
}
}
class SocketThread_sl extends Thread {
private ServletContext servletContext;
private ServerSocket serverSocket;
public SocketThread_sl(ServerSocket serverSocket, ServletContext servletContext) {
this.servletContext = servletContext;
// 从web.xml中context-param节点获取socket端口
String port = this.servletContext.getInitParameter("socketPortSL");
if (serverSocket == null) {
try {
this.serverSocket = new ServerSocket(Integer.parseInt(port));
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void run() {
while (!this.isInterrupted()) { // 线程未中断执行循环
try {
new BaseBean().writeLog("SocketThread线程启动");
Socket socket = serverSocket.accept();
if (socket != null) {
new ProcessSocketData_sl(socket, this.servletContext).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void closeServerSocket() {
try {
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ProcessSocketData_sl extends Thread {
private Socket socket;
private ServletContext servletContext;
public ProcessSocketData_sl() {
super();
}
public ProcessSocketData_sl(Socket socket, ServletContext servletContext) {
this.socket = socket;
this.servletContext = servletContext;
}
@Override
public void run() {
try {
// BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new BaseBean().writeLog("ServerSocket线程启动");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8);
PrintWriter pw = new PrintWriter(outputStreamWriter);
InputStream inputStream = socket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
char[] datalen=new char[8];//报文前八位为报文体总长度
in.read(datalen,0,8);
String lendata=new String (datalen);
int length=Integer.parseInt(lendata);
new BaseBean().writeLog("报文长度"+length);
// byte[] data=new byte[length];
char[] data=new char[length];
int datalength = in.read(data,0,length);
String requestData = new String(data);
new BaseBean().writeLog("requestData",requestData);
String s = "";
if (!StringUtil.isEmpty(requestData.toString())) {
new BaseBean().writeLog("requestData",requestData);
s = execute(requestData.toString());
}
// 执行自定义的请求解析方法生成响应response
pw.println(s);
pw.flush(); // 刷新缓冲区
pw.close();
socket.close();
// System.out.println(sb);
} catch (IOException e) {
e.printStackTrace();
System.out.println(e);
}
}
private String execute(String XMLparam){
new BaseBean().writeLog(this.getClass().getName()+":XMLparam=="+XMLparam);
Map<String, String> paramMap = XMLUtils.parseXMLToMap(XMLparam);
new BaseBean().writeLog(this.getClass().getName()+":paramMap=="+paramMap);
StringEscapeUtils.unescapeXml(XMLparam);
//目标系统代码
String system_id = paramMap.get("system_id");
// 请求方系统代码
String requester_id = paramMap.get("requester_id");
// 请求方机构代号
String branch_id = paramMap.get("branch_id");
new BaseBean().writeLog(this.getClass().getName()+":requester_id=="+requester_id);
SocketExecute socketExecute = null;
if ("0157".equals(requester_id)){
socketExecute = new GetToCountSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":GetToCountSocketExecute");
}else if("0170".equals(requester_id)){
socketExecute = new CWGLSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":CWGLSocketExecute");
}
String execute = socketExecute.execute(XMLparam);
return execute;
}
}

@ -1,167 +0,0 @@
package com.engine.web.zhsl;
import com.engine.tjbankSocket.SocketExecute;
import com.engine.tjbankSocket.impl.CWGLSocketExecute;
import com.engine.tjbankSocket.impl.GetToCountSocketExecute;
import com.engine.util.XMLUtils;
import org.apache.commons.lang.StringEscapeUtils;
import weaver.general.BaseBean;
import weaver.general.StringUtil;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Map;
public class Tjbk_SL_ServerSocket implements ServletContextListener {
private SocketThread_sl socketThread;
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
if (socketThread != null && socketThread.isInterrupted()) {
socketThread.closeServerSocket();
socketThread.interrupt();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
new BaseBean().writeLog("Tjbk_SL_ServerSocket——contextInitialized启动");
ServletContext servletContext = arg0.getServletContext();
if (socketThread == null) {
socketThread = new SocketThread_sl(null, servletContext);
socketThread.start(); // servlet上下文初始化时启动socket服务端线程
}
}
}
class SocketThread_sl extends Thread {
private ServletContext servletContext;
private ServerSocket serverSocket;
public SocketThread_sl(ServerSocket serverSocket, ServletContext servletContext) {
this.servletContext = servletContext;
// 从web.xml中context-param节点获取socket端口
String port = this.servletContext.getInitParameter("socketPortSL");
new BaseBean().writeLog("socketPortSL端口"+port);
if (serverSocket == null) {
try {
this.serverSocket = new ServerSocket(Integer.parseInt(port));
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void run() {
while (!this.isInterrupted()) { // 线程未中断执行循环
try {
new BaseBean().writeLog("SocketThread线程启动");
Socket socket = serverSocket.accept();
if (socket != null) {
new ProcessSocketData_sl(socket, this.servletContext).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void closeServerSocket() {
try {
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ProcessSocketData_sl extends Thread {
private Socket socket;
private ServletContext servletContext;
public ProcessSocketData_sl() {
super();
}
public ProcessSocketData_sl(Socket socket, ServletContext servletContext) {
this.socket = socket;
this.servletContext = servletContext;
}
@Override
public void run() {
try {
// BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new BaseBean().writeLog("ServerSocket线程启动");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8);
PrintWriter pw = new PrintWriter(outputStreamWriter);
InputStream inputStream = socket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
char[] datalen=new char[8];//报文前八位为报文体总长度
in.read(datalen,0,8);
String lendata=new String (datalen);
int length=Integer.parseInt(lendata);
new BaseBean().writeLog("报文长度"+length);
// byte[] data=new byte[length];
char[] data=new char[length];
int datalength = in.read(data,0,length);
String requestData = new String(data);
new BaseBean().writeLog("requestData",requestData);
String s = "";
if (!StringUtil.isEmpty(requestData.toString())) {
new BaseBean().writeLog("requestData",requestData);
s = execute(requestData.toString());
}
// 执行自定义的请求解析方法生成响应response
pw.println(s);
pw.flush(); // 刷新缓冲区
pw.close();
socket.close();
// System.out.println(sb);
} catch (IOException e) {
e.printStackTrace();
System.out.println(e);
}
}
private String execute(String XMLparam){
new BaseBean().writeLog(this.getClass().getName()+":XMLparam=="+XMLparam);
Map<String, String> paramMap = XMLUtils.parseXMLToMap(XMLparam);
new BaseBean().writeLog(this.getClass().getName()+":paramMap=="+paramMap);
StringEscapeUtils.unescapeXml(XMLparam);
//目标系统代码
String system_id = paramMap.get("system_id");
// 请求方系统代码
String requester_id = paramMap.get("requester_id");
// 请求方机构代号
String branch_id = paramMap.get("branch_id");
new BaseBean().writeLog(this.getClass().getName()+":requester_id=="+requester_id);
SocketExecute socketExecute = null;
if ("0157".equals(requester_id)){
socketExecute = new GetToCountSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":GetToCountSocketExecute");
}else if("0170".equals(requester_id)){
socketExecute = new CWGLSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":CWGLSocketExecute");
}
String execute = socketExecute.execute(XMLparam);
return execute;
}
}

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
This is the JRebel configuration file. It maps the running application to your IDE workspace, enabling JRebel reloading for this project.
Refer to https://manuals.jrebel.com/jrebel/standalone/config.html for more information.
-->
<application generated-by="intellij" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://update.zeroturnaround.com/jrebel/rebel-2_3.xsd">
<id>TJBK_project</id>
<classpath>
<dir name="E:/workspace/TJBK_project/classes">
</dir>
</classpath>
</application>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,127 @@
package weaver.interfaces.workflow.action.javacode;
import com.api.formmode.page.util.Util;
import com.icbc.api.internal.apache.http.E;
import weaver.conn.RecordSet;
import weaver.interfaces.workflow.action.Action;
import weaver.general.BaseBean;
import weaver.soa.workflow.request.RequestInfo;
import java.util.*;
/**
* Online custom action interface
*
*/
public class Action20231013103613 extends BaseBean implements Action {
/**
* After selecting aciton after the process path node, this method will be executed after the node is submitted.
*/
@Override
public String execute(RequestInfo request) {
String requestId = request.getRequestid();
String tablename = request.getRequestManager().getBillTableName();
RecordSet rs = new RecordSet();
try {
rs.executeQuery("select MAINREQUESTID from workflow_requestbase where requestid = ?" , requestId);
//查询主流程
String mainrequestid = "";
if(rs.next()){
mainrequestid = Util.null2String(rs.getString("MAINREQUESTID"));
}
//查询平行流程request
ArrayList<String> siblingRequestIds = new ArrayList<>();
rs.executeQuery("select requestid from workflow_requestbase where MAINREQUESTID = ?" , mainrequestid);
while(rs.next()){
String siblingRequestId = Util.null2String(rs.getString("requestid"));
siblingRequestIds.add(siblingRequestId);
}
writeLog("平行流程"+siblingRequestIds);
//当前流程的协办部门
rs.execute("select * from " + tablename + " where requestid = " + requestId);
rs.next();
String xbbm = rs.getString("xbbm");
//
HashMap<String, String> xbbmMap = new HashMap<>();
rs.execute("select * from " + tablename + " where requestid in (" + String.join(",",siblingRequestIds)+" )");
while ( rs.next()){
String mainid = rs.getString("id");
String ycfxbbm = rs.getString("ycfxbbm");
String newycfxbbm = mergeWithoutDuplicates(xbbm, ycfxbbm);
xbbmMap.put(mainid,newycfxbbm);
}
writeLog("修改平行流程"+xbbmMap);
xbbmMap.forEach((key,value) ->{
rs.executeUpdate("update "+ tablename +" set ycfxbbm = ? where id = ?",value,key);
});
}catch (Exception e){
boolean error = true;
if (error) {
request.getRequestManager().setMessageid("90001");
request.getRequestManager().setMessagecontent("System Abnormal Termination Process Submission");
}
}
return Action.SUCCESS;
}
// public static String mergeWithoutDuplicates(String a, String b) {
// if (b == null || b.isEmpty()) {
// return a;
// }
//
// String[] idsA = a.split(",");
// String[] idsB = b.split(",");
//
// for (String idA : idsA) {
// boolean exists = false;
// for (String idB : idsB) {
// if (idA.equals(idB)) {
// exists = true;
// break;
// }
// }
// if (!exists) {
// b += "," + idA;
// }
// }
// return b;
// }
public static void main(String[] args) {
String a = "1,2,3,4,5";
String b = "3,4,5,6,7";
b = mergeWithoutDuplicates(a, b);
System.out.println(b); // 输出: 3,4,5,6,7,1,2
}
public static String mergeWithoutDuplicates(String a, String b) {
Set<String> setB = new HashSet<>();
StringBuilder result = new StringBuilder(b);
if (b != null && !b.isEmpty()) {
for (String id : b.split(",")) {
setB.add(id.trim());
}
}
for (String idA : a.split(",")) {
idA = idA.trim();
if (!setB.contains(idA)) {
if (result.length() > 0) {
result.append(",");
}
result.append(idA);
}
}
return result.toString();
}
}

@ -0,0 +1,339 @@
package weaver.interfaces.workflow.action.javacode;
import com.dcfs.fts.common.error.FtpException;
import com.engine.custom.hg.util.HgUtils;
import com.engine.custom.sl.entity.*;
// import com.engine.util.SocketClientUtil;
import com.engine.util.SocketClientUtil;
import com.engine.util.XMLUtils;
import com.icbc.api.internal.apache.http.impl.cookie.S;
import com.weaver.general.Util;
import org.jsoup.Jsoup;
import weaver.conn.RecordSet;
import weaver.file.ImageFileManager;
import weaver.general.StringUtil;
import weaver.hrm.User;
import weaver.interfaces.workflow.action.Action;
import weaver.general.BaseBean;
import weaver.soa.workflow.request.RequestInfo;
import java.io.*;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* (
*
*/
public class Action20231015024217 extends BaseBean implements Action {
/**
* After selecting aciton after the process path node, this method will be executed after the node is submitted.
*/
@Override
public String execute(RequestInfo request) {
writeLog("推送商旅节点后附加操作====>");
// if(error) {
// request.getRequestManager().setMessageid("90001");
// request.getRequestManager().setMessagecontent("System Abnormal Termination Process Submission");
// }
String requestId = request.getRequestid();
String tablename = request.getRequestManager().getBillTableName();
TravelToEsbBean toEsbBean = new TravelToEsbBean();
//封装主表数据
RecordSet rs = new RecordSet();
String mainId = setMainForm(requestId, tablename, rs, toEsbBean);
writeLog("toEsbBean1====>"+toEsbBean);
writeLog("上传附件到ESB服务器====>");
try {
fileToEsb(toEsbBean,requestId);
} catch (Exception e) {
request.getRequestManager().setMessageid("10001");
request.getRequestManager().setMessagecontent(e.getMessage());
return Action.FAILURE_AND_CONTINUE;
}
setFormDt1(mainId,tablename,rs,toEsbBean);
writeLog("toEsbBean2====>"+toEsbBean);
setFormDt2(mainId,tablename,rs,toEsbBean);
writeLog("toEsbBean3====>"+toEsbBean);
String Service_Body = "<Service_Body><request>"+ toEsbBean.toXMLString()+"</request></Service_Body>" ;
writeLog("toEsbBean4====>"+Service_Body);
try{
EsbRequestHeader esbRequestHeader = new EsbRequestHeader(Util.getIntValue(mainId));
writeLog("esbRequestHeader====>"+esbRequestHeader);
String Service_Header = TravelToEsbBean.convertObjectToXml(esbRequestHeader,"Service_Header");
writeLog("esbRequestHeaderXML====>"+Service_Header);
String serviceXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service>";
serviceXML = serviceXML + Service_Header + Service_Body;
serviceXML = serviceXML + "</Service>";
writeLog("esbRequestHeaderXML====>"+serviceXML);
int byteArray = serviceXML.getBytes("UTF-8").length;
// Calculate the length of the byte array
// int bytelength = byteArray.length;
String length = String.format("%08d", byteArray);
writeLog("XMLlength"+ length);
serviceXML = length + serviceXML;
writeLog("serviceXML==="+ serviceXML);
// serviceXML = new String(serviceXML.getBytes(StandardCharsets.UTF_8));
writeLog("UTF_8_serviceXML==="+ serviceXML);
SocketClientUtil scketClient = new SocketClientUtil("14.1.71.90",10149);
String send = scketClient.send(serviceXML);
String substring = send.substring(0, 8);
String substring1 = send.substring(8);
Map<String, String> map = XMLUtils.parseXMLToMap(substring1);
String retCd = map.get("retCd");
String retCdDsc = map.get("retCdDsc");
if ("9999".equals(retCd)){
request.getRequestManager().setMessageid("9999");
request.getRequestManager().setMessagecontent(retCdDsc);
return Action.FAILURE_AND_CONTINUE;
}
}catch (Exception e){
e.printStackTrace();
writeLog("构建XML异常"+e.getMessage());
request.getRequestManager().setMessageid("10001");
request.getRequestManager().setMessagecontent(e.getMessage());
return Action.FAILURE_AND_CONTINUE;
}
// setFormDt1();
return Action.SUCCESS;
}
private void fileToEsb(TravelToEsbBean toEsbBean, String requestId) throws Exception {
// HashMap<String, String> filePathMap = new HashMap<>();
List<acsryItem> acsryArray = toEsbBean.getAcsryArray();
for (acsryItem acsryItem : acsryArray) {
String acsryNm = acsryItem.getAcsryNm();
writeLog("acsryNm"+acsryNm);
ImageFileManager ifm = new ImageFileManager();
ifm.getImageFileInfoById(Util.getIntValue(acsryNm,0));
InputStream inputStream = ifm.getInputStream();
String imageFileName = ifm.getImageFileName();
writeLog("imageFileName"+imageFileName);
String[] filename = imageFileName.split("\\.");
String tempFilePath = "";
try {
File tempFile = File.createTempFile(filename[0],filename.length ==2 ?filename[1]:"");
// 创建一个输出流,将数据写入临时文件
OutputStream outputStream = new FileOutputStream(tempFile);
// 将输入流中的数据复制到输出流(即临时文件)
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
tempFilePath = tempFile.getAbsolutePath();
writeLog( "临时文件位置"+tempFilePath);
// 关闭输入流和输出流
inputStream.close();
outputStream.close();
}catch (Exception e){
e.printStackTrace();
writeLog( "创建本地文件异常"+e.getMessage());
throw new Exception("创建本地文件异常");
}
//推送ESB服务器
String ftpPath = "";
try {
ftpPath = HgUtils.putFile(tempFilePath, requestId + File.separator + imageFileName);
} catch (FtpException e) {
e.printStackTrace();
writeLog( "传输ESBftp异常"+e.getMessage());
throw new Exception("传输ESBftp异常");
} catch (IOException e) {
e.printStackTrace();
writeLog( "传输ESBIO异常"+e.getMessage());
throw new Exception("传输ESBftp异常");
}
acsryItem.setAcsryNm(imageFileName);
acsryItem.setSavePath(ftpPath);
}
}
private String setMainForm(String requestId, String tablename, RecordSet rs ,TravelToEsbBean toEsbBean) {
rs.execute("select * from " + tablename + " where requestid = " + requestId);
String mainid = "";
String fj = "";
String spdfj = "";
//表单数据
if (rs.next()) {
mainid = rs.getString("id");
//OA差旅报销单单据编号
toEsbBean.setOaTrvlBnsExpnsAcctNo(rs.getString(Util.null2String("djbh")));
//经办人工号
toEsbBean.setOperatorNo(Util.null2String(rs.getString("jbrgh")));
//经办人姓名 id
toEsbBean.setOperatorName(Util.null2String(rs.getString("jbrxm")));
String lastname = new User(Util.getIntValue(toEsbBean.getOperatorName())).getLastname();
toEsbBean.setOperatorName(lastname);
//附件张数
toEsbBean.setAcsryNums(Util.null2String(rs.getString("fjzs")));
//报销金额
toEsbBean.setExpnsAmt(multiply100(Util.null2String(rs.getString("bxjedwf"))));
//报销事由 Jsoup.parse(htmlContent).text()
String expnsRsn = Util.null2String(rs.getString("bxsy"));
String text = Jsoup.parse(expnsRsn).text();
toEsbBean.setExpnsRsn(text);
//备注
toEsbBean.setRemark(Util.null2String(rs.getString("bz")));
fj = Util.null2String(rs.getString("fj"));
spdfj = Util.null2String(rs.getString("spdfj"));
// String formData = rs.getString("formData");
}
// 封装文件数组
//现在是id
List<String> fjids = new ArrayList<>( Arrays.asList(fj.split(",")));
//
writeLog("fjids"+fjids);
try {
if (!StringUtil.isEmpty(spdfj)){
fjids.add(spdfj);
}
ArrayList<acsryItem> acsryArray = new ArrayList<>();
for (String fjid : fjids) {
acsryItem acsryItem = new acsryItem();
acsryItem.setAcsryNm(getimgid(fjid,rs));
acsryArray.add(acsryItem);
}
toEsbBean.setAcsryArray(acsryArray);
//重新设置下附件张数为数组长度
toEsbBean.setAcsryNums(acsryArray.size()+"");
}catch (Exception e){
e.printStackTrace();
writeLog("fjidsException"+e);
}
return mainid;
}
private void setFormDt1(String mainid, String tablename, RecordSet rs , TravelToEsbBean toEsbBean) {
rs.execute("select * from " + tablename + "_dt1 where mainid = " + mainid);
List<ExpenseItem> expenseArray = new ArrayList<>();
while (rs.next()) {
ExpenseItem expenseItem = new ExpenseItem();
// 支出类型
expenseItem.setExpndType(getpartyBuildCostCode(Util.getIntValue(rs.getString("zclx"),0)));
//不含税金额
expenseItem.setExclsvTaxAmt(multiply100(Util.null2String(rs.getString("bhsjedwf"))));
// //不含税金额
expenseItem.setTaxAmt(multiply100(Util.null2String(rs.getString("sedwf"))));
//价税合计金额
expenseItem.setPrcTotAmt(multiply100(Util.null2String(rs.getString("jshjjedwf"))));
//记账摘要 Jsoup.parse(expnsRsn).text()
String jzzy = Util.null2String(rs.getString("jzzy"));
String text = Jsoup.parse(jzzy).text();
expenseItem.setAcctingAbstct(text);
expenseArray.add(expenseItem);
}
toEsbBean.setExpndArray(expenseArray);
}
private void setFormDt2(String mainid, String tablename, RecordSet rs , TravelToEsbBean toEsbBean) {
rs.execute("select * from " + tablename + "_dt2 where mainid = " + mainid);
List<JourneyInfo> jrnyInfoArray = new ArrayList<>();
while (rs.next()) {
JourneyInfo journeyInfo = new JourneyInfo();
// 开始日期
journeyInfo.setStartDate(formatDate(Util.null2String(rs.getString("ksrq"))));
// 结束日期
journeyInfo.setEndDate(formatDate(Util.null2String(rs.getString("jsrq"))));
// 出差天数
journeyInfo.setBsnTrpDays(Util.null2String(rs.getString("ccts")));
//行程路线
journeyInfo.setJrnyPath(Util.null2String(rs.getString("hclx")));
//行程说明
journeyInfo.setJrnyExpln(Util.null2String(rs.getString("hcsm")));
//记账摘要
journeyInfo.setRemark(Util.null2String(rs.getString("bz")));
jrnyInfoArray.add(journeyInfo);
}
toEsbBean.setJrnyInfoArray(jrnyInfoArray);
}
//获取支出类型
private String getpartyBuildCostCode(int index){
if(index == 0){
return "FEE_BUILD";
}else if(index == 1){
return "BIZ_FEE";
}else if(index == 2){
return "PARTY_BUILD_EXPENSE";
}
return "";
}
public String getimgid(String docid, RecordSet rs){
String sql = "select docid,df.imagefileid imgid from docimagefile df left join imagefile imf on df.imagefileid = imf.imagefileid where DOCID = ?";
writeLog("getimgidsql"+sql+"===="+docid);
rs.executeQuery(sql,docid);
if (rs.next()){
writeLog("imgid"+Util.null2String(rs.getString("imgid")));
return Util.null2String(rs.getString("imgid"));
}
return "";
};
//生成流水号
public static String generateTimestamp() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date currentDate = new Date();
return dateFormat.format(currentDate);
}
public static String multiply100(String s) {
s = s.replace(",", ""); // 移除逗号
if (StringUtil.isEmpty(s)){
return "0";
}
BigDecimal value = new BigDecimal(s);
BigDecimal multipliedValue = value.multiply(new BigDecimal("100"));
int result = multipliedValue.intValue();
System.out.println(result); // 输出123456
return String.valueOf(result); // 输出123456
}
public static String formatDate(String input) {
// String input = "2023-09-20 19:29";
try {
SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
// 使用SimpleDateFormat解析输入字符串
if (!input.contains(" ")){
datetimeFormat = new SimpleDateFormat("yyyy-MM-dd");
}
Date date = datetimeFormat.parse(input);
// 使用另一个SimpleDateFormat对象格式化Date为所需的输出格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String output = dateFormat.format(date);
return output; // 输出: 2023-09-20
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public static void main(String[] args) {
String htmlContent = "2023-10-05 07:00" ;
System.out.println(htmlContent.contains(" "));
if (htmlContent.indexOf(" ") == -1){
}
}
}

@ -2735,6 +2735,9 @@ public class OfsTodoDataManagerNew implements IOfsTodoDataManager {
if (!StringUtils.isEmpty(title)) { if (!StringUtils.isEmpty(title)) {
message.setTitle(title); message.setTitle(title);
} }
// message.setMessageGroupType();
// message.setAgentId("86");
// message.setMessageGroupTypeName("[dfefgr]");
// message.setDetailTitle(""); // message.setDetailTitle("");
// message.setDetailTitleParams(null); // message.setDetailTitleParams(null);
} }

Loading…
Cancel
Save