diff --git a/com/engine/custom/sl/entity/EsbRequestHeader.java b/com/engine/custom/sl/entity/EsbRequestHeader.java
new file mode 100644
index 0000000..51afa37
--- /dev/null
+++ b/com/engine/custom/sl/entity/EsbRequestHeader.java
@@ -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 + '\'' +
+ '}';
+ }
+
+
+}
diff --git a/com/engine/custom/sl/entity/JourneyInfo.java b/com/engine/custom/sl/entity/JourneyInfo.java
index e2a4d62..8a0e073 100644
--- a/com/engine/custom/sl/entity/JourneyInfo.java
+++ b/com/engine/custom/sl/entity/JourneyInfo.java
@@ -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 "" +
- "" + startDate + ""+
- "" + endDate +
- "" + bsnTrpDays +
- "" + jrnyPath +
- "" + jrnyExpln +
- "" ;
+ 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 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);
- }
}
diff --git a/com/engine/custom/sl/entity/TravelToEsbBean.java b/com/engine/custom/sl/entity/TravelToEsbBean.java
index 9cadf20..afc98ba 100644
--- a/com/engine/custom/sl/entity/TravelToEsbBean.java
+++ b/com/engine/custom/sl/entity/TravelToEsbBean.java
@@ -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 acsryArray;
public String toXMLString() {
- return
- "" + oaTrvlBnsExpnsAcctNo +"" +
- "" + operatorNo + "" +
- "" + operatorName + "" +
- "" + acsryNums + "" +
- "" + expnsAmt + "" +
- "" + expnsRsn +"" +
- "" + remark + "" +
- ", expndArray=" + expndArray +
- ", jrnyInfoArray=" + jrnyInfoArray +
- ", acsryArray=" + acsryArray;
+ StringBuilder xmlString = new StringBuilder(
+ "" + oaTrvlBnsExpnsAcctNo +"" +
+ "" + operatorNo + "" +
+ "" + operatorName + "" +
+ "" + acsryNums + "" +
+ "" + expnsAmt + "" +
+ "" + expnsRsn +"" +
+ "" + 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 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 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());
+ }
}
diff --git a/weaver/interfaces/workflow/action/javacode/Action20230911062023.java b/weaver/interfaces/workflow/action/javacode/Action20230911062023.java
index fdf4fc1..da1a9ac 100644
--- a/weaver/interfaces/workflow/action/javacode/Action20230911062023.java
+++ b/weaver/interfaces/workflow/action/javacode/Action20230911062023.java
@@ -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 = ""+ toEsbBean.toXMLString()+"" ;
+ 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 = "";
+ serviceXML = serviceXML + Service_Header + Service_Body;
+ serviceXML = serviceXML + "";
+ 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 filePathMap = new HashMap<>();
+ List 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 fjids = Arrays.asList(fj.split(","));
+ ArrayList 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 expenseArray = new ArrayList<>();
while (rs.next()) {
ExpenseItem expenseItem = new ExpenseItem();
// 支出类型
- expenseItem.setExpndType(Util.null2String("djbh"));
+ expenseItem.setExpndType(getpartyBuildCostCode(Util.getIntValue(rs.getString("zclx"),0)));
//不含税金额
- expenseItem.setExclsvTaxAmt();
- //不含税金额
- 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 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) {
+
}
+
}