导出附件和excel

main
chenwei 1 year ago
commit 7e05898e53

@ -0,0 +1,7 @@
package com.api.demo.controller;
import javax.ws.rs.Path;
@Path("/ebusecdev/workflowexcel")
public class WorkflowExcelController extends com.engine.demo.controller.WorkflowExcelController {
}

@ -0,0 +1,151 @@
package com.engine.demo.cmd;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
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.demo.entity.invoice.Invoice;
import com.engine.demo.entity.travelBorrow.TravelBorrow;
import com.engine.demo.entity.travelBorrow.TravelBorrowDt1;
import com.engine.demo.entity.travelBorrow.TravelBorrowDt2;
import com.engine.demo.entity.travelBorrow.TravelBorrowDt3;
import com.engine.demo.entity.travelReimbur.*;
import com.engine.demo.util.ExportFjUtil;
import net.sf.json.JSONArray;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.file.ImageFileManager;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import javax.ws.rs.core.Response;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ExportFjZipCmd extends AbstractCommonCommand<Map<String, Object>> {
BaseBean bb = new BaseBean();
public ExportFjZipCmd(Map<String, Object> params, User user) {
this.user = user;
this.params = params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String, Object> result = new HashMap<>();
RecordSet rs = new RecordSet();
BaseBean bb = new BaseBean();
bb.writeLog("========开始下载=========");
String dataId = Util.null2String(params.get("dataId"));
bb.writeLog("dataId:" + dataId);
String type = Util.null2String(params.get("type"));
bb.writeLog("type:" + type);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String format = sdf.format(new Date());
//文件生成路径
String BASE_DIR = "/opt/weaver/ecology/filesystem/ebusecexport";
bb.writeLog("BASE_DIR:" + BASE_DIR);
//文件生成名称
String outPath = "";
ExportFjUtil util = new ExportFjUtil();
//从建模中获取需要导出的附件
List<Map<String, String>> outFiles = new ArrayList<>();
Map<String, String> lcbhAndWjids = new HashMap<>();
if ("TravelBorrow".equals(type)) {
String timeName = "差旅借款导出" + format;
util.exportExcel(type, dataId, BASE_DIR + File.separator + timeName, File.separator + timeName);
outPath = BASE_DIR + File.separator + timeName;
lcbhAndWjids.put(outPath, BASE_DIR + File.separator + timeName + "_" + File.separator + timeName);
outFiles.add(lcbhAndWjids);
}
if ("Invoice".equals(type)) {//发票
String acqFjSql = " SELECT fpdm, fjid FROM uf_LC_fpxx where id in (" + dataId + ") GROUP BY fpdm, fjid";
rs.executeQuery(acqFjSql);
while (rs.next()) {
String fpdm = Util.null2String(rs.getString("fpdm"));
String fjid = Util.null2String(rs.getString("fjid"));
if (StringUtils.isNotBlank(fpdm) && StringUtils.isNotBlank(fjid)) {
String timeName = "发票信息导出" + format;
String BASE_DIR_NAME = BASE_DIR + File.separator + timeName;
bb.writeLog("BASE_DIR_NAME:" + BASE_DIR_NAME);
outPath = util.zipDoc(fjid, BASE_DIR_NAME, fpdm + "_" + fjid, "uf_LC_fpxx", "wjcclj", "fjid");
bb.writeLog("outPath:" + outPath);
lcbhAndWjids.put(outPath, BASE_DIR_NAME + "_" + File.separator + timeName);
outFiles.add(lcbhAndWjids);
}
}
}
if ("TravelReimbur".equals(type)) {//差旅报销
String acqFjSql = " SELECT b.djbh, string_agg(a.wjid, ',') AS wjids FROM uf_OA_clbxd_dt7 a " +
" left join uf_OA_clbxd b " +
" on b.id = a.mainid where a.mainid in (" + dataId + ") GROUP BY b.djbh";
rs.executeQuery(acqFjSql);
while (rs.next()) {
String lcbh = Util.null2String(rs.getString("djbh"));
String wjid = Util.null2String(rs.getString("wjids"));
if (StringUtils.isNotBlank(lcbh) && StringUtils.isNotBlank(wjid)) {
String timeName = "差旅报销导出" + format;
String BASE_DIR_NAME = BASE_DIR + File.separator + timeName;
bb.writeLog("BASE_DIR_NAME:" + BASE_DIR_NAME);
outPath = util.zipDoc(wjid, BASE_DIR_NAME, lcbh + "_" + wjid, "uf_OA_clbxd_dt7", "wjcclj", "wjid");
bb.writeLog("outPath:" + outPath);
lcbhAndWjids.put(outPath, BASE_DIR_NAME + "_" + File.separator + timeName);
outFiles.add(lcbhAndWjids);
}
}
}
if (!outFiles.isEmpty()) {
bb.writeLog("outFiles:" + outFiles);
try {
for (Map<String, String> outFile : outFiles) {
for (String key : outFile.keySet()) {
String value = outFile.get(key);
String[] split = value.split("_");
//先将excel放到文件夹中
util.exportExcel(type, dataId, split[0], split[1]);
util.zipFolder(split[0], BASE_DIR + File.separator + format);
}
}
result.put("code", 200);
result.put("data", "/filesystem/ebusecexport/" + format);
} catch (Exception e) {
bb.writeLog("Response Exception: " + e);
result.put("code", "500");
result.put("msg", "请求失败,请联系管理员");
return result;
}
} else {
result.put("code", "500");
result.put("msg", "请求失败,请联系管理员");
return result;
}
return result;
}
}

@ -0,0 +1,423 @@
package com.engine.demo.cmd;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
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.demo.entity.FillData;
import com.engine.demo.entity.invoice.Invoice;
import com.engine.demo.entity.travelBorrow.TravelBorrow;
import com.engine.demo.entity.travelBorrow.TravelBorrowDt1;
import com.engine.demo.entity.travelBorrow.TravelBorrowDt2;
import com.engine.demo.entity.travelBorrow.TravelBorrowDt3;
import com.engine.demo.entity.travelReimbur.*;
import com.engine.workflow.biz.RobotNode.RobotNodeBiz;
import com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz;
import com.engine.workflow.biz.requestList.RequestListBiz;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.crm.Maint.CustomerInfoComInfo;
import weaver.general.BaseBean;
import weaver.general.GCONST;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.resource.ResourceComInfo;
import java.io.File;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.*;
public class WorkflowExcelDataCmd extends AbstractCommonCommand<Map<String, Object>> {
BaseBean bb = new BaseBean();
public WorkflowExcelDataCmd(Map<String, Object> params, User user) {
this.user = user;
this.params = params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String, Object> result = new HashMap<>();
Map<String, List<List<?>> > exportDatas = new HashMap<>();
String type = Util.null2String(params.get("type"));
String dataIds = Util.null2String(params.get("dataIds"));
if (StringUtils.isBlank(type)) {
result.put("code","500");
result.put("msg","先选择要导出类型");
return result;
}
if (StringUtils.isBlank(dataIds)) {
result.put("code","500");
result.put("msg","先选择要导出数据");
return result;
}
//封装数据
try {
RecordSet rs = new RecordSet();
String tableName = "";
if ("TravelBorrow".equals(type)) {//差旅借款
tableName = "uf_LC_cljkd";
// tableName = "formtable_main_24";
String acqDataSql = "select a.*, b.*, c. * ,d.* from " + tableName + " a " +
" left join " + tableName + "_dt1 b" +
" on b.mainid = a.id " +
" left join " + tableName + "_dt2 c" +
" on c.mainid = a.id " +
" left join " + tableName + "_dt3 d" +
" on d.mainid = a.id " +
"where a.id in (" + dataIds + ")";
bb.writeLog("TravelBorrow acqDataSql: " + acqDataSql);
List<List<?>> datasList = new ArrayList<>();
rs.executeQuery(acqDataSql);
List dataList = new ArrayList<>();
List data1List = new ArrayList<>();
List data2List = new ArrayList<>();
List data3List = new ArrayList<>();
while (rs.next()) {
//主表
TravelBorrow travelBorrow = new TravelBorrow();
travelBorrow.setDjmc(Util.null2String(rs.getString("djmc")));
travelBorrow.setDjbh(Util.null2String(rs.getString("djbh")));
travelBorrow.setJkdwbh(Util.null2String(rs.getString("jkdwbh")));
travelBorrow.setBmbh(Util.null2String(rs.getString("bmbh")));
travelBorrow.setDjzt(Util.null2String(rs.getString("djzt")));
travelBorrow.setJkrbh(Util.null2String(rs.getString("jkrbh")));
travelBorrow.setDjrq(Util.null2String(rs.getString("djrq")));
travelBorrow.setFyxmbh(Util.null2String(rs.getString("fyxmbh")));
travelBorrow.setFjzs(Util.null2String(rs.getString("fjzs")));
travelBorrow.setKyxmmc(Util.null2String(rs.getString("kyxmmc")));
travelBorrow.setRyzw(Util.null2String(rs.getString("ryzw")));
travelBorrow.setRyzwbh(Util.null2String(rs.getString("ryzwbh")));
travelBorrow.setZyxx(Util.null2String(rs.getString("zyxx")));
travelBorrow.setSqje(Util.null2String(rs.getString("sqje")));
travelBorrow.setBxycxsqje(Util.null2String(rs.getString("bxycxsqje")));
travelBorrow.setJkje(Util.null2String(rs.getString("jkje")));
travelBorrow.setZdrbh(Util.null2String(rs.getString("zdrbh")));
travelBorrow.setSfwt(Util.null2String(rs.getString("sfwt")));
dataList.add(travelBorrow);
//明细表1
TravelBorrowDt1 travelBorrowDt1 = new TravelBorrowDt1();
travelBorrowDt1.setNm(Util.null2String(rs.getString("nm")));
travelBorrowDt1.setJkdnm(Util.null2String(rs.getString("jkdnm")));
travelBorrowDt1.setSqdh(Util.null2String(rs.getString("sqdh")));
travelBorrowDt1.setSqsm(Util.null2String(rs.getString("sqsm")));
travelBorrowDt1.setCcksrq(Util.null2String(rs.getString("ccksrq")));
travelBorrowDt1.setCcjsrq(Util.null2String(rs.getString("ccjsrq")));
data1List.add(travelBorrowDt1);
//明细表2
TravelBorrowDt2 travelBorrowDt2 = new TravelBorrowDt2();
travelBorrowDt2.setFkjlnm(Util.null2String(rs.getString("fkjlnm")));
travelBorrowDt2.setBzdnm(Util.null2String(rs.getString("bzdnm")));
travelBorrowDt2.setZjjhbh(Util.null2String(rs.getString("zjjhbh")));
travelBorrowDt2.setZffsbh(Util.null2String(rs.getString("zffsbh")));
travelBorrowDt2.setDfxz(Util.null2String(rs.getString("dfxz")));
travelBorrowDt2.setBzrdw(Util.null2String(rs.getString("bzrdw")));
travelBorrowDt2.setSkzhm(Util.null2String(rs.getString("skzhm")));
travelBorrowDt2.setFkje(Util.null2String(rs.getString("fkje")));
travelBorrowDt2.setYxzh(Util.null2String(rs.getString("yxzh")));
travelBorrowDt2.setKhyx(Util.null2String(rs.getString("khyx")));
travelBorrowDt2.setZfsm(Util.null2String(rs.getString("zfsm")));
travelBorrowDt2.setZt(Util.null2String(rs.getString("zt")));
travelBorrowDt2.setFkhbbh(Util.null2String(rs.getString("fkhbbh")));
data2List.add(travelBorrowDt2);
//明细表3
TravelBorrowDt3 travelBorrowDt3 = new TravelBorrowDt3();
travelBorrowDt3.setJkdnm(Util.null2String(rs.getString("jkdnm")));
travelBorrowDt3.setSpjd(Util.null2String(rs.getString("spjd")));
travelBorrowDt3.setSpr(Util.null2String(rs.getString("spr")));
travelBorrowDt3.setSpnr(Util.null2String(rs.getString("spnr")));
travelBorrowDt3.setSpsj(Util.null2String(rs.getString("spsj")));
data3List.add(travelBorrowDt3);
}
datasList.add(dataList);
datasList.add(data1List);
datasList.add(data2List);
datasList.add(data3List);
exportDatas.put(type, datasList);
}
if ("Invoice".equals(type)) {//发票
tableName = "uf_LC_fpxx";
String acqDataSql = "select a.* from " + tableName + " a where a.id in (" + dataIds + ")";
bb.writeLog("Invoice acqDataSql: " + acqDataSql);
List<List<?>> datasList = new ArrayList<>();
rs.executeQuery(acqDataSql);
List dataList = new ArrayList<>();
while (rs.next()) {
//主表
Invoice invoice = new Invoice();
invoice.setFpzj(Util.null2String(rs.getString("a.fpzj")));
invoice.setFplxid(Util.null2String(rs.getString("a.fplxid")));
invoice.setFplxbh(Util.null2String(rs.getString("a.fplxbh")));
invoice.setFpzlbh(Util.null2String(rs.getString("a.fpzlbh")));
invoice.setGmfmc(Util.null2String(rs.getString("a.gmfmc")));
invoice.setGmfxxnsrsbh(Util.null2String(rs.getString("a.gmfxxnsrsbh")));
invoice.setGmfxxdz(Util.null2String(rs.getString("a.gmfxxdz")));
invoice.setGmfxxdh(Util.null2String(rs.getString("a.gmfxxdh")));
invoice.setGmfxxkhx(Util.null2String(rs.getString("a.gmfxxkhx")));
invoice.setGmfxxkhxzh(Util.null2String(rs.getString("a.gmfxxkhxzh")));
invoice.setXsfmc(Util.null2String(rs.getString("a.xsfmc")));
invoice.setXsfxxnssbh(Util.null2String(rs.getString("a.xsfxxnssbh")));
invoice.setXsfdz(Util.null2String(rs.getString("a.xsfdz")));
invoice.setXsfdh(Util.null2String(rs.getString("a.xsfdh")));
invoice.setXsfkhyx(Util.null2String(rs.getString("a.xsfkhyx")));
invoice.setXsfkhxzh(Util.null2String(rs.getString("a.xsfkhxzh")));
invoice.setXym(Util.null2String(rs.getString("a.xym")));
invoice.setFphm(Util.null2String(rs.getString("a.fphm")));
invoice.setFpdm(Util.null2String(rs.getString("a.fpdm")));
invoice.setFprq(Util.null2String(rs.getString("a.fprq")));
invoice.setFpje(Util.null2String(rs.getString("a.fpje")));
invoice.setBhse(Util.null2String(rs.getString("a.bhse")));
invoice.setSe(Util.null2String(rs.getString("a.se")));
invoice.setBz(Util.null2String(rs.getString("a.bz")));
invoice.setFpbq(Util.null2String(rs.getString("a.fpbq")));
invoice.setFpfl(Util.null2String(rs.getString("a.fpfl")));
invoice.setFpflmc(Util.null2String(rs.getString("a.fpflmc")));
invoice.setFpnr(Util.null2String(rs.getString("a.fpnr")));
invoice.setYzzt(Util.null2String(rs.getString("a.yzzt")));
invoice.setBxzt(Util.null2String(rs.getString("a.bxzt")));
invoice.setZh(Util.null2String(rs.getString("a.zh")));
invoice.setDwbh(Util.null2String(rs.getString("a.dwbh")));
invoice.setYgbh(Util.null2String(rs.getString("a.ygbh")));
invoice.setWjlx(Util.null2String(rs.getString("a.wjlx")));
invoice.setCjsj(Util.null2String(rs.getString("a.cjsj")));
invoice.setCjr(Util.null2String(rs.getString("a.cjr")));
invoice.setZhxgsj(Util.null2String(rs.getString("a.zhxgsj")));
invoice.setZhxgr(Util.null2String(rs.getString("a.zhxgr")));
invoice.setYxlj(Util.null2String(rs.getString("a.yxlj")));
invoice.setSfzy(Util.null2String(rs.getString("a.sfzy")));
invoice.setZyrbh(Util.null2String(rs.getString("a.zyrbh")));
dataList.add(invoice);
datasList.add(dataList);
}
exportDatas.put(type, datasList);
}
if ("TravelReimbur".equals(type)) {//差旅报销
tableName = "uf_OA_clbxd";
String acqDataSql = "select a.*, b.*, c. * ,d.*, e.*, f.*, g.*, h.* from " + tableName + " a " +
" left join " + tableName + "_dt1 b" +
" on b.mainid = a.id " +
" left join " + tableName + "_dt2 c" +
" on c.mainid = a.id " +
" left join " + tableName + "_dt3 d" +
" on d.mainid = a.id " +
" left join " + tableName + "_dt4 e" +
" on e.mainid = a.id " +
" left join " + tableName + "_dt5 f" +
" on f.mainid = a.id " +
" left join " + tableName + "_dt6 g" +
" on g.mainid = a.id " +
" left join " + tableName + "_dt7 h" +
" on h.mainid = a.id " +
"where a.id in (" + dataIds + ")";
bb.writeLog("TravelReimbur acqDataSql: " + acqDataSql);
List<List<?>> datasList = new ArrayList<>();
rs.executeQuery(acqDataSql);
List dataList = new ArrayList<>();
List data1List = new ArrayList<>();
List data2List = new ArrayList<>();
List data3List = new ArrayList<>();
List data4List = new ArrayList<>();
List data5List = new ArrayList<>();
List data6List = new ArrayList<>();
List data7List = new ArrayList<>();
while (rs.next()) {
//主表
TravelReimbur travelReimbur = new TravelReimbur();
travelReimbur.setDjmc(Util.null2String(rs.getString("a.djmc")));
travelReimbur.setDjbh(Util.null2String(rs.getString("a.djbh")));
travelReimbur.setDwbh(Util.null2String(rs.getString("a.dwbh")));
travelReimbur.setBmbh(Util.null2String(rs.getString("a.bmbh")));
travelReimbur.setDjzt(Util.null2String(rs.getString("a.djzt")));
travelReimbur.setBxrybh(Util.null2String(rs.getString("a.bxrybh")));
travelReimbur.setRyzw(Util.null2String(rs.getString("a.ryzw")));
travelReimbur.setRyzwbh(Util.null2String(rs.getString("a.ryzwbh")));
travelReimbur.setRyzjid(Util.null2String(rs.getString("a.ryzjid")));
travelReimbur.setRyzj(Util.null2String(rs.getString("a.ryzj")));
travelReimbur.setCclx(Util.null2String(rs.getString("a.cclx")));
travelReimbur.setCcdd(Util.null2String(rs.getString("a.ccdd")));
travelReimbur.setCcksrq(Util.null2String(rs.getString("a.ccksrq")));
travelReimbur.setCcjsrq(Util.null2String(rs.getString("a.ccjsrq")));
travelReimbur.setCcts(Util.null2String(rs.getString("a.ccts")));
travelReimbur.setXmmc(Util.null2String(rs.getString("a.xmmc")));
travelReimbur.setHsxmlb(Util.null2String(rs.getString("a.hsxmlb")));
travelReimbur.setKdkse(Util.null2String(rs.getString("a.kdkse")));
travelReimbur.setFjzs(Util.null2String(rs.getString("a.fjzs")));
travelReimbur.setLxdh(Util.null2String(rs.getString("a.lxdh")));
travelReimbur.setBzje(Util.null2String(rs.getString("a.bzje")));
travelReimbur.setFyrq(Util.null2String(rs.getString("a.fyrq")));
travelReimbur.setSfczcbfy(Util.null2String(rs.getString("a.sfczcbfy")));
travelReimbur.setCcsy(Util.null2String(rs.getString("a.ccsy")));
travelReimbur.setSbje(Util.null2String(rs.getString("a.sbje")));
travelReimbur.setSfje(Util.null2String(rs.getString("a.sfje")));
travelReimbur.setJhje(Util.null2String(rs.getString("a.jhje")));
travelReimbur.setFyxmnm(Util.null2String(rs.getString("a.fyxmnm")));
travelReimbur.setZdrbh(Util.null2String(rs.getString("a.zdrbh")));
travelReimbur.setSfwt(Util.null2String(rs.getString("a.sfwt")));
travelReimbur.setStr(Util.null2String(rs.getString("a.str")));
dataList.add(travelReimbur);
//明细表1
TravelReimburDt1 travelReimburDt1 = new TravelReimburDt1();
travelReimburDt1.setBxdnm(Util.null2String(rs.getString("b.bxdnm")));
travelReimburDt1.setCfcs(Util.null2String(rs.getString("b.cfcs")));
travelReimburDt1.setCfrq(Util.null2String(rs.getString("b.cfrq")));
travelReimburDt1.setJtgj(Util.null2String(rs.getString("b.jtgj")));
travelReimburDt1.setZxdj(Util.null2String(rs.getString("b.zxdj")));
travelReimburDt1.setCchbc(Util.null2String(rs.getString("b.cchbc")));
travelReimburDt1.setJpzk(Util.null2String(rs.getString("b.jpzk")));
travelReimburDt1.setDdcs(Util.null2String(rs.getString("b.ddcs")));
travelReimburDt1.setDdrq(Util.null2String(rs.getString("b.ddrq")));
travelReimburDt1.setCcts(Util.null2String(rs.getString("b.ccts")));
travelReimburDt1.setCcf(Util.null2String(rs.getString("b.ccf")));
travelReimburDt1.setZsfbz(Util.null2String(rs.getString("b.zsfbz")));
travelReimburDt1.setZsts(Util.null2String(rs.getString("b.zsts")));
travelReimburDt1.setZsf(Util.null2String(rs.getString("b.zsf")));
travelReimburDt1.setZsfsfcb(Util.null2String(rs.getString("b.zsfsfcb")));
travelReimburDt1.setZscbsm(Util.null2String(rs.getString("b.zscbsm")));
travelReimburDt1.setBxjhsjcf(Util.null2String(rs.getString("b.bxjhsjcf")));
travelReimburDt1.setQtcbfy(Util.null2String(rs.getString("b.qtcbfy")));
travelReimburDt1.setCbfysm(Util.null2String(rs.getString("b.cbfysm")));
travelReimburDt1.setBzje(Util.null2String(rs.getString("b.bzje")));
travelReimburDt1.setBxje(Util.null2String(rs.getString("b.bxje")));
travelReimburDt1.setSfczcbfy2(Util.null2String(rs.getString("b.sfczcbfy2")));
data1List.add(travelReimburDt1);
//明细表2
TravelReimburDt2 travelReimburDt2 = new TravelReimburDt2();
travelReimburDt2.setBxdid(Util.null2String(rs.getString("c.bxdid")));
travelReimburDt2.setFtdwbh(Util.null2String(rs.getString("c.ftdwbh")));
travelReimburDt2.setFtbmbh(Util.null2String(rs.getString("c.ftbmbh")));
travelReimburDt2.setFyxm(Util.null2String(rs.getString("c.fyxm")));
travelReimburDt2.setFyxmbh(Util.null2String(rs.getString("c.fyxmbh")));
travelReimburDt2.setFtje(Util.null2String(rs.getString("c.ftje")));
travelReimburDt2.setFtsm(Util.null2String(rs.getString("c.ftsm")));
travelReimburDt2.setFph(Util.null2String(rs.getString("c.fph")));
data2List.add(travelReimburDt2);
//明细表3
TravelReimburDt3 travelReimburDt3 = new TravelReimburDt3();
travelReimburDt3.setBxnm(Util.null2String(rs.getString("d.bxnm")));
travelReimburDt3.setSqdjbh(Util.null2String(rs.getString("d.sqdjbh")));
travelReimburDt3.setCcksrq(Util.null2String(rs.getString("d.ccksrq")));
travelReimburDt3.setCcjsrq(Util.null2String(rs.getString("d.ccjsrq")));
data3List.add(travelReimburDt3);
//明细表4
TravelReimburDt4 travelReimburDt4 = new TravelReimburDt4();
travelReimburDt4.setHxdjnm(Util.null2String(rs.getString("e.hxdjnm")));
travelReimburDt4.setJkrq(Util.null2String(rs.getString("e.jkrq")));
travelReimburDt4.setDjbh(Util.null2String(rs.getString("e.djbh")));
travelReimburDt4.setJklx(Util.null2String(rs.getString("e.jklx")));
travelReimburDt4.setFyxm(Util.null2String(rs.getString("e.fyxm")));
travelReimburDt4.setJksm(Util.null2String(rs.getString("e.jksm")));
travelReimburDt4.setJkje(Util.null2String(rs.getString("e.jkje")));
travelReimburDt4.setZthk(Util.null2String(rs.getString("e.zthk")));
travelReimburDt4.setYhk(Util.null2String(rs.getString("e.yhk")));
travelReimburDt4.setHxje(Util.null2String(rs.getString("e.hxje")));
travelReimburDt4.setXjhk(Util.null2String(rs.getString("e.xjhk")));
travelReimburDt4.setQk(Util.null2String(rs.getString("e.qk")));
data4List.add(travelReimburDt4);
//明细表5
TravelReimburDt5 travelReimburDt5 = new TravelReimburDt5();
travelReimburDt5.setFkjlnm(Util.null2String(rs.getString("f.fkjlnm")));
travelReimburDt5.setBzdnm(Util.null2String(rs.getString("f.bzdnm")));
travelReimburDt5.setZjjhbh(Util.null2String(rs.getString("f.zjjhbh")));
travelReimburDt5.setZjjhjsxz(Util.null2String(rs.getString("f.zjjhjsxz")));
travelReimburDt5.setZffsbh(Util.null2String(rs.getString("f.zffsbh")));
travelReimburDt5.setDfxz(Util.null2String(rs.getString("f.dfxz")));
travelReimburDt5.setDwlb(Util.null2String(rs.getString("f.dwlb")));
travelReimburDt5.setBzrdw(Util.null2String(rs.getString("f.bzrdw")));
travelReimburDt5.setFkhbbh(Util.null2String(rs.getString("f.fkhbbh")));
travelReimburDt5.setSkzhm(Util.null2String(rs.getString("f.skzhm")));
travelReimburDt5.setFkje(Util.null2String(rs.getString("f.fkje")));
travelReimburDt5.setKhyx(Util.null2String(rs.getString("f.khyx")));
travelReimburDt5.setYxzh(Util.null2String(rs.getString("f.yxzh")));
travelReimburDt5.setSsf(Util.null2String(rs.getString("f.ssf")));
travelReimburDt5.setScs(Util.null2String(rs.getString("f.scs")));
travelReimburDt5.setFksm(Util.null2String(rs.getString("f.fksm")));
travelReimburDt5.setZt(Util.null2String(rs.getString("f.zt")));
travelReimburDt5.setSkyxlxh(Util.null2String(rs.getString("f.skyxlxh")));
travelReimburDt5.setGssfdf(Util.null2String(rs.getString("f.gssfdf")));
travelReimburDt5.setGsdf(Util.null2String(rs.getString("f.gsdf")));
data5List.add(travelReimburDt5);
//明细表6
TravelReimburDt6 travelReimburDt6 = new TravelReimburDt6();
travelReimburDt6.setBxdid(Util.null2String(rs.getString("g.bxdid")));
travelReimburDt6.setSpjd(Util.null2String(rs.getString("g.spjd")));
travelReimburDt6.setSprbh(Util.null2String(rs.getString("g.sprbh")));
travelReimburDt6.setSpnr(Util.null2String(rs.getString("g.spnr")));
travelReimburDt6.setSpsj(Util.null2String(rs.getString("g.spsj")));
data6List.add(travelReimburDt6);
//明细表6
TravelReimburDt7 travelReimburDt7 = new TravelReimburDt7();
travelReimburDt7.setWjid(Util.null2String(rs.getString("h.wjid")));
travelReimburDt7.setDjnm(Util.null2String(rs.getString("h.djnm")));
travelReimburDt7.setWjmc(Util.null2String(rs.getString("h.wjmc")));
travelReimburDt7.setWjlx(Util.null2String(rs.getString("h.wjlx")));
travelReimburDt7.setWjdx(Util.null2String(rs.getString("h.wjdx")));
travelReimburDt7.setWjcclj(Util.null2String(rs.getString("h.wjcclj")));
data7List.add(travelReimburDt7);
}
datasList.add(dataList);
datasList.add(data1List);
datasList.add(data2List);
datasList.add(data3List);
datasList.add(data4List);
datasList.add(data5List);
datasList.add(data6List);
datasList.add(data7List);
exportDatas.put(type, datasList);
}
bb.writeLog("exportDatas: " + JSONObject.toJSONString(exportDatas));
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String fileName="/opt/weaver/ecology/filesystem/ebusecexport/"+ "差旅借款单" + sdf.format(new Date()) + ".xlsx";
exportExcel(fileName, exportDatas);
result.put("code",200);
result.put("msg",fileName);
}catch (Exception e) {
bb.writeLog("WorkflowExcelDataCmd Exception: " + e);
result.put("code",500);
result.put("msg","导出异常,请联系管理员");
}
return result;
}
public void exportExcel(String fileName, Map<String, List<List<?>> > exportDatas) {
ExcelWriter excelWriter = EasyExcel.write(fileName).build();
WriteSheet writeSheet = new WriteSheet();
for (String key : exportDatas.keySet()) {
List<List<?>> tempList = exportDatas.get(key);
int i = 0;
for (List<?> tl: tempList) {
//这里 需要指定写用哪个class去写
writeSheet = EasyExcel.writerSheet(i, "第" + i + "个sheet页").head(tl.get(0).getClass()).build();
excelWriter.write(tl, writeSheet);
i++;
}
}
//千万别忘记finish 会帮忙关闭流
excelWriter.finish();
}
}

@ -0,0 +1,240 @@
package com.engine.demo.cmd;
import com.alibaba.excel.EasyExcel;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.demo.entity.FillData;
import com.engine.workflow.biz.RobotNode.RobotNodeBiz;
import com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz;
import com.engine.workflow.biz.requestList.RequestListBiz;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.crm.Maint.CustomerInfoComInfo;
import weaver.general.BaseBean;
import weaver.general.GCONST;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.resource.ResourceComInfo;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class WorklowBatchExportCmd extends AbstractCommonCommand<Map<String, Object>> {
BaseBean bb = new BaseBean();
public WorklowBatchExportCmd(Map<String, Object> params, User user) {
this.user = user;
this.params = params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String, Object> result = new HashMap<String, Object>();
String requestids = Util.null2String(params.get("requestids"));
bb.writeLog("requestids: " +requestids );
if ( !StringUtils.isNotBlank(requestids)) {
result.put("code","500");
result.put("msg","请先选择需要导出的流程");
return result;
}
String[] requestidArr = requestids.split(",");
/*导出的字段有 流程标题、所属路径、创建人、创建时间、当前节点、当前未操作人、当前状况、流程编号*/
//流程标题 workflow_requestbase.requestname
//所属路径 workflow_requestbase.workflowid
//创建人 workflow_requestbase.creater
//创建时间 workflow_requestbase.createdate
//当前节点 workflow_requestbase.currentnodeid
//当前未操作人 getUnoperators(requestid, user)
//当前状况 workflow_requestbase.status
//流程编号 workflow_requestbase.requestmark
List<FillData> fillDatas = new ArrayList<>();
RecordSet rs = new RecordSet();
for (String requestid : requestidArr) {
FillData fillData = new FillData();
String acqDataSql = "select requestname, workflowid, creater, createdate, currentnodeid, status, requestmark from workflow_requestbase" +
" where requestid in (" + requestid + ") ";
rs.executeQuery(acqDataSql);
while (rs.next()) {
String requestname = Util.null2String(rs.getString("requestname"));
String workflowid = Util.null2String(rs.getString("workflowid"));
String creater = Util.null2String(rs.getString("creater"));
String createdate = Util.null2String(rs.getString("createdate"));
String currentnodeid = Util.null2String(rs.getString("currentnodeid"));
String status = Util.null2String(rs.getString("status"));
String requestmark = Util.null2String(rs.getString("requestmark"));
// fillData.setRequestName(requestname);
// fillData.setWorkflowId(workflowid);
// fillData.setCreater(creater);
// fillData.setCreateDate(createdate);
// fillData.setCurrentNodeId(currentnodeid);
// fillData.setStatus(status);
// fillData.setRequestMark(requestmark);
}
String unoperators = getUnoperators(requestid, user);
// fillData.setCurrentNoOperators(unoperators);
fillDatas.add(fillData);
}
String fillUrl = "";
if (fillDatas != null && fillDatas.size() > 0) {
String templateFileName = Util.null2String(bb.getPropValue("workflow_export", "templateFileName"));
String outFile = Util.null2String(bb.getPropValue("workflow_export", "outFile"));
if (StringUtils.isNotBlank(templateFileName) && StringUtils.isNotBlank(outFile)) {
fillUrl = this.simpleFill(fillDatas, templateFileName, outFile);
} else {
bb.writeLog("流程批量导出:请先配置模版名或文件导出路径");
result.put("code","500");
result.put("msg","请先配置模版名或文件导出路径");
return result;
}
} else {
result.put("code","500");
result.put("msg","无需要导出流程");
return result;
}
result.put("code","200");
result.put("data",fillUrl);
return result;
}
private String getUnoperators(String requestid, User user) {
List<String> unOperators = new ArrayList<>();
String language = user.getLanguage() + "";
String userid = user.getUID() + "";
RecordSet rs = new RecordSet();
String returnStr = "";
RobotNodeServiceBiz robotNodeServiceBiz = new RobotNodeServiceBiz();
ResourceComInfo rc = null;
CustomerInfoComInfo cci = null;
try {
rc = new ResourceComInfo();
cci = new CustomerInfoComInfo();
} catch (Exception e) {
e.printStackTrace();
}
List<String> unoperatorTypes = Util.TokenizerString(new RequestListBiz().getUnOperatorSet(userid), ",");
if (Util.getIntValue(requestid) > -1) {//oa系统流程
String isremarkStr = " (1 = 2 or ";
//--------------------处理isremark条件----------------------
if (unoperatorTypes.contains("1")) {//节点操作者
isremarkStr += " (isremark = 0 or (isremark = 4 and viewtype = 0) or (isremark = 1 and takisremark = '2')) or ";
} else if (unoperatorTypes.contains("2")) {//转办操作者
isremarkStr += " (isremark = 0 and (takisremark is null or takisremark=0) and handleforwardid > 0) or ";
}
if (unoperatorTypes.contains("4") && unoperatorTypes.contains("5")) {
isremarkStr += " (isremark in(8,9,11)) or ";
} else if (unoperatorTypes.contains("4")) {//抄送操作者
isremarkStr += " (isremark in(8,9)) or ";
} else if (unoperatorTypes.contains("5")) {//传阅操作者
isremarkStr += " (isremark in(11)) or ";
}
if (unoperatorTypes.contains("3")) {//转发操作者
isremarkStr += " (isremark = 1 and (takisremark <>'2' or takisremark is null)) or ";
}
if (unoperatorTypes.contains("6")) {//其他操作者--协办、超时干预到指定对象
isremarkStr += " (isremark in(5,7)) or ";
}
isremarkStr += " 1=2)";
//--------------------处理isremark条件----------------------
//--------------------分页----------------------
rs.executeSql("select userid,usertype,agenttype,agentorbyagentid,isremark,showorder,id,groupid,nodeid from workflow_currentoperator where requestid = " + requestid + " and " + isremarkStr + " order by isremark,groupid,showorder asc ,id asc limit 20");
//--------------------分页----------------------
while (rs.next()) {
//去除重复
String key = rs.getString("userid") + ":" + rs.getString("usertype") + ":" + rs.getString("agenttype") + ":" + rs.getString("agentorbyagentid");
if (unOperators.contains(key)) {
continue;
} else {
unOperators.add(key);
}
if (rs.getInt("usertype") == 0) {
if (rs.getInt("agenttype") == 2) {
returnStr += Util.formatMultiLang(rc.getResourcename(rs.getString("agentorbyagentid")), language) + "->" + Util.formatMultiLang(rc.getResourcename(rs.getString("userid")), language) + " ";
//判断是否被代理者,如果是,则不显示该记录
} else if (rs.getInt("agenttype") == 1 && rs.getInt("isremark") == 4) {
continue;
} else {
returnStr += Util.formatMultiLang(rc.getResourcename(rs.getString("userid")), language) + " ";
}
} else if (RobotNodeBiz.operatortype.equals(rs.getString("usertype"))) {
returnStr += Util.formatMultiLang(robotNodeServiceBiz.getRobotNodeSet(Util.getIntValue(rs.getString("nodeid"))).getOperatorName(), language) + " ";
} else {
//TD11591(人力资源与客户同时存在时、加','处理)
returnStr += Util.formatMultiLang(cci.getCustomerInfoname(rs.getString("userid")), language) + " ";
}
}
}
returnStr = returnStr.replaceAll("\"", "").replaceAll("'", "");
if (returnStr.length() > 0) {
returnStr = (returnStr.substring(0, returnStr.length() - 1));
}
return returnStr;
}
/**
*
*
* @since 2.1.1
*/
public String simpleFill(List<FillData> fillDatas, String templateFileName, String outFile) {
try {
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
templateFileName = GCONST.getRootPath() + templateFileName;
// 方案1 根据对象填充
File file =new File(outFile);
//如果文件夹不存在则创建
if (!file .exists() && !file .isDirectory()) {
bb.writeLog("//不存在");
file .mkdir();
} else {
bb.writeLog("//目录存在");
}
String name = String.valueOf(System.currentTimeMillis());
String fileName = outFile + File.separator + name + ".xlsx";
EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(fillDatas);
String outUrl = outFile.split("ecology")[1]+ File.separator + name + ".xlsx";
bb.writeLog("outUrl: " + outUrl);
return outUrl;
}catch (Exception e) {
bb.writeLog("simpleFill Exception: " + e);
}
return null;
}
}

@ -0,0 +1,57 @@
package com.engine.demo.controller;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.demo.service.WorkflowExcelService;
import com.engine.demo.service.impl.WorkflowExcelServiceImpl;
import com.google.gson.Gson;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Map;
public class WorkflowExcelController {
public WorkflowExcelService getWorkflowExcelService(User user) {
return ServiceUtil.getService(WorkflowExcelServiceImpl.class,user);
}
@GET
@Path("/getEndWorkDate")
@Produces(MediaType.APPLICATION_JSON)
public String getEndWorkDate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> params = ParamUtil.request2Map(request);
Map<String, Object> resultDatas = getWorkflowExcelService(user).WorklowBatchExport(params, user);
return new Gson().toJson(resultDatas);
}
@GET
@Path("/getWorkflowExcelData")
@Produces(MediaType.APPLICATION_JSON)
public String getWorkflowExcelData(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> params = ParamUtil.request2Map(request);
Map<String, Object> resultDatas = getWorkflowExcelService(user).WorkflowExcelData(params, user);
return new Gson().toJson(resultDatas);
}
@GET
@Path("/exportFjZip")
@Produces(MediaType.APPLICATION_JSON)
public String exportFjZip(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> params = ParamUtil.request2Map(request);
Map<String, Object> resultDatas = getWorkflowExcelService(user).exportFjZip(params, user);
return new Gson().toJson(resultDatas);
}
}

@ -0,0 +1,20 @@
package com.engine.demo.entity;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class FillData {
private String requestName;
private String workflowId;
private String creater;
private String createDate;
private String currentNodeId;
private String currentNoOperators;
private String status;
private String requestMark;
}

@ -0,0 +1,94 @@
package com.engine.demo.entity.invoice;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Invoice {
// 发票主键
private String fpzj;
// 发票类型ID
private String fplxid;
// 发票类型编号
private String fplxbh;
// 发票种类编号
private String fpzlbh;
// 购买方名称
private String gmfmc;
// 购买方信息纳税人识别号
private String gmfxxnsrsbh;
// 购买方信息地址
private String gmfxxdz;
// 购买方信息电话
private String gmfxxdh;
// 购买方信息开户行
private String gmfxxkhx;
// 购买方信息开户行账号
private String gmfxxkhxzh;
// 销售方名称
private String xsfmc;
// 销售方信息纳税识别号
private String xsfxxnssbh;
// 销售方地址
private String xsfdz;
// 销售方电话
private String xsfdh;
// 销售方开户银行
private String xsfkhyx;
// 销售方开户行账号
private String xsfkhxzh;
// 校验码
private String xym;
// 发票号码
private String fphm;
// 发票代码
private String fpdm;
// 发票日期
private String fprq;
// 发票金额
private String fpje;
// 不含税额
private String bhse;
// 税额
private String se;
// 备注
private String bz;
// 发票标签
private String fpbq;
// 发票分类
private String fpfl;
// 发票分类名称
private String fpflmc;
// 发票内容
private String fpnr;
// 验真状态
private String yzzt;
// 报销状态
private String bxzt;
// 租户
private String zh;
// 单位编号
private String dwbh;
// 员工编号
private String ygbh;
// 文件类型
private String wjlx;
// 创建时间
private String cjsj;
// 创建人
private String cjr;
// 最后修改时间
private String zhxgsj;
// 最后修改人
private String zhxgr;
// 影像路径
private String yxlj;
// 是否转移
private String sfzy;
// 转移人编号
private String zyrbh;
}

@ -0,0 +1,70 @@
package com.engine.demo.entity.travelBorrow;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelBorrow {
// 单据名称
@ExcelProperty({"单据名称"})
private String djmc;
// 单据编号
@ExcelProperty({"单据编号"})
private String djbh;
// 借款单位编号
@ExcelProperty({"借款单位编号"})
private String jkdwbh;
// 部门编号
@ExcelProperty({"部门编号"})
private String bmbh;
// 单据状态
@ExcelProperty({"单据状态"})
private String djzt;
// 借款人编号
@ExcelProperty({"借款人编号"})
private String jkrbh;
// 单据日期
@ExcelProperty({"单据日期"})
private String djrq;
// 费用项目编号
@ExcelProperty({"费用项目编号"})
private String fyxmbh;
// 附件张数
@ExcelProperty({"附件张数"})
private String fjzs;
// 科研项目名称
@ExcelProperty({"科研项目名称"})
private String kyxmmc;
// 人员职务
@ExcelProperty({"人员职务"})
private String ryzw;
// 人员职务编号
@ExcelProperty({"人员职务编号"})
private String ryzwbh;
// 摘要信息
@ExcelProperty({"摘要信息"})
private String zyxx;
// 申请金额
@ExcelProperty({"申请金额"})
private String sqje;
// 报销已冲销申请金额
@ExcelProperty({"报销已冲销申请金额"})
private String bxycxsqje;
// 借款金额
@ExcelProperty({"借款金额"})
private String jkje;
// 制单人编号
@ExcelProperty({"制单人编号"})
private String zdrbh;
// 是否委托
@ExcelProperty({"是否委托"})
private String sfwt;
// 受托人
@ExcelProperty({"受托人"})
private String str;
}

@ -0,0 +1,31 @@
package com.engine.demo.entity.travelBorrow;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelBorrowDt1 {
// 内码
@ExcelProperty({"内码"})
private String nm;
// 借款单内码
@ExcelProperty({"借款单内码"})
private String jkdnm;
// 申请单号
@ExcelProperty({"申请单号"})
private String sqdh;
// 申请说明
@ExcelProperty({"申请说明"})
private String sqsm;
// 出差开始日期
@ExcelProperty({"出差开始日期"})
private String ccksrq;
// 出差结束日期
@ExcelProperty({"出差结束日期"})
private String ccjsrq;
}

@ -0,0 +1,52 @@
package com.engine.demo.entity.travelBorrow;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelBorrowDt2 {
// 付款记录内码
@ExcelProperty({"付款记录内码"})
private String fkjlnm;
// 报账单内码
@ExcelProperty({"报账单内码"})
private String bzdnm;
// 资金计划编号
@ExcelProperty({"资金计划编号"})
private String zjjhbh;
// 支付方式编号
@ExcelProperty({"支付方式编号"})
private String zffsbh;
// 对方性质
@ExcelProperty({"对方性质"})
private String dfxz;
// 报账人/单位
@ExcelProperty({"报账人/单位"})
private String bzrdw;
// 收款账户名
@ExcelProperty({"收款账户名"})
private String skzhm;
// 付款金额
@ExcelProperty({"付款金额"})
private String fkje;
// 银行账号
@ExcelProperty({"银行账号"})
private String yxzh;
// 开户银行
@ExcelProperty({"开户银行"})
private String khyx;
// 支付说明
@ExcelProperty({"支付说明"})
private String zfsm;
// 状态
@ExcelProperty({"状态"})
private String zt;
// 付款货币编号
@ExcelProperty({"付款货币编号"})
private String fkhbbh;
}

@ -0,0 +1,28 @@
package com.engine.demo.entity.travelBorrow;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelBorrowDt3 {
// 借款单内码
@ExcelProperty({"借款单内码"})
private String jkdnm;
// 审批节点
@ExcelProperty({"审批节点"})
private String spjd;
// 审批人
@ExcelProperty({"审批人"})
private String spr;
// 审批内容
@ExcelProperty({"审批内容"})
private String spnr;
// 审批时间
@ExcelProperty({"审批时间"})
private String spsj;
}

@ -0,0 +1,106 @@
package com.engine.demo.entity.travelReimbur;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelReimbur {
// 单据名称
@ExcelProperty({"单据名称"})
private String djmc;
// 单据编号
@ExcelProperty({"单据编号"})
private String djbh;
// 单位编号
@ExcelProperty({"单位编号"})
private String dwbh;
// 部门编号
@ExcelProperty({"部门编号"})
private String bmbh;
// 单据状态
@ExcelProperty({"单据状态"})
private String djzt;
// 报销人员编号
@ExcelProperty({"报销人员编号"})
private String bxrybh;
// 人员职务
@ExcelProperty({"人员职务"})
private String ryzw;
// 人员职务编号
@ExcelProperty({"人员职务编号"})
private String ryzwbh;
// 人员职级id
@ExcelProperty({"人员职级id"})
private String ryzjid;
// 人员职级
@ExcelProperty({"人员职级"})
private String ryzj;
// 出差类型
@ExcelProperty({"出差类型"})
private String cclx;
// 出差地点
@ExcelProperty({"出差地点"})
private String ccdd;
// 出差开始日期
@ExcelProperty({"出差开始日期"})
private String ccksrq;
// 出差结束日期
@ExcelProperty({"出差结束日期"})
private String ccjsrq;
// 出差天数
@ExcelProperty({"出差天数"})
private String ccts;
// 项目名称
@ExcelProperty({"项目名称"})
private String xmmc;
// 核算项目类别
@ExcelProperty({"核算项目类别"})
private String hsxmlb;
// 可抵扣税额
@ExcelProperty({"可抵扣税额"})
private String kdkse;
// 附件张数
@ExcelProperty({"附件张数"})
private String fjzs;
// 联系电话
@ExcelProperty({"联系电话"})
private String lxdh;
// 报账金额
@ExcelProperty({"报账金额"})
private String bzje;
// 费用日期
@ExcelProperty({"费用日期"})
private String fyrq;
// 是否存在超标费用
@ExcelProperty({"是否存在超标费用"})
private String sfczcbfy;
// 出差事由
@ExcelProperty({"出差事由"})
private String ccsy;
// 实报金额
@ExcelProperty({"实报金额"})
private String sbje;
// 实付金额
@ExcelProperty({"实付金额"})
private String sfje;
// 稽核金额
@ExcelProperty({"稽核金额"})
private String jhje;
// 费用项目内码
@ExcelProperty({"费用项目内码"})
private String fyxmnm;
// 制单人编号
@ExcelProperty({"制单人编号"})
private String zdrbh;
// 是否委托
@ExcelProperty({"是否委托"})
private String sfwt;
// 受托人
@ExcelProperty({"受托人"})
private String str;
}

@ -0,0 +1,79 @@
package com.engine.demo.entity.travelReimbur;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelReimburDt1 {
// 报销单内码
@ExcelProperty({"报销单内码"})
private String bxdnm;
// 出发城市
@ExcelProperty({"出发城市"})
private String cfcs;
// 出发日期
@ExcelProperty({"出发日期"})
private String cfrq;
// 交通工具
@ExcelProperty({"交通工具"})
private String jtgj;
// 坐席等级
@ExcelProperty({"坐席等级"})
private String zxdj;
// 车船_航班/次
@ExcelProperty({"车船_航班/次"})
private String cchbc;
// 机票折扣
@ExcelProperty({"机票折扣"})
private String jpzk;
// 到达城市
@ExcelProperty({"到达城市"})
private String ddcs;
// 到达日期
@ExcelProperty({"到达日期"})
private String ddrq;
// 出差天数
@ExcelProperty({"出差天数"})
private String ccts;
// 车船费
@ExcelProperty({"车船费"})
private String ccf;
// 住宿费标准
@ExcelProperty({"住宿费标准"})
private String zsfbz;
// 住宿天数
@ExcelProperty({"住宿天数"})
private String zsts;
// 住宿费
@ExcelProperty({"住宿费"})
private String zsf;
// 住宿费是否超标
@ExcelProperty({"住宿费是否超标"})
private String zsfsfcb;
// 住宿超标说明
@ExcelProperty({"住宿超标说明"})
private String zscbsm;
// 保险及核酸检测费
@ExcelProperty({"保险及核酸检测费"})
private String bxjhsjcf;
// 其他超标费用
@ExcelProperty({"其他超标费用"})
private String qtcbfy;
// 超标费用说明
@ExcelProperty({"超标费用说明"})
private String cbfysm;
// 补助金额
@ExcelProperty({"补助金额"})
private String bzje;
// 报销金额
@ExcelProperty({"报销金额"})
private String bxje;
// 是否存在超标费用2
@ExcelProperty({"是否存在超标费用2"})
private String sfczcbfy2;
}

@ -0,0 +1,37 @@
package com.engine.demo.entity.travelReimbur;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelReimburDt2 {
// 报销单id
@ExcelProperty({"报销单id"})
private String bxdid;
// 分摊单位编号
@ExcelProperty({"分摊单位编号"})
private String ftdwbh;
// 分摊部门编号
@ExcelProperty({"分摊部门编号"})
private String ftbmbh;
// 费用项目
@ExcelProperty({"费用项目"})
private String fyxm;
// 费用项目编号
@ExcelProperty({"费用项目编号"})
private String fyxmbh;
// 分摊金额
@ExcelProperty({"分摊金额"})
private String ftje;
// 分摊说明
@ExcelProperty({"分摊说明"})
private String ftsm;
// 发票号
@ExcelProperty({"发票号"})
private String fph;
}

@ -0,0 +1,26 @@
package com.engine.demo.entity.travelReimbur;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelReimburDt3 {
// 报销内码
@ExcelProperty({"报销内码"})
private String bxnm;
// 申请单据编号
@ExcelProperty({"申请单据编号"})
private String sqdjbh;
// 出差开始日期
@ExcelProperty({"出差开始日期"})
private String ccksrq;
// 出差结束日期
@ExcelProperty({"出差结束日期"})
private String ccjsrq;
}

@ -0,0 +1,49 @@
package com.engine.demo.entity.travelReimbur;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelReimburDt4 {
// 核销单据内码
@ExcelProperty({"核销单据内码"})
private String hxdjnm;
// 借款日期
@ExcelProperty({"借款日期"})
private String jkrq;
// 单据编号
@ExcelProperty({"单据编号"})
private String djbh;
// 借款类型
@ExcelProperty({"借款类型"})
private String jklx;
// 费用项目
@ExcelProperty({"费用项目"})
private String fyxm;
// 借款说明
@ExcelProperty({"借款说明"})
private String jksm;
// 借款金额
@ExcelProperty({"借款金额"})
private String jkje;
// 在途还款
@ExcelProperty({"在途还款"})
private String zthk;
// 已还款
@ExcelProperty({"已还款"})
private String yhk;
// 核销金额
@ExcelProperty({"核销金额"})
private String hxje;
// 现金还款
@ExcelProperty({"现金还款"})
private String xjhk;
// 欠款
@ExcelProperty({"欠款"})
private String qk;
}

@ -0,0 +1,73 @@
package com.engine.demo.entity.travelReimbur;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelReimburDt5 {
// 付款记录内码
@ExcelProperty({"付款记录内码"})
private String fkjlnm;
// 报账单内码
@ExcelProperty({"报账单内码"})
private String bzdnm;
// 资金计划编号
@ExcelProperty({"资金计划编号"})
private String zjjhbh;
// 资金计划结算性质
@ExcelProperty({"资金计划结算性质"})
private String zjjhjsxz;
// 支付方式编号
@ExcelProperty({"支付方式编号"})
private String zffsbh;
// 对方性质
@ExcelProperty({"对方性质"})
private String dfxz;
// 单位类别
@ExcelProperty({"单位类别"})
private String dwlb;
// 报账人/单位
@ExcelProperty({"报账人/单位"})
private String bzrdw;
// 付款货币编号
@ExcelProperty({"付款货币编号"})
private String fkhbbh;
// 收款帐户名
@ExcelProperty({"收款帐户名"})
private String skzhm;
// 付款金额
@ExcelProperty({"付款金额"})
private String fkje;
// 开户银行
@ExcelProperty({"开户银行"})
private String khyx;
// 银行账号
@ExcelProperty({"银行账号"})
private String yxzh;
// 所属省份
@ExcelProperty({"所属省份"})
private String ssf;
// 所属城市
@ExcelProperty({"所属城市"})
private String scs;
// 付款说明
@ExcelProperty({"付款说明"})
private String fksm;
// 状态
@ExcelProperty({"状态"})
private String zt;
// 收款银行联行号
@ExcelProperty({"收款银行联行号"})
private String skyxlxh;
// 公司是否垫付
@ExcelProperty({"公司是否垫付"})
private String gssfdf;
// 公司垫付
@ExcelProperty({"公司垫付"})
private String gsdf;
}

@ -0,0 +1,29 @@
package com.engine.demo.entity.travelReimbur;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelReimburDt6 {
// 报销单id
@ExcelProperty({"报销单id"})
private String bxdid;
// 审批节点
@ExcelProperty({"审批节点"})
private String spjd;
// 审批人编号
@ExcelProperty({"审批人编号"})
private String sprbh;
// 审批内容
@ExcelProperty({"审批内容"})
private String spnr;
// 审批时间
@ExcelProperty({"审批时间"})
private String spsj;
}

@ -0,0 +1,32 @@
package com.engine.demo.entity.travelReimbur;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
@Getter
@Setter
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TravelReimburDt7 {
// 文件ID
@ExcelProperty({"文件ID"})
private String wjid;
// 单据内码
@ExcelProperty({"单据内码"})
private String djnm;
// 文件名称
@ExcelProperty({"文件名称"})
private String wjmc;
// 文件类型
@ExcelProperty({"文件类型"})
private String wjlx;
// 文件大小
@ExcelProperty({"文件大小"})
private String wjdx;
// 文件存储路径
@ExcelProperty({"文件存储路径"})
private String wjcclj;
}

@ -0,0 +1,32 @@
package com.engine.demo.service;
import weaver.hrm.User;
import javax.ws.rs.core.Response;
import java.util.Map;
public interface WorkflowExcelService {
/**
*
* @param params
* @param user
* @return
*/
public Map<String, Object> WorklowBatchExport(Map<String, Object> params, User user);
/**
*
* @param params
* @param user
* @return
*/
public Map<String, Object> WorkflowExcelData(Map<String, Object> params, User user);
/**
*
* @param params
* @param user
* @return
*/
public Map<String, Object> exportFjZip(Map<String, Object> params, User user);
}

@ -0,0 +1,41 @@
package com.engine.demo.service.impl;
import com.engine.core.impl.Service;
import com.engine.demo.cmd.ExportFjZipCmd;
import com.engine.demo.cmd.WorkflowExcelDataCmd;
import com.engine.demo.cmd.WorklowBatchExportCmd;
import com.engine.demo.service.WorkflowExcelService;
import com.engine.demo.util.ExportFjUtil;
import net.sf.json.JSONArray;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import javax.ws.rs.core.Response;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
public class WorkflowExcelServiceImpl extends Service implements WorkflowExcelService {
BaseBean bb = new BaseBean();
@Override
public Map<String, Object> WorklowBatchExport(Map<String, Object> params, User user) {
return commandExecutor.execute(new WorklowBatchExportCmd(params, user));
}
@Override
public Map<String, Object> WorkflowExcelData(Map<String, Object> params, User user) {
return commandExecutor.execute(new WorkflowExcelDataCmd(params, user));
}
@Override
public Map<String, Object> exportFjZip(Map<String, Object> params, User user) {
return commandExecutor.execute(new ExportFjZipCmd(params, user));
}
}

@ -0,0 +1,695 @@
/*
* USER : DYJ
* DATE : 2023/12/9
* TIME : 23:10
* DEMAND
* Design Ideas
*/
package com.engine.demo.util;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSONObject;
import com.engine.common.util.ServiceUtil;
import com.engine.demo.entity.invoice.Invoice;
import com.engine.demo.entity.travelBorrow.TravelBorrow;
import com.engine.demo.entity.travelBorrow.TravelBorrowDt1;
import com.engine.demo.entity.travelBorrow.TravelBorrowDt2;
import com.engine.demo.entity.travelBorrow.TravelBorrowDt3;
import com.engine.demo.entity.travelReimbur.*;
import com.engine.workflow.service.HtmlToPdfService;
import com.engine.workflow.service.impl.HtmlToPdfServiceImpl;
import weaver.conn.RecordSet;
import weaver.file.ImageFileManager;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.workflow.workflow.WorkflowConfigComInfo;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ExportFjUtil {
BaseBean bb = new BaseBean();
public String zipDoc(String docIds, String BASE_DIR, String zipFileName, String tableName, String tableField, String whereField) {
String[] zipFileNames = zipFileName.split("_");
String outPath = BASE_DIR + File.separator + "附件" + File.separator + zipFileNames[0] ;
bb.writeLog("zipDoc outPath: " + outPath);
RecordSet rs = new RecordSet();
File file_ = new File(outPath);
if (!file_.exists()) {
boolean mkdirs = file_.mkdirs();
bb.writeLog("zipDoc mkdirs: " + mkdirs);
}
try {
List<List> filePaths = new ArrayList();
bb.writeLog("zipDoc outPath: " + outPath + ".zip");
FileOutputStream fileOutputStream = new FileOutputStream(outPath + ".zip");
ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
BufferedInputStream br = null;
//文件的名称
//循环下载文件并将之放到ZipOutputStream中
rs.execute("select imagefilename,imagefileid,docid from docimagefile where docid in (" + docIds + ")");
bb.writeLog("zipDoc sql: select imagefilename,imagefileid from docimagefile where docid in (" + docIds + ")");
while (rs.next()) {
List filePath = new ArrayList();
filePath.add("附件/" + zipFileNames[0] + "/" +rs.getString(3));
filePath.add(rs.getString(1));
filePaths.add(filePath);
zipOutputStream.putNextEntry(new ZipEntry(rs.getString(1)));
br = new BufferedInputStream(ImageFileManager.getInputStreamById(rs.getInt(2)));
byte[] buffer = new byte[1024];
int r = 0;
while ((r = br.read(buffer)) != -1) {
zipOutputStream.write(buffer, 0, r);
}
}
zipOutputStream.flush();
zipOutputStream.close();
br.close();
//回写附件导出路径 差旅报销导出20240320144153\附件\CS001.zip
String syncSql = "update " + tableName + " set " + tableField + " = ? where " + whereField + " = ? ";
rs.executeBatchSql(syncSql, filePaths);
} catch (IOException e) {
bb.writeLog("DownloadDocs.zipDoc[" + Thread.currentThread().getStackTrace()[1].getLineNumber() + "] => e.getMessage() = " + e.getMessage());
e.printStackTrace();
}
return outPath;
}
public void zipFolder(String folderPath, String zipFilePath) throws IOException {
File folder = new File(folderPath);
FileOutputStream fos = new FileOutputStream(zipFilePath + ".zip");
ZipOutputStream zos = new ZipOutputStream(fos);
addFolderToZip(folder, folder.getName(), zos);
zos.close();
fos.close();
}
private void addFolderToZip(File folder, String base, ZipOutputStream zos) throws IOException {
File[] files = folder.listFiles();
byte[] buffer = new byte[1024];
for (File file : files) {
if (file.isDirectory()) {
addFolderToZip(file, base + "/" + file.getName(), zos);
} else {
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(base + "/" + file.getName());
zos.putNextEntry(zipEntry);
int len;
while ((len = fis.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
zos.closeEntry();
fis.close();
}
}
}
public boolean exportExcel(String type , String dataIds, String outPath , String fileName){
boolean result = false;
Map<String, List<List<?>> > exportDatas = new HashMap<>();
//封装数据
try {
RecordSet rs = new RecordSet();
String tableName = "";
if ("TravelBorrow".equals(type)) {//差旅借款
tableName = "uf_LC_cljkd";
// String acqDataSql = "select a.*, b.*, c. * ,d.* " +
String acqDataSql = "select " +
" a.id as a_id, \n" +
"a.requestid as a_requestid, \n" +
"a.djmc as a_djmc, \n" +
"a.djbh as a_djbh, \n" +
"a.jkdwbh as a_jkdwbh, \n" +
"a.bmbh as a_bmbh, \n" +
"a.djzt as a_djzt, \n" +
"a.jkrbh as a_jkrbh, \n" +
"a.djrq as a_djrq, \n" +
"a.fyxmbh as a_fyxmbh, \n" +
"a.fjzs as a_fjzs, \n" +
"a.kyxmmc as a_kyxmmc, \n" +
"a.ryzw as a_ryzw, \n" +
"a.ryzwbh as a_ryzwbh, \n" +
"a.zyxx as a_zyxx, \n" +
"a.sqje as a_sqje, \n" +
"a.bxycxsqje as a_bxycxsqje, \n" +
"a.jkje as a_jkje, \n" +
"a.zdrbh as a_zdrbh, \n" +
"a.sfwt as a_sfwt, \n" +
"a.str as a_str, \n" +
"a.formmodeid as a_formmodeid, \n" +
"a.modedatacreater as a_modedatacreater, \n" +
"a.modedatacreatertype as a_modedatacreatertype, \n" +
"a.modedatacreatedate as a_modedatacreatedate, \n" +
"a.modedatacreatetime as a_modedatacreatetime, \n" +
"a.modedatamodifier as a_modedatamodifier, \n" +
"a.modedatamodifydatetime as a_modedatamodifydatetime, \n" +
"a.form_biz_id as a_form_biz_id, \n" +
"a.modeuuid as a_modeuuid, \n" +
"a.yslcid as a_yslcid, \n" +
"a.dczt as a_dczt, \n" +
" \n" +
"b.id as b_id, \n" +
"b.mainid as b_mainid, \n" +
"b.nm as b_nm, \n" +
"b.jkdnm as b_jkdnm, \n" +
"b.sqdh as b_sqdh, \n" +
"b.sqsm as b_sqsm, \n" +
"b.ccksrq as b_ccksrq, \n" +
"b.ccjsrq as b_ccjsrq, \n" +
"b.yslcmxid as b_yslcmxid, \n" +
" \n" +
"c.id as c_id, \n" +
"c.mainid as c_mainid, \n" +
"c.fkjlnm as c_fkjlnm, \n" +
"c.bzdnm as c_bzdnm, \n" +
"c.zjjhbh as c_zjjhbh, \n" +
"c.zffsbh as c_zffsbh, \n" +
"c.dfxz as c_dfxz, \n" +
"c.bzrdw as c_bzrdw, \n" +
"c.skzhm as c_skzhm, \n" +
"c.fkje as c_fkje, \n" +
"c.yxzh as c_yxzh, \n" +
"c.khyx as c_khyx, \n" +
"c.zfsm as c_zfsm, \n" +
"c.zt as c_zt, \n" +
"c.fkhbbh as c_fkhbbh, \n" +
"c.yslcmxid as c_yslcmxid, \n" +
" \n" +
"d.id as d_id, \n" +
"d.mainid as d_mainid, \n" +
"d.jkdnm as d_jkdnm, \n" +
"d.spjd as d_spjd, \n" +
"d.spr as d_spr, \n" +
"d.spnr as d_spnr, \n" +
"d.spsj as d_spsj, \n" +
"d.yslcmxid as d_yslcmxid" +
" from " + tableName + " a " +
" left join " + tableName + "_dt1 b" +
" on b.mainid = a.id " +
" left join " + tableName + "_dt2 c" +
" on c.mainid = a.id " +
" left join " + tableName + "_dt3 d" +
" on d.mainid = a.id " +
"where a.id in (" + dataIds + ")";
bb.writeLog("TravelBorrow acqDataSql: " + acqDataSql);
List<List<?>> datasList = new ArrayList<>();
rs.executeQuery(acqDataSql);
List dataList = new ArrayList<>();
List data1List = new ArrayList<>();
List data2List = new ArrayList<>();
List data3List = new ArrayList<>();
while (rs.next()) {
//主表
TravelBorrow travelBorrow = new TravelBorrow();
travelBorrow.setDjmc(Util.null2String(rs.getString("a_djmc")));
travelBorrow.setDjbh(Util.null2String(rs.getString("a_djbh")));
travelBorrow.setJkdwbh(Util.null2String(rs.getString("a_jkdwbh")));
travelBorrow.setBmbh(Util.null2String(rs.getString("a_bmbh")));
travelBorrow.setDjzt(Util.null2String(rs.getString("a_djzt")));
travelBorrow.setJkrbh(Util.null2String(rs.getString("a_jkrbh")));
travelBorrow.setDjrq(Util.null2String(rs.getString("a_djrq")));
travelBorrow.setFyxmbh(Util.null2String(rs.getString("a_fyxmbh")));
travelBorrow.setFjzs(Util.null2String(rs.getString("a_fjzs")));
travelBorrow.setKyxmmc(Util.null2String(rs.getString("a_kyxmmc")));
travelBorrow.setRyzw(Util.null2String(rs.getString("a_ryzw")));
travelBorrow.setRyzwbh(Util.null2String(rs.getString("a_ryzwbh")));
travelBorrow.setZyxx(Util.null2String(rs.getString("a_zyxx")));
travelBorrow.setSqje(Util.null2String(rs.getString("a_sqje")));
travelBorrow.setBxycxsqje(Util.null2String(rs.getString("a_bxycxsqje")));
travelBorrow.setJkje(Util.null2String(rs.getString("a_jkje")));
travelBorrow.setZdrbh(Util.null2String(rs.getString("a_zdrbh")));
travelBorrow.setSfwt(Util.null2String(rs.getString("a_sfwt")));
dataList.add(travelBorrow);
//明细表1
TravelBorrowDt1 travelBorrowDt1 = new TravelBorrowDt1();
travelBorrowDt1.setNm(Util.null2String(rs.getString("b_nm")));
travelBorrowDt1.setJkdnm(Util.null2String(rs.getString("b_jkdnm")));
travelBorrowDt1.setSqdh(Util.null2String(rs.getString("b_sqdh")));
travelBorrowDt1.setSqsm(Util.null2String(rs.getString("b_sqsm")));
travelBorrowDt1.setCcksrq(Util.null2String(rs.getString("b_ccksrq")));
travelBorrowDt1.setCcjsrq(Util.null2String(rs.getString("b_ccjsrq")));
data1List.add(travelBorrowDt1);
//明细表2
TravelBorrowDt2 travelBorrowDt2 = new TravelBorrowDt2();
travelBorrowDt2.setFkjlnm(Util.null2String(rs.getString("c_fkjlnm")));
travelBorrowDt2.setBzdnm(Util.null2String(rs.getString("c_bzdnm")));
travelBorrowDt2.setZjjhbh(Util.null2String(rs.getString("c_zjjhbh")));
travelBorrowDt2.setZffsbh(Util.null2String(rs.getString("c_zffsbh")));
travelBorrowDt2.setDfxz(Util.null2String(rs.getString("c_dfxz")));
travelBorrowDt2.setBzrdw(Util.null2String(rs.getString("c_bzrdw")));
travelBorrowDt2.setSkzhm(Util.null2String(rs.getString("c_skzhm")));
travelBorrowDt2.setFkje(Util.null2String(rs.getString("c_fkje")));
travelBorrowDt2.setYxzh(Util.null2String(rs.getString("c_yxzh")));
travelBorrowDt2.setKhyx(Util.null2String(rs.getString("c_khyx")));
travelBorrowDt2.setZfsm(Util.null2String(rs.getString("c_zfsm")));
travelBorrowDt2.setZt(Util.null2String(rs.getString("c_zt")));
travelBorrowDt2.setFkhbbh(Util.null2String(rs.getString("c_fkhbbh")));
data2List.add(travelBorrowDt2);
//明细表3
TravelBorrowDt3 travelBorrowDt3 = new TravelBorrowDt3();
travelBorrowDt3.setJkdnm(Util.null2String(rs.getString("d_jkdnm")));
travelBorrowDt3.setSpjd(Util.null2String(rs.getString("d_spjd")));
travelBorrowDt3.setSpr(Util.null2String(rs.getString("d_spr")));
travelBorrowDt3.setSpnr(Util.null2String(rs.getString("d_spnr")));
travelBorrowDt3.setSpsj(Util.null2String(rs.getString("d_spsj")));
data3List.add(travelBorrowDt3);
}
datasList.add(dataList);
datasList.add(data1List);
datasList.add(data2List);
datasList.add(data3List);
exportDatas.put(type, datasList);
}
if ("Invoice".equals(type)) {//发票
tableName = "uf_LC_fpxx";
String acqDataSql = "select a.* from " + tableName + " a where a.id in (" + dataIds + ")";
bb.writeLog("Invoice acqDataSql: " + acqDataSql);
List<List<?>> datasList = new ArrayList<>();
rs.executeQuery(acqDataSql);
List dataList = new ArrayList<>();
while (rs.next()) {
//主表
Invoice invoice = new Invoice();
invoice.setFpzj(Util.null2String(rs.getString("fpzj")));
invoice.setFplxid(Util.null2String(rs.getString("fplxid")));
invoice.setFplxbh(Util.null2String(rs.getString("fplxbh")));
invoice.setFpzlbh(Util.null2String(rs.getString("fpzlbh")));
invoice.setGmfmc(Util.null2String(rs.getString("gmfmc")));
invoice.setGmfxxnsrsbh(Util.null2String(rs.getString("gmfxxnsrsbh")));
invoice.setGmfxxdz(Util.null2String(rs.getString("gmfxxdz")));
invoice.setGmfxxdh(Util.null2String(rs.getString("gmfxxdh")));
invoice.setGmfxxkhx(Util.null2String(rs.getString("gmfxxkhx")));
invoice.setGmfxxkhxzh(Util.null2String(rs.getString("gmfxxkhxzh")));
invoice.setXsfmc(Util.null2String(rs.getString("xsfmc")));
invoice.setXsfxxnssbh(Util.null2String(rs.getString("xsfxxnssbh")));
invoice.setXsfdz(Util.null2String(rs.getString("xsfdz")));
invoice.setXsfdh(Util.null2String(rs.getString("xsfdh")));
invoice.setXsfkhyx(Util.null2String(rs.getString("xsfkhyx")));
invoice.setXsfkhxzh(Util.null2String(rs.getString("xsfkhxzh")));
invoice.setXym(Util.null2String(rs.getString("xym")));
invoice.setFphm(Util.null2String(rs.getString("fphm")));
invoice.setFpdm(Util.null2String(rs.getString("fpdm")));
invoice.setFprq(Util.null2String(rs.getString("fprq")));
invoice.setFpje(Util.null2String(rs.getString("fpje")));
invoice.setBhse(Util.null2String(rs.getString("bhse")));
invoice.setSe(Util.null2String(rs.getString("se")));
invoice.setBz(Util.null2String(rs.getString("bz")));
invoice.setFpbq(Util.null2String(rs.getString("fpbq")));
invoice.setFpfl(Util.null2String(rs.getString("fpfl")));
invoice.setFpflmc(Util.null2String(rs.getString("fpflmc")));
invoice.setFpnr(Util.null2String(rs.getString("fpnr")));
invoice.setYzzt(Util.null2String(rs.getString("yzzt")));
invoice.setBxzt(Util.null2String(rs.getString("bxzt")));
invoice.setZh(Util.null2String(rs.getString("zh")));
invoice.setDwbh(Util.null2String(rs.getString("dwbh")));
invoice.setYgbh(Util.null2String(rs.getString("ygbh")));
invoice.setWjlx(Util.null2String(rs.getString("wjlx")));
invoice.setCjsj(Util.null2String(rs.getString("cjsj")));
invoice.setCjr(Util.null2String(rs.getString("cjr")));
invoice.setZhxgsj(Util.null2String(rs.getString("zhxgsj")));
invoice.setZhxgr(Util.null2String(rs.getString("zhxgr")));
invoice.setYxlj(Util.null2String(rs.getString("yxlj")));
invoice.setSfzy(Util.null2String(rs.getString("sfzy")));
invoice.setZyrbh(Util.null2String(rs.getString("zyrbh")));
dataList.add(invoice);
datasList.add(dataList);
}
exportDatas.put(type, datasList);
}
if ("TravelReimbur".equals(type)) {//差旅报销
tableName = "uf_OA_clbxd";
// String acqDataSql = "select a.*, b.*, c. * ,d.*, e.*, f.*, g.*, h.* from " + tableName + " a " +
String acqDataSql = "select " +
" a.id AS a_id, \n" +
"a.requestid AS a_requestid, \n" +
"a.djmc AS a_djmc, \n" +
"a.djbh AS a_djbh, \n" +
"a.dwbh AS a_dwbh, \n" +
"a.bmbh AS a_bmbh, \n" +
"a.djzt AS a_djzt, \n" +
"a.bxrybh AS a_bxrybh, \n" +
"a.ryzw AS a_ryzw, \n" +
"a.ryzwbh AS a_ryzwbh, \n" +
"a.ryzjid AS a_ryzjid, \n" +
"a.ryzj AS a_ryzj, \n" +
"a.cclx AS a_cclx, \n" +
"a.ccdd AS a_ccdd, \n" +
"a.ccksrq AS a_ccksrq, \n" +
"a.ccjsrq AS a_ccjsrq, \n" +
"a.ccts AS a_ccts, \n" +
"a.xmmc AS a_xmmc, \n" +
"a.hsxmlb AS a_hsxmlb, \n" +
"a.kdkse AS a_kdkse, \n" +
"a.fjzs AS a_fjzs, \n" +
"a.lxdh AS a_lxdh, \n" +
"a.bzje AS a_bzje, \n" +
"a.fyrq AS a_fyrq, \n" +
"a.sfczcbfy AS a_sfczcbfy, \n" +
"a.ccsy AS a_ccsy, \n" +
"a.sbje AS a_sbje, \n" +
"a.sfje AS a_sfje, \n" +
"a.jhje AS a_jhje, \n" +
"a.fyxmnm AS a_fyxmnm, \n" +
"a.zdrbh AS a_zdrbh, \n" +
"a.sfwt AS a_sfwt, \n" +
"a.str AS a_str, \n" +
"a.formmodeid AS a_formmodeid, \n" +
"a.modedatacreater AS a_modedatacreater, \n" +
"a.modedatacreatertype AS a_modedatacreatertype, \n" +
"a.modedatacreatedate AS a_modedatacreatedate, \n" +
"a.modedatacreatetime AS a_modedatacreatetime, \n" +
"a.modedatamodifier AS a_modedatamodifier, \n" +
"a.modedatamodifydatetime AS a_modedatamodifydatetime, \n" +
"a.form_biz_id AS a_form_biz_id, \n" +
"a.modeuuid AS a_modeuuid, \n" +
" \n" +
"b.id AS b_id, \n" +
"b.mainid AS b_mainid, \n" +
"b.bxdnm AS b_bxdnm, \n" +
"b.cfcs AS b_cfcs, \n" +
"b.cfrq AS b_cfrq, \n" +
"b.jtgj AS b_jtgj, \n" +
"b.zxdj AS b_zxdj, \n" +
"b.cchbc AS b_cchbc, \n" +
"b.jpzk AS b_jpzk, \n" +
"b.ddcs AS b_ddcs, \n" +
"b.ddrq AS b_ddrq, \n" +
"b.ccts AS b_ccts, \n" +
"b.ccf AS b_ccf, \n" +
"b.zsfbz AS b_zsfbz, \n" +
"b.zsts AS b_zsts, \n" +
"b.zsf AS b_zsf, \n" +
"b.zsfsfcb AS b_zsfsfcb, \n" +
"b.zscbsm AS b_zscbsm, \n" +
"b.bxjhsjcf AS b_bxjhsjcf, \n" +
"b.qtcbfy AS b_qtcbfy, \n" +
"b.cbfysm AS b_cbfysm, \n" +
"b.bzje AS b_bzje, \n" +
"b.bxje AS b_bxje, \n" +
"b.sfczcbfy2 AS b_sfczcbfy2, \n" +
" \n" +
"c.id AS c_id, \n" +
"c.mainid AS c_mainid, \n" +
"c.bxdid AS c_bxdid, \n" +
"c.ftdwbh AS c_ftdwbh, \n" +
"c.ftbmbh AS c_ftbmbh, \n" +
"c.fyxm AS c_fyxm, \n" +
"c.fyxmbh AS c_fyxmbh, \n" +
"c.ftje AS c_ftje, \n" +
"c.ftsm AS c_ftsm, \n" +
"c.fph AS c_fph," +
"d.id AS d_id, \n" +
"d.mainid AS d_mainid, \n" +
"d.bxnm AS d_bxnm, \n" +
"d.sqdjbh AS d_sqdjbh, \n" +
"d.ccksrq AS d_ccksrq, \n" +
"d.ccjsrq AS d_ccjsrq, \n" +
" \n" +
"e.id AS e_id, \n" +
"e.mainid AS e_mainid, \n" +
"e.hxdjnm AS e_hxdjnm, \n" +
"e.jkrq AS e_jkrq, \n" +
"e.djbh AS e_djbh, \n" +
"e.jklx AS e_jklx, \n" +
"e.fyxm AS e_fyxm, \n" +
"e.jksm AS e_jksm, \n" +
"e.jkje AS e_jkje, \n" +
"e.zthk AS e_zthk, \n" +
"e.yhk AS e_yhk, \n" +
"e.hxje AS e_hxje, \n" +
"e.xjhk AS e_xjhk, \n" +
"e.qk AS e_qk, \n" +
" \n" +
"f.id AS f_id, \n" +
"f.mainid AS f_mainid, \n" +
"f.fkjlnm AS f_fkjlnm, \n" +
"f.bzdnm AS f_bzdnm, \n" +
"f.zjjhbh AS f_zjjhbh, \n" +
"f.zjjhjsxz AS f_zjjhjsxz, \n" +
"f.zffsbh AS f_zffsbh, \n" +
"f.dfxz AS f_dfxz, \n" +
"f.dwlb AS f_dwlb, \n" +
"f.bzrdw AS f_bzrdw, \n" +
"f.fkhbbh AS f_fkhbbh, \n" +
"f.skzhm AS f_skzhm, \n" +
"f.fkje AS f_fkje, \n" +
"f.khyx AS f_khyx, \n" +
"f.yxzh AS f_yxzh, \n" +
"f.ssf AS f_ssf, \n" +
"f.scs AS f_scs, \n" +
"f.fksm AS f_fksm, \n" +
"f.zt AS f_zt, \n" +
"f.skyxlxh AS f_skyxlxh, \n" +
"f.gssfdf AS f_gssfdf, \n" +
"f.gsdf AS f_gsdf, \n" +
" \n" +
"g.id AS g_id, \n" +
"g.mainid AS g_mainid, \n" +
"g.bxdid AS g_bxdid, \n" +
"g.spjd AS g_spjd, \n" +
"g.sprbh AS g_sprbh, \n" +
"g.spnr AS g_spnr, \n" +
"g.spsj AS g_spsj, \n" +
" \n" +
"h.id AS h_id, \n" +
"h.mainid AS h_mainid, \n" +
"h.wjid AS h_wjid, \n" +
"h.djnm AS h_djnm, \n" +
"h.wjmc AS h_wjmc, \n" +
"h.wjlx AS h_wjlx, \n" +
"h.wjdx AS h_wjdx, \n" +
"h.wjcclj AS h_wjcclj, \n" +
"h.djbh AS h_djbh" +
" from " + tableName + " a " +
" left join " + tableName + "_dt1 b" +
" on b.mainid = a.id " +
" left join " + tableName + "_dt2 c" +
" on c.mainid = a.id " +
" left join " + tableName + "_dt3 d" +
" on d.mainid = a.id " +
" left join " + tableName + "_dt4 e" +
" on e.mainid = a.id " +
" left join " + tableName + "_dt5 f" +
" on f.mainid = a.id " +
" left join " + tableName + "_dt6 g" +
" on g.mainid = a.id " +
" left join " + tableName + "_dt7 h" +
" on h.mainid = a.id " +
"where a.id in (" + dataIds + ")";
bb.writeLog("TravelReimbur acqDataSql: " + acqDataSql);
List<List<?>> datasList = new ArrayList<>();
rs.executeQuery(acqDataSql);
List dataList = new ArrayList<>();
List data1List = new ArrayList<>();
List data2List = new ArrayList<>();
List data3List = new ArrayList<>();
List data4List = new ArrayList<>();
List data5List = new ArrayList<>();
List data6List = new ArrayList<>();
List data7List = new ArrayList<>();
while (rs.next()) {
//主表
TravelReimbur travelReimbur = new TravelReimbur();
travelReimbur.setDjmc(Util.null2String(rs.getString("a_djmc")));
travelReimbur.setDjbh(Util.null2String(rs.getString("a_djbh")));
travelReimbur.setDwbh(Util.null2String(rs.getString("a_dwbh")));
travelReimbur.setBmbh(Util.null2String(rs.getString("a_bmbh")));
travelReimbur.setDjzt(Util.null2String(rs.getString("a_djzt")));
travelReimbur.setBxrybh(Util.null2String(rs.getString("a_bxrybh")));
travelReimbur.setRyzw(Util.null2String(rs.getString("a_ryzw")));
travelReimbur.setRyzwbh(Util.null2String(rs.getString("a_ryzwbh")));
travelReimbur.setRyzjid(Util.null2String(rs.getString("a_ryzjid")));
travelReimbur.setRyzj(Util.null2String(rs.getString("a_ryzj")));
travelReimbur.setCclx(Util.null2String(rs.getString("a_cclx")));
travelReimbur.setCcdd(Util.null2String(rs.getString("a_ccdd")));
travelReimbur.setCcksrq(Util.null2String(rs.getString("a_ccksrq")));
travelReimbur.setCcjsrq(Util.null2String(rs.getString("a_ccjsrq")));
travelReimbur.setCcts(Util.null2String(rs.getString("a_ccts")));
travelReimbur.setXmmc(Util.null2String(rs.getString("a_xmmc")));
travelReimbur.setHsxmlb(Util.null2String(rs.getString("a_hsxmlb")));
travelReimbur.setKdkse(Util.null2String(rs.getString("a_kdkse")));
travelReimbur.setFjzs(Util.null2String(rs.getString("a_fjzs")));
travelReimbur.setLxdh(Util.null2String(rs.getString("a_lxdh")));
travelReimbur.setBzje(Util.null2String(rs.getString("a_bzje")));
travelReimbur.setFyrq(Util.null2String(rs.getString("a_fyrq")));
travelReimbur.setSfczcbfy(Util.null2String(rs.getString("a_sfczcbfy")));
travelReimbur.setCcsy(Util.null2String(rs.getString("a_ccsy")));
travelReimbur.setSbje(Util.null2String(rs.getString("a_sbje")));
travelReimbur.setSfje(Util.null2String(rs.getString("a_sfje")));
travelReimbur.setJhje(Util.null2String(rs.getString("a_jhje")));
travelReimbur.setFyxmnm(Util.null2String(rs.getString("a_fyxmnm")));
travelReimbur.setZdrbh(Util.null2String(rs.getString("a_zdrbh")));
travelReimbur.setSfwt(Util.null2String(rs.getString("a_sfwt")));
travelReimbur.setStr(Util.null2String(rs.getString("a_str")));
dataList.add(travelReimbur);
//明细表1
TravelReimburDt1 travelReimburDt1 = new TravelReimburDt1();
travelReimburDt1.setBxdnm(Util.null2String(rs.getString("b_bxdnm")));
travelReimburDt1.setCfcs(Util.null2String(rs.getString("b_cfcs")));
travelReimburDt1.setCfrq(Util.null2String(rs.getString("b_cfrq")));
travelReimburDt1.setJtgj(Util.null2String(rs.getString("b_jtgj")));
travelReimburDt1.setZxdj(Util.null2String(rs.getString("b_zxdj")));
travelReimburDt1.setCchbc(Util.null2String(rs.getString("b_cchbc")));
travelReimburDt1.setJpzk(Util.null2String(rs.getString("b_jpzk")));
travelReimburDt1.setDdcs(Util.null2String(rs.getString("b_ddcs")));
travelReimburDt1.setDdrq(Util.null2String(rs.getString("b_ddrq")));
travelReimburDt1.setCcts(Util.null2String(rs.getString("b_ccts")));
travelReimburDt1.setCcf(Util.null2String(rs.getString("b_ccf")));
travelReimburDt1.setZsfbz(Util.null2String(rs.getString("b_zsfbz")));
travelReimburDt1.setZsts(Util.null2String(rs.getString("b_zsts")));
travelReimburDt1.setZsf(Util.null2String(rs.getString("b_zsf")));
travelReimburDt1.setZsfsfcb(Util.null2String(rs.getString("b_zsfsfcb")));
travelReimburDt1.setZscbsm(Util.null2String(rs.getString("b_zscbsm")));
travelReimburDt1.setBxjhsjcf(Util.null2String(rs.getString("b_bxjhsjcf")));
travelReimburDt1.setQtcbfy(Util.null2String(rs.getString("b_qtcbfy")));
travelReimburDt1.setCbfysm(Util.null2String(rs.getString("b_cbfysm")));
travelReimburDt1.setBzje(Util.null2String(rs.getString("b_bzje")));
travelReimburDt1.setBxje(Util.null2String(rs.getString("b_bxje")));
travelReimburDt1.setSfczcbfy2(Util.null2String(rs.getString("b_sfczcbfy2")));
data1List.add(travelReimburDt1);
//明细表2
TravelReimburDt2 travelReimburDt2 = new TravelReimburDt2();
travelReimburDt2.setBxdid(Util.null2String(rs.getString("c_bxdid")));
travelReimburDt2.setFtdwbh(Util.null2String(rs.getString("c_ftdwbh")));
travelReimburDt2.setFtbmbh(Util.null2String(rs.getString("c_ftbmbh")));
travelReimburDt2.setFyxm(Util.null2String(rs.getString("c_fyxm")));
travelReimburDt2.setFyxmbh(Util.null2String(rs.getString("c_fyxmbh")));
travelReimburDt2.setFtje(Util.null2String(rs.getString("c_ftje")));
travelReimburDt2.setFtsm(Util.null2String(rs.getString("c_ftsm")));
travelReimburDt2.setFph(Util.null2String(rs.getString("c_fph")));
data2List.add(travelReimburDt2);
//明细表3
TravelReimburDt3 travelReimburDt3 = new TravelReimburDt3();
travelReimburDt3.setBxnm(Util.null2String(rs.getString("d_bxnm")));
travelReimburDt3.setSqdjbh(Util.null2String(rs.getString("d_sqdjbh")));
travelReimburDt3.setCcksrq(Util.null2String(rs.getString("d_ccksrq")));
travelReimburDt3.setCcjsrq(Util.null2String(rs.getString("d_ccjsrq")));
data3List.add(travelReimburDt3);
//明细表4
TravelReimburDt4 travelReimburDt4 = new TravelReimburDt4();
travelReimburDt4.setHxdjnm(Util.null2String(rs.getString("e_hxdjnm")));
travelReimburDt4.setJkrq(Util.null2String(rs.getString("e_jkrq")));
travelReimburDt4.setDjbh(Util.null2String(rs.getString("e_djbh")));
travelReimburDt4.setJklx(Util.null2String(rs.getString("e_jklx")));
travelReimburDt4.setFyxm(Util.null2String(rs.getString("e_fyxm")));
travelReimburDt4.setJksm(Util.null2String(rs.getString("e_jksm")));
travelReimburDt4.setJkje(Util.null2String(rs.getString("e_jkje")));
travelReimburDt4.setZthk(Util.null2String(rs.getString("e_zthk")));
travelReimburDt4.setYhk(Util.null2String(rs.getString("e_yhk")));
travelReimburDt4.setHxje(Util.null2String(rs.getString("e_hxje")));
travelReimburDt4.setXjhk(Util.null2String(rs.getString("e_xjhk")));
travelReimburDt4.setQk(Util.null2String(rs.getString("e_qk")));
data4List.add(travelReimburDt4);
//明细表5
TravelReimburDt5 travelReimburDt5 = new TravelReimburDt5();
travelReimburDt5.setFkjlnm(Util.null2String(rs.getString("f_fkjlnm")));
travelReimburDt5.setBzdnm(Util.null2String(rs.getString("f_bzdnm")));
travelReimburDt5.setZjjhbh(Util.null2String(rs.getString("f_zjjhbh")));
travelReimburDt5.setZjjhjsxz(Util.null2String(rs.getString("f_zjjhjsxz")));
travelReimburDt5.setZffsbh(Util.null2String(rs.getString("f_zffsbh")));
travelReimburDt5.setDfxz(Util.null2String(rs.getString("f_dfxz")));
travelReimburDt5.setDwlb(Util.null2String(rs.getString("f_dwlb")));
travelReimburDt5.setBzrdw(Util.null2String(rs.getString("f_bzrdw")));
travelReimburDt5.setFkhbbh(Util.null2String(rs.getString("f_fkhbbh")));
travelReimburDt5.setSkzhm(Util.null2String(rs.getString("f_skzhm")));
travelReimburDt5.setFkje(Util.null2String(rs.getString("f_fkje")));
travelReimburDt5.setKhyx(Util.null2String(rs.getString("f_khyx")));
travelReimburDt5.setYxzh(Util.null2String(rs.getString("f_yxzh")));
travelReimburDt5.setSsf(Util.null2String(rs.getString("f_ssf")));
travelReimburDt5.setScs(Util.null2String(rs.getString("f_scs")));
travelReimburDt5.setFksm(Util.null2String(rs.getString("f_fksm")));
travelReimburDt5.setZt(Util.null2String(rs.getString("f_zt")));
travelReimburDt5.setSkyxlxh(Util.null2String(rs.getString("f_skyxlxh")));
travelReimburDt5.setGssfdf(Util.null2String(rs.getString("f_gssfdf")));
travelReimburDt5.setGsdf(Util.null2String(rs.getString("f_gsdf")));
data5List.add(travelReimburDt5);
//明细表6
TravelReimburDt6 travelReimburDt6 = new TravelReimburDt6();
travelReimburDt6.setBxdid(Util.null2String(rs.getString("g_bxdid")));
travelReimburDt6.setSpjd(Util.null2String(rs.getString("g_spjd")));
travelReimburDt6.setSprbh(Util.null2String(rs.getString("g_sprbh")));
travelReimburDt6.setSpnr(Util.null2String(rs.getString("g_spnr")));
travelReimburDt6.setSpsj(Util.null2String(rs.getString("g_spsj")));
data6List.add(travelReimburDt6);
//明细表7
TravelReimburDt7 travelReimburDt7 = new TravelReimburDt7();
travelReimburDt7.setWjid(Util.null2String(rs.getString("h_wjid")));
travelReimburDt7.setDjnm(Util.null2String(rs.getString("h_djnm")));
travelReimburDt7.setWjmc(Util.null2String(rs.getString("h_wjmc")));
travelReimburDt7.setWjlx(Util.null2String(rs.getString("h_wjlx")));
travelReimburDt7.setWjdx(Util.null2String(rs.getString("h_wjdx")));
travelReimburDt7.setWjcclj(Util.null2String(rs.getString("h_wjcclj")));
data7List.add(travelReimburDt7);
}
datasList.add(dataList);
datasList.add(data1List);
datasList.add(data2List);
datasList.add(data3List);
datasList.add(data4List);
datasList.add(data5List);
datasList.add(data6List);
datasList.add(data7List);
exportDatas.put(type, datasList);
}
bb.writeLog("exportDatas: " + JSONObject.toJSONString(exportDatas));
// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
// String fileName="/opt/weaver/ecology/filesystem/ebusecexport/"+ "差旅借款单" + sdf.format(new Date()) + ".xlsx";
exportExcelFile(outPath, fileName, exportDatas);
result = true;
}catch (Exception e) {
bb.writeLog("WorkflowExcelDataCmd Exception: " + e);
}
return result;
}
public void exportExcelFile(String outPath, String fileName, Map<String, List<List<?>> > exportDatas) {
ExcelWriter excelWriter = EasyExcel.write(outPath + fileName + ".xlsx").build();
for (String key : exportDatas.keySet()) {
WriteSheet writeSheet = new WriteSheet();
List<List<?>> tempList = exportDatas.get(key);
int i = 0;
for (List<?> tl: tempList) {
//这里 需要指定写用哪个class去写
writeSheet = EasyExcel.writerSheet(i, "第" + i + "个sheet页").head(tl.get(0).getClass()).build();
excelWriter.write(tl, writeSheet);
i++;
}
}
//千万别忘记finish 会帮忙关闭流
excelWriter.finish();
}
}
Loading…
Cancel
Save