From 7e05898e536ea54738b554350c455115aa7b82ad Mon Sep 17 00:00:00 2001 From: chenwei <3291673014@qq.com> Date: Thu, 21 Mar 2024 14:53:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E9=99=84=E4=BB=B6=E5=92=8Cex?= =?UTF-8?q?cel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WorkflowExcelController.java | 7 + src/com/engine/demo/cmd/ExportFjZipCmd.java | 151 ++++ .../engine/demo/cmd/WorkflowExcelDataCmd.java | 423 +++++++++++ .../demo/cmd/WorklowBatchExportCmd.java | 240 ++++++ .../controller/WorkflowExcelController.java | 57 ++ src/com/engine/demo/entity/FillData.java | 20 + .../engine/demo/entity/invoice/Invoice.java | 94 +++ .../entity/travelBorrow/TravelBorrow.java | 70 ++ .../entity/travelBorrow/TravelBorrowDt1.java | 31 + .../entity/travelBorrow/TravelBorrowDt2.java | 52 ++ .../entity/travelBorrow/TravelBorrowDt3.java | 28 + .../entity/travelReimbur/TravelReimbur.java | 106 +++ .../travelReimbur/TravelReimburDt1.java | 79 ++ .../travelReimbur/TravelReimburDt2.java | 37 + .../travelReimbur/TravelReimburDt3.java | 26 + .../travelReimbur/TravelReimburDt4.java | 49 ++ .../travelReimbur/TravelReimburDt5.java | 73 ++ .../travelReimbur/TravelReimburDt6.java | 29 + .../travelReimbur/TravelReimburDt7.java | 32 + .../demo/service/WorkflowExcelService.java | 32 + .../impl/WorkflowExcelServiceImpl.java | 41 ++ src/com/engine/demo/util/ExportFjUtil.java | 695 ++++++++++++++++++ 22 files changed, 2372 insertions(+) create mode 100644 src/com/api/demo/controller/WorkflowExcelController.java create mode 100644 src/com/engine/demo/cmd/ExportFjZipCmd.java create mode 100644 src/com/engine/demo/cmd/WorkflowExcelDataCmd.java create mode 100644 src/com/engine/demo/cmd/WorklowBatchExportCmd.java create mode 100644 src/com/engine/demo/controller/WorkflowExcelController.java create mode 100644 src/com/engine/demo/entity/FillData.java create mode 100644 src/com/engine/demo/entity/invoice/Invoice.java create mode 100644 src/com/engine/demo/entity/travelBorrow/TravelBorrow.java create mode 100644 src/com/engine/demo/entity/travelBorrow/TravelBorrowDt1.java create mode 100644 src/com/engine/demo/entity/travelBorrow/TravelBorrowDt2.java create mode 100644 src/com/engine/demo/entity/travelBorrow/TravelBorrowDt3.java create mode 100644 src/com/engine/demo/entity/travelReimbur/TravelReimbur.java create mode 100644 src/com/engine/demo/entity/travelReimbur/TravelReimburDt1.java create mode 100644 src/com/engine/demo/entity/travelReimbur/TravelReimburDt2.java create mode 100644 src/com/engine/demo/entity/travelReimbur/TravelReimburDt3.java create mode 100644 src/com/engine/demo/entity/travelReimbur/TravelReimburDt4.java create mode 100644 src/com/engine/demo/entity/travelReimbur/TravelReimburDt5.java create mode 100644 src/com/engine/demo/entity/travelReimbur/TravelReimburDt6.java create mode 100644 src/com/engine/demo/entity/travelReimbur/TravelReimburDt7.java create mode 100644 src/com/engine/demo/service/WorkflowExcelService.java create mode 100644 src/com/engine/demo/service/impl/WorkflowExcelServiceImpl.java create mode 100644 src/com/engine/demo/util/ExportFjUtil.java diff --git a/src/com/api/demo/controller/WorkflowExcelController.java b/src/com/api/demo/controller/WorkflowExcelController.java new file mode 100644 index 0000000..df98af9 --- /dev/null +++ b/src/com/api/demo/controller/WorkflowExcelController.java @@ -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 { +} \ No newline at end of file diff --git a/src/com/engine/demo/cmd/ExportFjZipCmd.java b/src/com/engine/demo/cmd/ExportFjZipCmd.java new file mode 100644 index 0000000..c94bd65 --- /dev/null +++ b/src/com/engine/demo/cmd/ExportFjZipCmd.java @@ -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> { + + BaseBean bb = new BaseBean(); + + public ExportFjZipCmd(Map params, User user) { + this.user = user; + this.params = params; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + @Override + public Map execute(CommandContext commandContext) { + Map 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> outFiles = new ArrayList<>(); + Map 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 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; + } + +} diff --git a/src/com/engine/demo/cmd/WorkflowExcelDataCmd.java b/src/com/engine/demo/cmd/WorkflowExcelDataCmd.java new file mode 100644 index 0000000..ab574cf --- /dev/null +++ b/src/com/engine/demo/cmd/WorkflowExcelDataCmd.java @@ -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> { + + BaseBean bb = new BaseBean(); + + public WorkflowExcelDataCmd(Map params, User user) { + this.user = user; + this.params = params; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + @Override + public Map execute(CommandContext commandContext) { + + Map result = new HashMap<>(); + + Map> > 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> 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> 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> 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> > exportDatas) { + + ExcelWriter excelWriter = EasyExcel.write(fileName).build(); + WriteSheet writeSheet = new WriteSheet(); + + for (String key : exportDatas.keySet()) { + 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(); + } + +} diff --git a/src/com/engine/demo/cmd/WorklowBatchExportCmd.java b/src/com/engine/demo/cmd/WorklowBatchExportCmd.java new file mode 100644 index 0000000..c57d313 --- /dev/null +++ b/src/com/engine/demo/cmd/WorklowBatchExportCmd.java @@ -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> { + + BaseBean bb = new BaseBean(); + + public WorklowBatchExportCmd(Map params, User user) { + this.user = user; + this.params = params; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + @Override + public Map execute(CommandContext commandContext) { + + Map result = new HashMap(); + 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 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 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 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 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; + } + + +} diff --git a/src/com/engine/demo/controller/WorkflowExcelController.java b/src/com/engine/demo/controller/WorkflowExcelController.java new file mode 100644 index 0000000..90792bd --- /dev/null +++ b/src/com/engine/demo/controller/WorkflowExcelController.java @@ -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 params = ParamUtil.request2Map(request); + Map 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 params = ParamUtil.request2Map(request); + Map 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 params = ParamUtil.request2Map(request); + Map resultDatas = getWorkflowExcelService(user).exportFjZip(params, user); + return new Gson().toJson(resultDatas); + } + +} \ No newline at end of file diff --git a/src/com/engine/demo/entity/FillData.java b/src/com/engine/demo/entity/FillData.java new file mode 100644 index 0000000..e66d8aa --- /dev/null +++ b/src/com/engine/demo/entity/FillData.java @@ -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; +} \ No newline at end of file diff --git a/src/com/engine/demo/entity/invoice/Invoice.java b/src/com/engine/demo/entity/invoice/Invoice.java new file mode 100644 index 0000000..cd25965 --- /dev/null +++ b/src/com/engine/demo/entity/invoice/Invoice.java @@ -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; +} diff --git a/src/com/engine/demo/entity/travelBorrow/TravelBorrow.java b/src/com/engine/demo/entity/travelBorrow/TravelBorrow.java new file mode 100644 index 0000000..799960f --- /dev/null +++ b/src/com/engine/demo/entity/travelBorrow/TravelBorrow.java @@ -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; +} diff --git a/src/com/engine/demo/entity/travelBorrow/TravelBorrowDt1.java b/src/com/engine/demo/entity/travelBorrow/TravelBorrowDt1.java new file mode 100644 index 0000000..68e426c --- /dev/null +++ b/src/com/engine/demo/entity/travelBorrow/TravelBorrowDt1.java @@ -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; +} diff --git a/src/com/engine/demo/entity/travelBorrow/TravelBorrowDt2.java b/src/com/engine/demo/entity/travelBorrow/TravelBorrowDt2.java new file mode 100644 index 0000000..5b1e5d9 --- /dev/null +++ b/src/com/engine/demo/entity/travelBorrow/TravelBorrowDt2.java @@ -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; +} diff --git a/src/com/engine/demo/entity/travelBorrow/TravelBorrowDt3.java b/src/com/engine/demo/entity/travelBorrow/TravelBorrowDt3.java new file mode 100644 index 0000000..6f262e6 --- /dev/null +++ b/src/com/engine/demo/entity/travelBorrow/TravelBorrowDt3.java @@ -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; +} diff --git a/src/com/engine/demo/entity/travelReimbur/TravelReimbur.java b/src/com/engine/demo/entity/travelReimbur/TravelReimbur.java new file mode 100644 index 0000000..f68711f --- /dev/null +++ b/src/com/engine/demo/entity/travelReimbur/TravelReimbur.java @@ -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; +} diff --git a/src/com/engine/demo/entity/travelReimbur/TravelReimburDt1.java b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt1.java new file mode 100644 index 0000000..620de53 --- /dev/null +++ b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt1.java @@ -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; +} diff --git a/src/com/engine/demo/entity/travelReimbur/TravelReimburDt2.java b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt2.java new file mode 100644 index 0000000..2f752dc --- /dev/null +++ b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt2.java @@ -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; +} diff --git a/src/com/engine/demo/entity/travelReimbur/TravelReimburDt3.java b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt3.java new file mode 100644 index 0000000..2a65b3c --- /dev/null +++ b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt3.java @@ -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; + +} diff --git a/src/com/engine/demo/entity/travelReimbur/TravelReimburDt4.java b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt4.java new file mode 100644 index 0000000..43c6c27 --- /dev/null +++ b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt4.java @@ -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; +} diff --git a/src/com/engine/demo/entity/travelReimbur/TravelReimburDt5.java b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt5.java new file mode 100644 index 0000000..5562956 --- /dev/null +++ b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt5.java @@ -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; +} diff --git a/src/com/engine/demo/entity/travelReimbur/TravelReimburDt6.java b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt6.java new file mode 100644 index 0000000..85d5ce0 --- /dev/null +++ b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt6.java @@ -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; + +} diff --git a/src/com/engine/demo/entity/travelReimbur/TravelReimburDt7.java b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt7.java new file mode 100644 index 0000000..f1251dd --- /dev/null +++ b/src/com/engine/demo/entity/travelReimbur/TravelReimburDt7.java @@ -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; + +} diff --git a/src/com/engine/demo/service/WorkflowExcelService.java b/src/com/engine/demo/service/WorkflowExcelService.java new file mode 100644 index 0000000..69603be --- /dev/null +++ b/src/com/engine/demo/service/WorkflowExcelService.java @@ -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 WorklowBatchExport(Map params, User user); + + /** + * 建模数据导出 + * @param params + * @param user + * @return + */ + public Map WorkflowExcelData(Map params, User user); + + /** + * 建模数据导出 + * @param params + * @param user + * @return + */ + public Map exportFjZip(Map params, User user); +} diff --git a/src/com/engine/demo/service/impl/WorkflowExcelServiceImpl.java b/src/com/engine/demo/service/impl/WorkflowExcelServiceImpl.java new file mode 100644 index 0000000..75e1b45 --- /dev/null +++ b/src/com/engine/demo/service/impl/WorkflowExcelServiceImpl.java @@ -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 WorklowBatchExport(Map params, User user) { + return commandExecutor.execute(new WorklowBatchExportCmd(params, user)); + } + + @Override + public Map WorkflowExcelData(Map params, User user) { + return commandExecutor.execute(new WorkflowExcelDataCmd(params, user)); + } + + @Override + public Map exportFjZip(Map params, User user) { + return commandExecutor.execute(new ExportFjZipCmd(params, user)); + } + +} diff --git a/src/com/engine/demo/util/ExportFjUtil.java b/src/com/engine/demo/util/ExportFjUtil.java new file mode 100644 index 0000000..7da57f6 --- /dev/null +++ b/src/com/engine/demo/util/ExportFjUtil.java @@ -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 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> > 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> 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> 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> 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> > exportDatas) { + + ExcelWriter excelWriter = EasyExcel.write(outPath + fileName + ".xlsx").build(); + + for (String key : exportDatas.keySet()) { + WriteSheet writeSheet = new WriteSheet(); + 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(); + } + +}