标签:sse override 打包 .data mat cti etc 账号 exp
package com.qhyf.app.bl.service; import java.awt.Color; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFColor; import org.apache.poi.xssf.usermodel.XSSFFont; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.google.common.io.Files; import com.jfinal.aop.Before; import com.jfinal.core.PageInfo; import com.jfinal.plugin.activerecord.tx.Tx; import com.qhyf.app.bl.BlConstant; import com.qhyf.app.bl.base.common.EnvironmentUtils; import com.qhyf.app.bl.base.controller.QhyfController; import com.qhyf.app.bl.base.service.QhyfAbstractService; import com.qhyf.app.bl.base.service.QhyfService; import com.qhyf.app.bl.base.util.AlertUtils; import com.qhyf.app.bl.base.util.StringTools; import com.qhyf.app.bl.base.util.SysFileUtils; import com.qhyf.app.bl.lc.service.QhyfGetLcAttachmentService; import com.qhyf.app.bl.lc.service.QhyfToLCSendCheckStateService; import com.qhyf.app.bl.model.BizLcPaymentInfo; import com.qhyf.app.bl.model.BizLcPaymentInvoiceInfo; import club.newepoch.interfaces.nio.IFileReader; import club.newepoch.interfaces.nio.IInputStreamCallback; import club.newepoch.iweb.model.SysFile; import club.newepoch.nio.exception.NenioCompressionException; import club.newepoch.nio.exception.NenioExportException; import club.newepoch.nio.impl.aliyun.AliOssReaderImpl; import club.newepoch.persistent.db.common.Db; import club.newepoch.persistent.db.common.Page; import club.newepoch.persistent.db.exception.ActiveRecordException; import club.newepoch.persistent.db.pojo.Record; import club.newepoch.pojo.nio.FileInfo; import club.newepoch.utils.AssertUtils; import club.newepoch.utils.NioUtils; import club.newepoch.utils.StringUtils; public class LcPaymentOrderExportService extends QhyfService { /** * 绿城付款单导出初始化 * * @param ctl * @return * @throws ActiveRecordException */ public Page <Record> pagelist(QhyfController ctl) throws ActiveRecordException { PageInfo pageInfo = ctl.getPageInfo(); AssertUtils.notNull(pageInfo, "分页信息不能为空"); int pageNumber = pageInfo.getPageIndex(); int pageSize = pageInfo.getPageSize(); // 分页查询 Page <Record> lcPayInfoPage = Db.paginate(pageNumber, pageSize, selectSql, fromSql(ctl)); return lcPayInfoPage; } /** * 主画面查询SELECT SQL构造 */ private String selectSql = "SELECT " + " CAST(@i :=@i + 1 AS UNSIGNED) AS number, " + " x.uuid, " + " x.payment_code, " + " x.supplier_name, " + " x.receive_money, " + " x.is_export_flag, " + " CONVERT(x.export_time, char) AS export_time, " + " x.payer, " + " x.region_name, " + " x.user_name, " + " x.marketer_id , " + " x.region_id , " + " x.payment_id , " + " x.contract_type , " + " x.supplier_account , " + " x.contract_name , " + " x.receiver_name , " + " x.contract_code , " + " x.supplier_account_bank " ; /** * 主画面查询from SQL构造 * @param ctl * @throws ActiveRecordException */ public String fromSql(QhyfController ctl) throws ActiveRecordException { // 初始化对象 QhyfService qhyhfService = new QhyfService(); String where = ""; // 页面排序 String order = ctl.getOrderString(ctl.getPageInfo()); if(!order.contains("receive_money")) { order = " ORDER BY x.payment_id "; } // 供应商名称查询 String LcSupplier = ctl.getPara("LcSupplier"); if (StringUtils.notBlank(LcSupplier)) { where = " where x.supplier_name like ‘%" + qhyhfService.strEscape(LcSupplier) + "%‘ "; } // 是否已导出查询 String isExportFlag = ctl.getPara("isExportFlag"); if (StringUtils.notBlank(isExportFlag)) { if (isExportFlag.equals("1")){ isExportFlag = "已导出"; if (where.equals("")){ where = "where x.is_export_flag = ‘" + isExportFlag + "‘ "; }else { where += " AND x.is_export_flag = ‘" + isExportFlag + "‘ "; } }else if (isExportFlag.equals("0")){ isExportFlag = "未导出"; if (where.equals("")){ where = "where x.is_export_flag = ‘" + isExportFlag + "‘ "; }else { where += " AND x.is_export_flag = ‘" + isExportFlag + "‘ "; } } } // 项目公司查询 String payer = ctl.getPara("projectCompany"); if (StringUtils.notBlank(payer)) { if (where.equals("")){ where = "where x.payer like ‘%" + qhyhfService.strEscape(payer) + "%‘ "; }else { where += " AND x.payer like ‘%" + qhyhfService.strEscape(payer) + "%‘ "; } } // 区域查询 String regionId = ctl.getPara("regionId"); if (StringUtils.notBlank(regionId)) { if (where.equals("")){ where = "where x.region_id = ‘" + regionId + "‘ "; }else { where += " AND x.region_id = ‘" + regionId + "‘ "; } } // 区域专员查询 String userNameId = ctl.getPara("userId"); if (StringUtils.notBlank(userNameId)) { if (where.equals("")){ where = "where x.marketer_id like ‘%" + userNameId + "%‘ "; }else { where += " AND x.marketer_id like ‘%" + userNameId + "%‘ "; } } // fromSql构造 String fromSql = "FROM " + "( " + " SELECT DISTINCT " + " a.uuid, " + " a.payment_code, " + " a.supplier_name, " + " a.receive_money, " + " IF ( is_export_flag = 0, ‘未导出‘, ‘已导出‘) AS is_export_flag, " + " a.export_time, " + " b.payer, " + " d.region_name, " + " GROUP_CONCAT(DISTINCT f.user_name) AS user_name, " + " e.marketer_id, " + " d.uuid as region_id , " + " a.payment_id , " + " a.contract_type,"+ " a.supplier_account, " + " a.contract_name, " + " a.receiver_name, " + " a.contract_code, " + " a.supplier_account_bank " + " FROM " + " biz_lc_payment_info a, " + " biz_lc_payment_invoice_info b " + " LEFT JOIN biz_item_company c ON b.payer = c.item_company_name " + " AND c.sys_status = 1 " + " LEFT JOIN biz_item_region d ON c.region_id = d.uuid " + " AND d.sys_status = 1 " + " LEFT JOIN biz_link_marketer_region e ON e.region_id = d.uuid " + " AND d.sys_status = 1 " + " LEFT JOIN sys_user f ON e.marketer_id LIKE CONCAT(‘%‘, f.uuid, ‘%‘) " + " AND f.sys_status = 1 " + " WHERE " + " a.payment_id = b.payment_id " + " AND a.sys_status = 1 " + " AND b.sys_status = 1 " + " GROUP BY " + " a.uuid " + ") x, " + "(SELECT @i := 0) AS y " ; return fromSql + where + order; } /** * 绿城付款单导出详情 * * @param ctl * @return * @throws ActiveRecordException */ public Record seedetails(QhyfController ctl) throws ActiveRecordException { String uuid = ctl.getPara("uuid"); String detailssql = "" + " SELECT " + " contract_code, " + " contract_name, " + " if(contract_type= 1,‘工程类‘,‘贸易类‘) AS contract_type, " + " payment_code, " + " payment_theme, " + " payment_method , " + " payment_channel, " + " currency, " + " receive_money, " + " supplier_name, " + " supplier_account_bank, " + " supplier_account, " + " receiver_name, " + " create_time " + " FROM " + " biz_lc_payment_info " + " WHERE " + " sys_status = 1 " + "AND uuid = ? "; Record Details = Db.findFirst(detailssql, uuid); return Details; } /** * 绿城付款单导出详情发票 * * @param ctl * @return * @throws ActiveRecordException */ public Page <Record> invoice(QhyfController ctl) throws ActiveRecordException { PageInfo pageInfo = ctl.getPageInfo(); int pageNumber = pageInfo.getPageIndex(); int pageSize = pageInfo.getPageSize(); String uuid = ctl.getPara("uuid"); String invoicesql = "" + " SELECT " + " b.invoice_no, " + " b.invoice_code, " + " b.billing_date, " + " b.money, " + " b.tax_rate, " + " b.tax_free_money, " + " b.can_assigment_money "; String invoicefrom = String.format("" + " FROM " + " %s a , " + " %s b " + " WHERE " + " a.sys_status =1 " + " AND b.sys_status =1 " + " AND a.payment_id = b.payment_id " + " AND a.uuid = ?" + " ORDER BY " + " b.invoice_no ASC ", BizLcPaymentInfo.dao.getTable().getName(), BizLcPaymentInvoiceInfo.dao.getTable().getName()); Page <Record> invoiceInfo = Db.paginate(pageNumber, pageSize, invoicesql, invoicefrom, uuid); return invoiceInfo; } /** * 绿城付款单导出详情发票总计 * * @param ctl * @return */ public Record total(QhyfController ctl) throws ActiveRecordException { String uuid = ctl.getPara("uuid"); String totalsql = "" + " SELECT " + " sum(b.money) as totalInvoiceAmount " + " FROM " + " biz_lc_payment_info a, " + " biz_lc_payment_invoice_info b " + " WHERE " + " a.sys_status = 1 " + " AND b.sys_status = 1 " + " AND a.payment_id = b.payment_id " + " AND a.uuid = ? "; Record totalinfo = Db.findFirst(totalsql, uuid); return totalinfo; } /** * 导出付款单 * * @param ctl * @return */ @Before(Tx.class) public String exportlcpayment(QhyfController ctl) throws ActiveRecordException, NenioExportException, NenioCompressionException, IOException { // 查询列表付款单信息 List <Record> PayInfoList = Db.find(selectSql+ fromSql(ctl)); if (PayInfoList.size() == 0) { AssertUtils.isTrue(false, AlertUtils.getErrMsg("ME499E008")); } List <String> uuids = new ArrayList <String>(); // 将发票的中金额,设置对应的付款单里面去 for (Record payInfo: PayInfoList){ // 获取该笔付款单的uuid String uuid=payInfo.getStr("uuid"); // 通过该笔的付款单的uuid,来查询该笔付款单金额的总钱 、 String sql = "SELECT " + " a.uuid, " + " SUM(b.money) AS invoice_money " + "FROM " + " biz_lc_payment_info a, " + " biz_lc_payment_invoice_info b " + "WHERE " + " a.payment_id = b.payment_id " + "AND a.sys_status = 1 " + "AND b.sys_status = 1 " + "AND a.uuid = ? " ; Record moneyRecord= Db.findFirst(sql,uuid); // 设置进该笔付款单里面 payInfo.set("invoiceMoney",moneyRecord.getStr("invoiceMoney")); // 设置导出付款单UUID uuids.add(payInfo.get("uuid")); // 调用发票说明共通 String lcInvoiceDescription = createInvoiceDescription(payInfo.get("paymentId")); // 设置发票说明 payInfo.set("lcInvoiceDescription", lcInvoiceDescription); } // 获取付款单ID String paymentIds = "‘" + PayInfoList.get(0).get("paymentId").toString()+ "‘" ; for (int i = 1; i < PayInfoList.size(); i++) { paymentIds += ",‘" + PayInfoList.get(i).get("paymentId").toString()+ "‘" ; } // 查询付款单发票信息SQL String selectPayInvoice = String.format( " SELECT" + " b.invoice_no," + " b.billing_date," + " b.money ," + " b.payment_id" + " FROM " + " biz_lc_payment_invoice_info b " + " WHERE b.payment_id IN (" + paymentIds + " ) AND b.sys_status = 1" + " ORDER BY b.payment_id,b.invoice_no "); // 定义付款单发票信息列表 List <Record> PayInvoiceList = Db.find(selectPayInvoice); if (PayInfoList.size() == 0) { AssertUtils.isTrue(false, AlertUtils.getErrMsg("ME499E009")); } // 设置发票序号 for (Record payInfo: PayInfoList){ // 付款单ID String paymentId = payInfo.get("paymentId").toString(); for (Record payInvoice : PayInvoiceList) { if(paymentId.equals(payInvoice.getStr("paymentId"))) { payInvoice.set("number",payInfo.get("number")); } } } // 设置导出时间 SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String exportTime = sd.format(new Date()); // 创建表头 XSSFWorkbook workbook = new XSSFWorkbook(); String savePath = EnvironmentUtils.me().getEnv().getGeneratePath(); File save = new File(savePath); if (!save.exists() && !save.isDirectory()) { save.mkdirs(); } String fileName = "绿城付款单.xlsx"; savePath = savePath + File.separator + fileName; FileOutputStream fout = new FileOutputStream(savePath); // 创建检测结果sheet XSSFSheet sheetPay = workbook.createSheet("付款通知书"); XSSFSheet sheetPayInvoice = workbook.createSheet("发票信息"); sheetPay.createFreezePane(0, 1, 0, 1); sheetPayInvoice.createFreezePane(0, 1, 0, 1); // 设置付款单信息筛选 CellRangeAddress payChoose = CellRangeAddress.valueOf("B1:V1"); sheetPay.setAutoFilter(payChoose); // 设置付款单发票信息筛选 CellRangeAddress payInvoiceChoose = CellRangeAddress.valueOf("A1:G1"); sheetPayInvoice.setAutoFilter(payInvoiceChoose); XSSFRow headPayRow = sheetPay.createRow(0); XSSFRow headPayInvoiceRow = sheetPayInvoice.createRow(0); // 设置付款单sheet行高 sheetPay.setDefaultRowHeightInPoints(3 * 10); // 设置付款单发票sheet行高 sheetPayInvoice.setDefaultRowHeightInPoints(2 * 10); // 定义付款单sheet表头 String[] headPayArr = {"序号", "应收账款金额", "账款到期日", "项目公司名称", "供应商名称", "供应商开户行", "供应商账号", "合同名称", "合同编号", "账号名称", "付款确认书编号", "内引", "核心企业", "金融机构", "签约主体", "基础合同类别", "期数", "发行日", "项目名称", "发票说明", "绿城标识UUID", "区域","区域专员","发票金额","付款申请编码","导出时间"}; // 定义付款单发票sheet表头 String[] headPayInvoiceArr = {"批次", "序号", "发票号码", "票据名称", "开票日期", "发票金额", "应收账款金额"}; // 单元格 XSSFCell headPayCell = null; XSSFCell headPayInvoiceCell = null; XSSFCellStyle style = workbook.createCellStyle(); // 表头样式设置 style.setBorderBottom(XSSFCellStyle.BORDER_THIN); style.setBorderLeft(XSSFCellStyle.BORDER_THIN); style.setBorderTop(XSSFCellStyle.BORDER_THIN); style.setBorderRight(XSSFCellStyle.BORDER_THIN); // 设置背景色 style.setFillForegroundColor(new XSSFColor(new Color(216, 216, 216))); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 style.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); // 设置表头字体 XSSFFont headFont = workbook.createFont(); // 字体样式 headFont.setFontName("宋体"); // 字体大小 headFont.setFontHeightInPoints((short) 9); // 加粗 headFont.setBold(true); style.setFont(headFont); // 付款单sheet列宽设置 sheetPay.setColumnWidth(0, 2 * 256);// 空 sheetPay.setColumnWidth(1, 10 * 256);// 序号 sheetPay.setColumnWidth(2, 15 * 256);// 应收账款金额 sheetPay.setColumnWidth(3, 10 * 256);// 账款到期日 sheetPay.setColumnWidth(4, 40 * 256);// 项目公司名称 sheetPay.setColumnWidth(5, 40 * 256);// 供应商名称 sheetPay.setColumnWidth(6, 40 * 256);// 供应商开户行 sheetPay.setColumnWidth(7, 30 * 256);// 供应商账号 sheetPay.setColumnWidth(8, 40 * 256);// 合同名称 sheetPay.setColumnWidth(9, 40 * 256);// 合同编号 sheetPay.setColumnWidth(10, 30 * 256);// 账号名称 sheetPay.setColumnWidth(11, 30 * 256);// 付款确认书编号 sheetPay.setColumnWidth(12, 30 * 256);// 内引 sheetPay.setColumnWidth(13, 10 * 256);// 核心企业 sheetPay.setColumnWidth(14, 10 * 256);// 金融机构 sheetPay.setColumnWidth(15, 30 * 256);// 签约主体 sheetPay.setColumnWidth(16, 15 * 256);// 基础合同类别 sheetPay.setColumnWidth(17, 10 * 256);// 期数 sheetPay.setColumnWidth(18, 10 * 256);// 发行日 sheetPay.setColumnWidth(19, 20 * 256);// 项目名称 sheetPay.setColumnWidth(20, 40 * 256);// 发票说明 sheetPay.setColumnWidth(21, 40 * 256);// 绿城标识UUID // 项目公司、区域、区域专员、发票金额(即该付款单的发票总金额)、付款申请编码、导出时间等信息 // 新增的需求 sheetPay.setColumnWidth(22, 10 * 256);// 区域 sheetPay.setColumnWidth(23, 15 * 256);// 区域专员 sheetPay.setColumnWidth(24, 15 * 256);// 发票金额 sheetPay.setColumnWidth(25, 25 * 256);// 付款申请编码 sheetPay.setColumnWidth(26, 20 * 256);// 导出时间 // 付款发票sheet列宽设置 sheetPayInvoice.setColumnWidth(0, 10 * 256);// 批次 sheetPayInvoice.setColumnWidth(1, 10 * 256);// 序号 sheetPayInvoice.setColumnWidth(2, 10 * 256);// 发票号码 sheetPayInvoice.setColumnWidth(3, 15 * 256);// 票据名称 sheetPayInvoice.setColumnWidth(4, 13 * 256);// 开票日期 sheetPayInvoice.setColumnWidth(5, 15 * 256);// 发票金额 sheetPayInvoice.setColumnWidth(6, 15 * 256);// 应收账款金额 // 写入付款通知书表头 for (int i = 0; i < headPayArr.length; i++) { sheetPay.autoSizeColumn(i + 1); headPayCell = headPayRow.createCell(i + 1); headPayCell.setCellValue(headPayArr[i]); headPayCell.setCellStyle(style); } // 写入发票信息表头 for (int i = 0; i < headPayInvoiceArr.length; i++) { sheetPayInvoice.autoSizeColumn(i); headPayInvoiceCell = headPayInvoiceRow.createCell(i); headPayInvoiceCell.setCellValue(headPayInvoiceArr[i]); headPayInvoiceCell.setCellStyle(style); } // 设置单元格样式 XSSFCellStyle cellStyle = workbook.createCellStyle(); // 边框 cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN); // 内容换行 cellStyle.setWrapText(true); // 垂直居中 cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); // 设置单元格字体 XSSFFont font = workbook.createFont(); // 字体样式 font.setFontName("微软雅黑"); // 字体大小 font.setFontHeightInPoints((short) 9); cellStyle.setFont(font); // 加粗 XSSFCell cellPay = null; XSSFRow rowPay = null; // 查询结果不为空 for (int i = 0; i < PayInfoList.size(); i++) { Record recordPay = PayInfoList.get(i); // 序号 Long number = recordPay.get("number"); String orderNumber = null; if (number < 10) { orderNumber = "inv100" + number; } else if (number < 100) { orderNumber = "inv10" + number; } else if (number < 1000) { orderNumber = "inv1" + number; } else { orderNumber = "inv" + number; } String contractType = ""; //合同类型 if (recordPay.get("contractType").equals("1")) { contractType = "工程类"; } else if (recordPay.get("contractType").equals("2")) { contractType = "贸易类"; } // 应收账款金额 Double receiveMoney = Double.parseDouble(recordPay.getBigDecimal("receiveMoney").toString()); // 供应商名称 String supplierName = recordPay.get("supplierName"); // 供应商开户行 String supplierAccountBank = recordPay.get("supplierAccountBank"); // 供应商账号 String supplierAccount = recordPay.get("supplierAccount"); // 合同名称 String contractName = recordPay.get("contractName"); // 合同编号 String contractCode = recordPay.get("contractCode"); //账号名称 String receiverName = recordPay.get("receiverName"); // 核心企业 String coreEnterpriseName = "绿城"; // 金融机构 String financialInstitutionsName = "华夏ABS"; // 签约主体 String signingBodyName = "深圳市前海一方恒融商业保理有限公司"; // 发票说明 String lcInvoiceDescription = recordPay.get("lcInvoiceDescription"); // 绿城标识UUID String paymentId = recordPay.get("paymentId"); //新增需求 // 项目公司、区域、区域专员、发票金额(即该付款单的发票总金额)、付款申请编码、导出时间等信息 // 项目公司 String payyer = recordPay.get("payer"); // 区域 String regionName = recordPay.get("regionName"); // 区域专员 String userName = recordPay.get("userName"); // 发票金额 // Double invoiceMoney = Double.parseDouble(recordPay.getBigDecimal("invoiceMoney").toString()); Double invoiceMoney = Double.parseDouble(recordPay.get("invoiceMoney")); // 付款申请编码 String paymentCode = recordPay.get("paymentCode"); // 导出时间 // 对各元素设值 rowPay = sheetPay.createRow(i + 1); cellPay = rowPay.createCell(1); cellPay.setCellValue(orderNumber); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(2); cellPay.setCellValue(receiveMoney); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(3); cellPay.setCellStyle(cellStyle); //为项目公司赋值 cellPay = rowPay.createCell(4); cellPay.setCellValue(payyer); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(5); cellPay.setCellValue(supplierName); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(6); cellPay.setCellValue(supplierAccountBank); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(7); cellPay.setCellValue(supplierAccount); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(8); cellPay.setCellValue(contractName); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(9); cellPay.setCellValue(contractCode); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(10); cellPay.setCellValue(receiverName); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(11); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(12); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(13); cellPay.setCellValue(coreEnterpriseName); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(14); cellPay.setCellValue(financialInstitutionsName); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(15); cellPay.setCellValue(signingBodyName); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(16); cellPay.setCellValue(contractType); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(17); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(18); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(19); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(20); cellPay.setCellValue(lcInvoiceDescription); cellPay.setCellStyle(cellStyle); cellPay = rowPay.createCell(21); cellPay.setCellValue(paymentId); cellPay.setCellStyle(cellStyle); // 新增需求 // 项目公司、区域、区域专员、发票金额(即该付款单的发票总金额)、付款申请编码、导出时间等信息 //区域 cellPay = rowPay.createCell(22); cellPay.setCellValue(regionName); cellPay.setCellStyle(cellStyle); //区域专员 cellPay = rowPay.createCell(23); cellPay.setCellValue(userName); cellPay.setCellStyle(cellStyle); //发票金额 cellPay = rowPay.createCell(24); cellPay.setCellValue(invoiceMoney); cellPay.setCellStyle(cellStyle); //付款申请编码 cellPay = rowPay.createCell(25); cellPay.setCellValue(paymentCode); cellPay.setCellStyle(cellStyle); //导出时间 cellPay = rowPay.createCell(26); cellPay.setCellValue(exportTime); cellPay.setCellStyle(cellStyle); } // 定义付款发票行信息 XSSFCell cellPayInvoice = null; XSSFRow rowPayInvoice = null; // 查询结果不为空 for (int i = 0; i < PayInvoiceList.size(); i++) { Record recordPayInvoice = PayInvoiceList.get(i); // 序号 Long number = recordPayInvoice.get("number"); String orderNumber = null; if (number < 10) { orderNumber = "inv100" + number; } else if (number < 100) { orderNumber = "inv10" + number; } else if (number < 1000) { orderNumber = "inv1" + number; } else { orderNumber = "inv" + number; } rowPayInvoice = sheetPayInvoice.createRow(i + 1); //批次 cellPayInvoice = rowPayInvoice.createCell(0); cellPayInvoice.setCellStyle(cellStyle); //序号 cellPayInvoice = rowPayInvoice.createCell(1); cellPayInvoice.setCellValue(orderNumber); cellPayInvoice.setCellStyle(cellStyle); //发票号码 cellPayInvoice = rowPayInvoice.createCell(2); cellPayInvoice.setCellValue(recordPayInvoice.getStr("invoiceNo")); cellPayInvoice.setCellStyle(cellStyle); //发票名称 cellPayInvoice = rowPayInvoice.createCell(3); cellPayInvoice.setCellStyle(cellStyle); //开票日期 //datetime转换时间戳 Date billingDate = recordPayInvoice.getDate("billingDate"); String billingDateStr = ""; if (billingDate != null) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); billingDateStr = format.format(billingDate); } cellPayInvoice = rowPayInvoice.createCell(4); cellPayInvoice.setCellValue(billingDateStr); cellPayInvoice.setCellStyle(cellStyle); //发票金额 cellPayInvoice = rowPayInvoice.createCell(5); cellPayInvoice.setCellValue(Double.parseDouble(recordPayInvoice.getBigDecimal("money").toString())); cellPayInvoice.setCellStyle(cellStyle); //应收账款金额 cellPayInvoice = rowPayInvoice.createCell(6); cellPayInvoice.setCellStyle(cellStyle); } // 保存到文件 workbook.write(fout); fout.close(); // 保存文件信息到文件表 String fileUuid = StringUtils.randomUuid(); File file = new File(savePath); FileInfo fileInfo = new FileInfo(); fileInfo.setFile(file); fileInfo.setOriginalFileName(fileName); SysFile saveFile = SysFileUtils.fileInfo2SysFile(fileInfo, null); saveFile.set("uuid", fileUuid); boolean isTrue = saveFile.save(); if (isTrue) { // 保存成功 // 文件上传云端 FileInfo UpFileInfo = this.getFileInfoByUuid(fileUuid); this.upload2cloud(UpFileInfo, true); // 更新绿城付款单数据表对应导出状态为已导出 for (String uuid : uuids) { BizLcPaymentInfo bizLcPaymentInfo = new BizLcPaymentInfo(); bizLcPaymentInfo.set("uuid", uuid); bizLcPaymentInfo.set("isExportFlag", BlConstant.EXPORT_FLAG_1); // 新加设置,对导出时间的设置 bizLcPaymentInfo.set("exportTime",exportTime); ctl.merge(BizLcPaymentInfo.dao.getTable().getComment(), bizLcPaymentInfo); } return fileUuid; } else { return null; } } /** * 如果号码相邻的发票号码没有用“-”连接,就修改为“-”连接 * * @param payUuid 付款单uuid * @return * @throws ActiveRecordException */ private static String createInvoiceDescription(String payUuid) throws ActiveRecordException { // 查询发票号码 String selSql = String.format( "SELECT " + " invoice_no " + "FROM " + " biz_lc_payment_invoice_info " + "WHERE " + " payment_id = ? " + "AND sys_status = 1 " + "ORDER BY " + " invoice_no ASC"); // db查询 List <Record> records = Db.find(selSql, payUuid); BigDecimal b1 = null; BigDecimal b2 = null; if (records.size() == 0) { // 没有发票信息,发票说明为空 return ""; } else if (records.size() == 1) { // 只有一条发票信息 return records.get(0).get("invoiceNo"); } else if (records.size() == 2) { // 只有两条发票信息 b1 = new BigDecimal(records.get(0).get("invoiceNo").toString()); b2 = new BigDecimal(records.get(1).get("invoiceNo").toString()); // 判断发票号码是否相邻 if (b2.compareTo(b1.add(new BigDecimal(1))) == 0) { // 相邻 return records.get(0).get("invoiceNo").toString() + "-" + records.get(1).get("invoiceNo").toString(); } else { // 不相邻 return records.get(0).get("invoiceNo").toString() + "," + records.get(1).get("invoiceNo").toString(); } } else { // 发票信息记录数大于2 String tmpRtnStr = records.get(0).get("invoiceNo"); String rtnStr = ""; for (int i = 1; i < records.size(); i++) { b1 = new BigDecimal(records.get(i - 1).get("invoiceNo").toString()); b2 = new BigDecimal(records.get(i).get("invoiceNo").toString()); if (b2.compareTo(b1.add(new BigDecimal("1"))) == 0) { // 当前两个发票号码相邻 } else { // 当前两个发票号码不相邻 if (new BigDecimal(tmpRtnStr) .compareTo(new BigDecimal(records.get(i - 1).get("invoiceNo").toString())) == 0) { rtnStr = rtnStr + records.get(i - 1).get("invoiceNo").toString() + ","; } else { tmpRtnStr = tmpRtnStr + "-" + records.get(i - 1).get("invoiceNo").toString(); rtnStr = rtnStr + tmpRtnStr + ","; } tmpRtnStr = records.get(i).get("invoiceNo").toString(); } if (i == records.size() - 1) { if ((new BigDecimal(tmpRtnStr)) .compareTo(new BigDecimal(records.get(i).get("invoiceNo").toString())) == 0) { } else { tmpRtnStr += "-" + records.get(i).get("invoiceNo").toString(); } rtnStr = rtnStr + tmpRtnStr + ","; } } return rtnStr.substring(0, rtnStr.length() - 1); } } /** * 获取附件 * * @param ctl * @throws Exception */ @Before(Tx.class) public int download(QhyfController ctl) throws Exception { String annex = ""; String uuid = ctl.getPara("uuid"); String sql = "SELECT payment_id FROM biz_lc_payment_info WHERE uuid = ? and sys_status = 1"; Record only = Db.findFirst(sql, uuid); if (only != null) { annex = only.getStr("paymentId"); } QhyfGetLcAttachmentService qhyfGetLcAttachmentService = new QhyfGetLcAttachmentService(); int ret = qhyfGetLcAttachmentService.PaymentListAttachmentIAnformation(ctl, annex); return ret; } /** * 附件下载 * * @throws Exception */ @Before(Tx.class) public String getziofile(QhyfController ctl) throws Exception { FileInfo fileInfo = null; FileInfo fileInfoAddress = null; List <FileInfo> fileInfos = new ArrayList <FileInfo>(); //查询当前UUID的绿城唯一UUID String uuid = ctl.getPara("uuid"); String sql = "SELECT payment_id,payment_code FROM biz_lc_payment_info WHERE uuid = ? and sys_status = 1 "; Record lcPaymentInfo = Db.findFirst(sql, uuid); String paymentId = lcPaymentInfo.getStr("paymentId"); String paymentCode = lcPaymentInfo.getStr("paymentCode"); //查找绿城附件ID String filesql = " " + " SELECT " + " a.file_id ," + " b.file_name " + " FROM " + " biz_lc_payment_file a ," + " sys_file b " + " WHERE " + " payment_id = ? " + " and a.file_id=b.uuid " + " and b.sys_status =1 and a.sys_status = 1"; List <Record> fileinfoList = Db.find(filesql, paymentId); if (fileinfoList == null || fileinfoList.size() <= 0) { AssertUtils.isTrue(false, "该付款单没有可下载附件,请先获取附件"); } // 定义打包文件的路径 DateFormat format = new java.text.SimpleDateFormat("yyyyMMddhhmmss"); String time = format.format(new Date()); String address = paymentCode + "绿城附件包_" + time + ".zip"; fileInfoAddress = new FileInfo(address); // 调用共通方法【文件打包】 fileInfo = new FileInfo(null); // 定义基础路径 String basePath = StringUtils.randomUuid(); //读取文件信息 for (Record fileinfo : fileinfoList) { String fileName = fileinfo.get("fileName").toString(); fileName = fileName.substring(0, fileName.lastIndexOf(".")); // 根据文件uuid和临时目录从阿里云下载文件 FileInfo file = ctl.getService(DownloadFilesFromCloudService.class).downloadFile(fileinfo.get("fileId"), basePath, fileName); fileInfos.add(file); } //压缩文件 FileInfo[] fileInfoArray = new FileInfo[fileInfos.size()]; for (int m = 0, lengthOfFile = fileInfos.size(); m < lengthOfFile; m++) { fileInfoArray[m] = fileInfos.get(m); } fileInfo = ctl.getService(QhyfAbstractService.class).compressionLocation(fileInfoArray, fileInfoAddress, null, null, null, null, true); // 获取压缩文件ID String filePath = fileInfo.getUuid(); return filePath; } /** * 获取区域的下拉框数据 * @throws Exception */ public List<Record> initRegion() throws Exception { String sql ="SELECT " + "DISTINCT c.uuid as region_id, " + " c.region_name " + "FROM " + " biz_item_region c " + "WHERE " + " c.sys_status = 1 " + "AND c.core_enterprise_id = ‘c1008‘ " ; List<Record> regionRecord = Db.find(sql); return regionRecord ; } /** * 获取区域专员的下拉框数据 * @throws Exception */ public List<Record> initRegionCommissioner() throws Exception { String sql = "SELECT DISTINCT " + " b.uuid as user_id, " + " b.user_name " + "FROM " + " biz_link_marketer_region a, " + " sys_user b " + "WHERE " + " a.core_enterprise_id = ‘c1008‘ " + "AND a.sys_status = 1 " + "AND b.sys_status = 1 " + "AND a.marketer_id LIKE CONCAT(‘%%‘,b.uuid,‘%%‘) ORDER BY a.uuid "; List<Record> regionRecordCommissioner = Db.find(sql); return regionRecordCommissioner ; } /** * 获取:推送补资料 * * @param ctl * @throws Exception */ public boolean updateStatus(QhyfController ctl) throws Exception { boolean isOk = false ; String uuid = ctl.getPara("uuid"); // 付款进度状态同步接口,推送 业务状态为40001(ABS退回)、状态码为4000101(补资料) if (StringUtils.notBlank(uuid)) { ctl.getService(QhyfToLCSendCheckStateService.class).pushMessageStatus(ctl, uuid, BlConstant.LC_BUINNESS_STATE_01, BlConstant.FILL_MATERIAL_0101); isOk = true; } return isOk ; } /** * 批量下载附件 * @param ctl * @throws Exception */ @Before(Tx.class) public Map<String, Object> batchDownload(QhyfController ctl) throws Exception{ //首先获取符合查询条件的付款单 // 查询画面列表付款单信息 List <Record> payInfoList = Db.find(selectSql + fromSql(ctl)); AssertUtils.notNull(payInfoList,"所要下载的文件为空"); // 然后遍历每一笔的付款单,获取去对应的附件数据,有就有,没有就为空 List <Record> fileinfoList = null; //空folder标志:true--空folder;false--非空foler boolean isNullFolder = true; //随机生成码 String randomUuid = StringUtils.randomUuid(); // 定义一个存放 文件uuid的盒子 Map<String, Object> data = new HashMap<String, Object>(); //压缩目标路径共通前缀 String targetDirCommon = EnvironmentUtils.me().getEnv().getGeneratePath()+File.separator+randomUuid+File.separator; File parentDir = new File(targetDirCommon); //判断文件目录是否存在 if (!parentDir.exists()) {//不存在--新建目录 parentDir.mkdirs(); } //目标文件folder List<FileInfo> fileInfoList = new ArrayList<FileInfo>(); for (Record lcPayInfo : payInfoList){ String paymentId = lcPayInfo.getStr("paymentId"); String paymentCode = lcPayInfo.getStr("paymentCode"); //查找绿城附件ID String filesql = " " + " SELECT " + " a.file_id ," + " b.file_name " + " FROM " + " biz_lc_payment_file a ," + " sys_file b " + " WHERE " + " payment_id = ? " + " and a.file_id=b.uuid " + " and b.sys_status =1 and a.sys_status = 1"; //获取每一笔付款单的附件数 fileinfoList = Db.find(filesql, paymentId); // 当前文件夹 String curFileDir = targetDirCommon + paymentCode + File.separator; if(fileinfoList != null && fileinfoList.size()>0){ //读取文件信息 for (Record fileinfo : fileinfoList) { //构造压缩文件信息:文件名、存储路径 FileInfo curFileInfo; String curFileUuid = fileinfo.get("fileId"); // 文件名称 String fileName = fileinfo.getStr("fileName"); // 获取文件名称,除去后缀名 fileName = fileName.substring(0,fileName.lastIndexOf(".")); //从云端下载文件到指定目录 curFileInfo = this.downloadFileFromOss(curFileUuid, curFileDir, fileName); AssertUtils.notNull(curFileInfo, AlertUtils.getErrMsgWithCode("ME441E007")); //修改文件空folder标志 isNullFolder = false; } FileInfo targetFileInfoFolder = new FileInfo(curFileDir); fileInfoList.add(targetFileInfoFolder); } } // 外面最大的文件夹 //文件夹非空时 if(!isNullFolder){ // 目标文件folder (最外层的) FileInfo targetFileInfoFolder = new FileInfo(targetDirCommon); // 目标文件folder FileInfo[] targetFileFolder = new FileInfo[1]; targetFileFolder[0] = targetFileInfoFolder; // 定义打包文件的路径 DateFormat format = new SimpleDateFormat("yyyyMMddhhmmss"); String time = format.format(new Date()); String address = "绿城附件包_" + time + ".zip"; FileInfo fileInfoAddress = new FileInfo(address); FileInfo[] strings = new FileInfo[fileInfoList.size()]; fileInfoList.toArray(strings); //压缩 FileInfo compredPackageInfo = ctl.getService(QhyfAbstractService.class).compressionLocation(strings, fileInfoAddress, null, null, null, null, true); // 获取压缩文件ID String filePath = compredPackageInfo.getUuid(); //递归删除临时文件 StringTools.isTrue(this.deleteAllDirAndFile(new File(EnvironmentUtils.me().getEnv().getGeneratePath()+File.separator+randomUuid+File.separator))); //返回压缩文件id data.put("downloadList",filePath); } return data; } /** * 从云端获取文件--下载到本地 * @param fileUuid * 文件Uuid * @param targetPath * 下载目标路径 * @param storeFileName * 文件名 * @return FileInfo 下载后的文件信息 * @throws Exception */ public FileInfo downloadFileFromOss(String fileUuid, String targetPath, String storeFileName) throws Exception { //文件下载对象 IFileReader AliReader = new AliOssReaderImpl(); //根据文件id获取文件信息 FileInfo fileInfo = this.getFileInfo(fileUuid); //设置文件名 = 文件名+后缀 storeFileName = storeFileName + "." +fileInfo.getType(); fileInfo.setStorePath(targetPath + storeFileName); fileInfo.setFileName(storeFileName); //数据库中路径 String dbStorePath = fileInfo.getStorePath(); //判断分离器,Windows环境下和Linux环境下不同 if(dbStorePath.contains("\\")){ dbStorePath = dbStorePath.substring(dbStorePath.lastIndexOf("\\")+1); }else if(dbStorePath.contains("/")){ dbStorePath = dbStorePath.substring(dbStorePath.lastIndexOf("/")+1); } //构造路径 String absolutePathParm = String.format( "%s",targetPath); //最终路径 String path = club.newepoch.utils.FileUtils.getAbsolutePath(absolutePathParm, dbStorePath); fileInfo.setStorePath(path); //下载文件到本地 if(!club.newepoch.utils.FileUtils.exists(path)){ Files.createParentDirs(club.newepoch.utils.FileUtils.getFile(fileInfo.getStorePath())); AliReader.read(fileInfo, NioUtils.DEFAULT_CHARSETS ,new IInputStreamCallback(){ @Override public void executeInputStream(InputStream inputStream, FileInfo saveFileInfo) throws Exception { // 写入到本地文件 NioUtils.write2file(fileInfo.getStorePath(), inputStream, NioUtils.DEFAULT_CHARSETS); } }); } File nfile = new File(club.newepoch.utils.FileUtils.getAbsolutePath(fileInfo.getStorePath())); fileInfo.setFile(nfile); return fileInfo; } /** * 递归删除文件及文件夹下所有文件 * * @param dir * 将要删除的文件目录 * @return true/false * 删除成功与否 */ public boolean deleteAllDirAndFile(File dir) { if (dir.isDirectory()) {//是目录 String[] children = dir.list(); //递归删除目录中所有文件 for (int i=0; i<children.length; i++) { boolean success = deleteAllDirAndFile(new File(dir, children[i])); if (!success) { return false; } } } // 目录此时为空,可以删除 return dir.delete(); } }
//注册【推送补资料】点击事件
$("#LcPaymentOrderExportAdmin_dt tbody").on("click", "#LcPaymentOrderExportAdmin_filMaterial", function () {
if (confirm("确认向绿城接口推送补资料状态?")) {
var rowIndex = $(this).parents("tr").prop(‘_DT_RowIndex‘);
var rowData = getDtRowInfo(LcPaymentOrderExportAdmin.dt, null, rowIndex);
openLoading("推送补资料中,请稍后");
ajax_jsonp("/app/bl/lcpaymentorderexport/updateStatus/", {"uuid": rowData[0].data.uuid}, function (response) {
// 校验response
closeLoading();
if (!checkResponseData(response)) {
alertMsg("推送补资料失败!");
return;
}else {
alertMsg("推送补资料成功!");
}
}, null, "GET");
}
})
//【批量下载】 点击事件
$("#LcPaymentOrderExportAdminForm").find("#batchDownload").on("click", function () {
if(confirm("确定批量下载当前的付款单的附件吗?")){
openLoading("下载中,请稍后");
ajax_jsonp("/app/bl/lcpaymentorderexport/batchDownload/", LcPaymentOrderExportAdmin.getQueryPara(), function (response) {
closeLoading();
if (!checkResponseData(response)) {
closeLoading();
return;
}
if(response.data.length>0){
downloadFile(response.data[0].downloadList);
}else {
alertMsg("当前批量下载数据为空!");
}
LcPaymentOrderExportAdmin.dt.draw();
}, null, "PUT");
}
});
标签:sse override 打包 .data mat cti etc 账号 exp
原文地址:https://www.cnblogs.com/xiaowoniulx/p/10244521.html