推送ESB请求数据构建

master
rengp 2 years ago
parent d87a1a5023
commit dde1d7c43c

@ -0,0 +1,171 @@
package com.engine.custom.sl.entity;
import com.icbc.api.internal.apache.http.impl.cookie.S;
import weaver.general.BaseBean;
import java.text.SimpleDateFormat;
import java.util.Date;
public class EsbRequestHeader {
private String service_sn;
private String system_id;
private String requester_id;
private String branch_id;
private String channel_id;
private String service_time;
private String need_request;
private String SvcCd;
private String SvcScn;
private String BnkSrlNo;
private String FileFlg;
private String FilePath;
public EsbRequestHeader() {
}
public EsbRequestHeader(int id) {
BaseBean baseBean = new BaseBean();
String idStr = String.format("%06d", id);
String timestamp = generateTimestamp();
service_sn = timestamp+idStr;
system_id = baseBean.getPropValue("ESB_Header","system_id");
requester_id = baseBean.getPropValue("ESB_Header","requester_id");
branch_id = baseBean.getPropValue("ESB_Header","branch_id");
channel_id = baseBean.getPropValue("ESB_Header","channel_id");
service_time = timestamp;
need_request = "";
SvcCd = baseBean.getPropValue("ESB_Header","500120010");;
SvcScn = baseBean.getPropValue("ESB_Header","13");;
BnkSrlNo = requester_id + timestamp + idStr ;
FileFlg ="0";
}
public String getService_sn() {
return service_sn;
}
public void setService_sn(String service_sn) {
this.service_sn = service_sn;
}
public String getSystem_id() {
return system_id;
}
public void setSystem_id(String system_id) {
this.system_id = system_id;
}
public String getRequester_id() {
return requester_id;
}
public void setRequester_id(String requester_id) {
this.requester_id = requester_id;
}
public String getBranch_id() {
return branch_id;
}
public void setBranch_id(String branch_id) {
this.branch_id = branch_id;
}
public String getChannel_id() {
return channel_id;
}
public void setChannel_id(String channel_id) {
this.channel_id = channel_id;
}
public String getService_time() {
return service_time;
}
public void setService_time(String service_time) {
this.service_time = service_time;
}
public String getNeed_request() {
return need_request;
}
public void setNeed_request(String need_request) {
this.need_request = need_request;
}
public String getSvcCd() {
return SvcCd;
}
public void setSvcCd(String svcCd) {
SvcCd = svcCd;
}
public String getSvcScn() {
return SvcScn;
}
public void setSvcScn(String svcScn) {
SvcScn = svcScn;
}
public String getBnkSrlNo() {
return BnkSrlNo;
}
public void setBnkSrlNo(String bnkSrlNo) {
BnkSrlNo = bnkSrlNo;
}
public String getFileFlg() {
return FileFlg;
}
public void setFileFlg(String fileFlg) {
FileFlg = fileFlg;
}
public String getFilePath() {
return FilePath;
}
public void setFilePath(String filePath) {
FilePath = filePath;
}
public static String generateTimestamp() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date currentDate = new Date();
return dateFormat.format(currentDate);
}
// public static String getCurrentTime() {
// SimpleDateFormat dateFormat = new SimpleDateFormat("YYYYMMDDHHmmss");
// Date currentDate = new Date();
// return dateFormat.format(currentDate);
// }
@Override
public String toString() {
return "EsbRequestHeader{" +
"service_sn='" + service_sn + '\'' +
", system_id='" + system_id + '\'' +
", requester_id='" + requester_id + '\'' +
", branch_id='" + branch_id + '\'' +
", channel_id='" + channel_id + '\'' +
", service_time='" + service_time + '\'' +
", need_request='" + need_request + '\'' +
", SvcCd='" + SvcCd + '\'' +
", SvcScn='" + SvcScn + '\'' +
", BnkSrlNo='" + BnkSrlNo + '\'' +
", FileFlg='" + FileFlg + '\'' +
", FilePath='" + FilePath + '\'' +
'}';
}
}

@ -16,16 +16,14 @@ public class JourneyInfo {
private String bsnTrpDays;
private String jrnyPath;
private String jrnyExpln;
private String remark;
public String getRemark() {
return remark;
}
public String toXMLString() {
return "<expndArray>" +
"<startDate>" + startDate + "</startDate>"+
"<endDate>" + endDate +
"<bsnTrpDays>" + bsnTrpDays +
"<jrnyPath>" + jrnyPath +
"<jrnyExpln>" + jrnyExpln +
"</expndArray>" ;
public void setRemark(String remark) {
this.remark = remark;
}
@Override
@ -36,6 +34,7 @@ public class JourneyInfo {
", bsnTrpDays='" + bsnTrpDays + '\'' +
", jrnyPath='" + jrnyPath + '\'' +
", jrnyExpln='" + jrnyExpln + '\'' +
", remark='" + remark + '\'' +
'}';
}
@ -81,46 +80,9 @@ public class JourneyInfo {
public static String convertObjectToXml(Object object) {
StringBuilder xmlBuilder = new StringBuilder("<" + object.getClass().getSimpleName() + ">");
Field[] fields = object.getClass().getDeclaredFields();
Map<String, Object> attributes = new LinkedHashMap<>();
try {
for (Field field : fields) {
field.setAccessible(true);
Object value = field.get(object);
if (value != null) {
String fieldName = field.getName();
xmlBuilder.append("<").append(fieldName).append(">")
.append(value)
.append("</").append(fieldName).append(">");
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
xmlBuilder.append("</" + object.getClass().getSimpleName() + ">");
return xmlBuilder.toString();
}
public static void main(String[] args) {
TravelToEsbBean textDocFileService = new TravelToEsbBean();
textDocFileService.setAcsryNums("1");
textDocFileService.setExpnsAmt("2");
textDocFileService.setExpnsRsn("3");
textDocFileService.setRemark("5");
textDocFileService.setOperatorName("fjkgnvbhui");
// 调用工具类将对象转换为 XML 字符串
String xmlString = null;
xmlString = convertObjectToXml(textDocFileService);
// 打印生成的 XML 字符串
System.out.println(xmlString);
}
}

@ -1,6 +1,13 @@
package com.engine.custom.sl.entity;
import weaver.general.StringUtil;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class TravelToEsbBean {
private String oaTrvlBnsExpnsAcctNo;
@ -15,18 +22,26 @@ public class TravelToEsbBean {
private List<acsryItem> acsryArray;
public String toXMLString() {
return
StringBuilder xmlString = new StringBuilder(
"<oaTrvlBnsExpnsAcctNo>" + oaTrvlBnsExpnsAcctNo +"</oaTrvlBnsExpnsAcctNo>" +
"<operatorNo>" + operatorNo + "</operatorNo>" +
"<operatorName>" + operatorName + "</operatorName>" +
"<acsryNums>" + acsryNums + "</acsryNums>" +
"<expnsAmt>" + expnsAmt + "</expnsAmt>" +
"<expnsRsn>" + expnsRsn +"</expnsRsn>" +
"<remark>" + remark + "</remark>" +
", expndArray=" + expndArray +
", jrnyInfoArray=" + jrnyInfoArray +
", acsryArray=" + acsryArray;
"<remark>" + remark + "</remark>") ;
for (ExpenseItem expenseItem : expndArray) {
xmlString.append(convertObjectToXml(expenseItem,"expndArray"));
}
for (JourneyInfo journeyInfo : jrnyInfoArray) {
xmlString.append(convertObjectToXml(journeyInfo,"jrnyInfoArray"));
}
for (acsryItem acsryItem : acsryArray) {
xmlString.append(convertObjectToXml(acsryItem,"acsryArray"));
}
return xmlString.toString();
}
@ -131,4 +146,34 @@ public class TravelToEsbBean {
public void setJrnyInfoArray(List<JourneyInfo> jrnyInfoArray) {
this.jrnyInfoArray = jrnyInfoArray;
}
public static String convertObjectToXml(Object object , String RootName) {
;
StringBuilder xmlBuilder = new StringBuilder("<" + (StringUtil.isEmpty(RootName)?object.getClass().getSimpleName():RootName )+ ">");
Field[] fields = object.getClass().getDeclaredFields();
Map<String, Object> attributes = new LinkedHashMap<>();
try {
for (Field field : fields) {
field.setAccessible(true);
Object value = field.get(object);
if (value != null) {
String fieldName = field.getName();
xmlBuilder.append("<").append(fieldName).append(">")
.append(value)
.append("</").append(fieldName).append(">");
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
xmlBuilder.append("</" + (StringUtil.isEmpty(RootName)?object.getClass().getSimpleName():RootName ) + ">");
return xmlBuilder.toString();
}
public static void main(String[] args) throws IOException {
File tempFile = File.createTempFile("tempfile", ".tmp");
System.out.println("临时文件路径: " + tempFile.getAbsolutePath());
}
}

@ -1,17 +1,18 @@
package weaver.interfaces.workflow.action.javacode;
import com.engine.custom.sl.entity.ExpenseItem;
import com.engine.custom.sl.entity.TravelToEsbBean;
import com.dcfs.fts.common.error.FtpException;
import com.engine.custom.hg.util.HgUtils;
import com.engine.custom.sl.entity.*;
import com.weaver.general.Util;
import weaver.conn.RecordSet;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import weaver.file.ImageFileManager;
import weaver.interfaces.workflow.action.Action;
import weaver.general.BaseBean;
import weaver.soa.workflow.request.RequestInfo;
import java.util.ArrayList;
import java.util.List;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* (
@ -32,52 +33,212 @@ public class Action20230911062023 extends BaseBean implements Action {
//封装主表数据
RecordSet rs = new RecordSet();
String mainId = setMainForm(requestId, tablename, rs, toEsbBean);
setFormDt1();
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>";
String length = String.format("%08d", serviceXML.length());
writeLog("XMLlength"+ length);
serviceXML = length + serviceXML;
writeLog("serviceXML==="+ serviceXML);
}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 main = "";
String mainid = "";
String fj = "";
//表单数据
if (rs.next()) {
String mainid = rs.getString("id");
mainid = rs.getString("id");
//OA差旅报销单单据编号
toEsbBean.setOaTrvlBnsExpnsAcctNo(Util.null2String("djbh"));
toEsbBean.setOaTrvlBnsExpnsAcctNo(rs.getString(Util.null2String("djbh")));
//经办人工号
toEsbBean.setOperatorNo(Util.null2String("jbrgh"));
toEsbBean.setOperatorNo(Util.null2String(rs.getString("jbrgh")));
//经办人姓名 id
toEsbBean.setOperatorName(Util.null2String("jbrxm"));
toEsbBean.setOperatorName(Util.null2String(rs.getString("jbrxm")));
//附件张数
toEsbBean.setAcsryNums(Util.null2String("fjzs"));
toEsbBean.setAcsryNums(Util.null2String(rs.getString("fjzs")));
//报销金额
toEsbBean.setExpnsAmt(Util.null2String("bxjedwf"));
toEsbBean.setExpnsAmt(Util.null2String(rs.getString("bxjedwf")));
//报销事由
toEsbBean.setExpnsRsn(Util.null2String("bxsy"));
toEsbBean.setExpnsRsn(Util.null2String(rs.getString("bxsy")));
//备注
toEsbBean.setRemark(Util.null2String("bz"));
toEsbBean.setRemark(Util.null2String(rs.getString("bz")));
fj = Util.null2String(rs.getString("fj"));
// String formData = rs.getString("formData");
}
return main;
// 封装文件数组
//现在是id
List<String> fjids = Arrays.asList(fj.split(","));
ArrayList<acsryItem> acsryArray = new ArrayList<>();
for (String fjid : fjids) {
acsryItem acsryItem = new acsryItem();
acsryItem.setAcsryNm(getimgid(fjid,rs));
acsryArray.add(acsryItem);
}
toEsbBean.setAcsryArray(acsryArray);
return mainid;
}
private void setFormDt1(String mainid, String tablename, RecordSet rs ,TravelToEsbBean toEsbBean) {
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(Util.null2String("djbh"));
//不含税金额
expenseItem.setExclsvTaxAmt();
expenseItem.setExpndType(getpartyBuildCostCode(Util.getIntValue(rs.getString("zclx"),0)));
//不含税金额
expenseItem.setAcctingAbstct();
expenseItem.setAcctingAbstct();
expenseItem.setAcctingAbstct();
expenseItem.setExclsvTaxAmt(Util.null2String(rs.getString("bhsjedwf")));
// //不含税金额
expenseItem.setTaxAmt(Util.null2String(rs.getString("sedwf")));
//价税合计金额
expenseItem.setPrcTotAmt(Util.null2String(rs.getString("jshjjedwf")));
//记账摘要
expenseItem.setAcctingAbstct("");
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(Util.null2String(rs.getString("ksrq")));
// 结束日期
journeyInfo.setEndDate(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 void main(String[] args) {
}
}

Loading…
Cancel
Save