diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/log/InvoiceLogService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/log/InvoiceLogService.java index 5dfbf8e..e796ec7 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/log/InvoiceLogService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/invoice/log/InvoiceLogService.java @@ -2,12 +2,18 @@ package com.cowr.ssjygl.invoice.log; import com.cowr.common.Const; import com.cowr.common.base.BaseService; +import com.cowr.common.utils.DataUtil; +import com.cowr.common.utils.DateTimeUtil; import com.cowr.common.view.PageParam; import com.cowr.model.InvoiceLog; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.util.ArrayList; import java.util.List; @@ -94,4 +100,129 @@ public class InvoiceLogService extends BaseService { return Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray()); } + + public Workbook export(String invoice_number, Integer supermarket_id, Integer state, String order_sn, String stm, String etm, String code, Integer invoice_type) { + String selectsql = "select t.*, r.supermarket_id, s.name supermarket_name, \n" + + " tr.first_weight, tr.second_weight, \n" + + " case when t.type = 1 then o.weight when t.type = 3 then p.weight end weight, \n" + + " case when t.type = 1 then o.total_price when t.type = 3 then p.total_price end total_price, \n" + + " case when t.type = 1 then o.create_time when t.type = 3 then p.create_time end order_create_time, \n" + + " case when t.type = 1 then o.settlement_user_name when t.type = 3 then p.settlement_user_name end settlement_user_name, \n" + + " case when t.type = 1 then o.truck_license when t.type = 3 then p.truck_license end truck_license, \n" + + " case when t.type = 1 then o.customer_texpayer_name when t.type = 3 then p.customer_texpayer_name end customer_texpayer_name, \n"+ + " case when t.type = 1 then o.customer_texpayer_num when t.type = 3 then p.customer_texpayer_num end customer_texpayer_num, \n"+ + " case when t.type = 1 then o.customer_name when t.type = 3 then p.customer_name end customer_name "; + String fromsql = "from invoice_log t \n" + + " left join invoice_receive r on r.id = t.invoice_receive_id \n" + + " left join supermarket s on s.id = r.supermarket_id \n" + + " left join order_sale o on o.sn = t.order_sn \n" + + " left join order_temp p on p.sn = t.order_sn \n" + + " left join transport tr on tr.order_sn = t.order_sn \n" + + " where 1=1 \n"; + List paraList = new ArrayList<>(); + + if (supermarket_id != null) { + fromsql += " and r.supermarket_id = ? \n"; + paraList.add(supermarket_id); + } + + if (state != null) { + fromsql += " and t.state = ? \n"; + paraList.add(state); + } + + if (StrKit.notBlank(order_sn)) { + fromsql += " and t.order_sn like ? \n"; + paraList.add("%" + order_sn + "%"); + } + + if (StrKit.notBlank(invoice_number)) { + fromsql += " and t.invoice_number like ? \n"; + paraList.add("%" + invoice_number + "%"); + } + + if (StrKit.notBlank(stm)) { + fromsql += " and t.create_time >= ? \n"; + paraList.add(stm); + } + + if (StrKit.notBlank(etm)) { + fromsql += " and t.create_time <= ? \n"; + paraList.add(etm); + } + + if (StrKit.notBlank(code)) { + fromsql += " and t.code like ? \n"; + paraList.add("%" + code + "%"); + } + + if (invoice_type != null) { + fromsql += " and t.invoice_type = ? \n"; + paraList.add(state); + } + + String totalRowSql = "select count(*) " + fromsql; + String findSql = selectsql + fromsql + " order by t.create_time desc"; + List list = Db.find(findSql, paraList.toArray()); + + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet("发票使用日志"); + + // 表头 start + Row row = sheet.createRow(0); + int a = 0; + row.createCell(a++).setCellValue("序号"); + row.createCell(a++).setCellValue("发票代码"); + row.createCell(a++).setCellValue("发票编号"); + row.createCell(a++).setCellValue("发票类型"); + row.createCell(a++).setCellValue("开票名称"); + row.createCell(a++).setCellValue("开票税号"); + row.createCell(a++).setCellValue("订单号"); + row.createCell(a++).setCellValue("开票时间"); + row.createCell(a++).setCellValue("总价"); + row.createCell(a++).setCellValue("开票人"); + row.createCell(a++).setCellValue("作废人"); + row.createCell(a++).setCellValue("车牌号"); + row.createCell(a++).setCellValue("状态"); + row.createCell(a++).setCellValue("砂站"); + row.createCell(a++).setCellValue("数量(吨)"); + row.createCell(a++).setCellValue("皮重(吨)"); + row.createCell(a++).setCellValue("毛重(吨)"); + // 表头 end + + int datalen = list.size(); + for (int i = 0; i < datalen; i++) { + Record order = list.get(i); + + row = sheet.createRow(i + 1); + a = 0; + row.createCell(a++).setCellValue(i + 1); + row.createCell(a++).setCellValue(order.getStr("invoice_number")); + row.createCell(a++).setCellValue(order.getStr("code")); + row.createCell(a++).setCellValue(order.getInt("invoice_type") == 2 ? "专票" : "普票"); + row.createCell(a++).setCellValue(order.getStr("customer_texpayer_name")); + row.createCell(a++).setCellValue(order.getStr("customer_texpayer_num")); + row.createCell(a++).setCellValue(order.getStr("order_sn")); + row.createCell(a++).setCellValue(DateTimeUtil.sdfhms.get().format(order.getDate("create_time"))); + row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_price")); + row.createCell(a++).setCellValue(order.getStr("settlement_user_name")); + row.createCell(a++).setCellValue(order.getStr("invalid_user_name")); + row.createCell(a++).setCellValue(order.getStr("truck_license")); + switch (order.getInt("state")) { + case 5: + row.createCell(a++).setCellValue("已使用"); break; + case 9: + row.createCell(a++).setCellValue("已作废"); break; + default: + row.createCell(a++).setCellValue(""); + } + + row.createCell(a++).setCellValue(order.getStr("supermarket_name")); + row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "weight")); + row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "first_weight")); + row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "second_weight")); + } + + return wb; + } } diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogController.java index 7770b4d..e7c23d7 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogController.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/invoice/log/InvoiceLogController.java @@ -1,5 +1,7 @@ package com.cowr.local.ssjygl.invoice.log; +import com.cowr.common.validator.StartAndEndIntervalValidator; +import com.cowr.common.view.ExcelRender; import com.cowr.common.view.PageParam; import com.cowr.common.view.Result; import com.cowr.local.ssjygl.system.sysuser.SysuserSyncService; @@ -9,6 +11,7 @@ import com.cowr.ssjygl.invoice.log.InvoiceLogPKValidator; import com.cowr.ssjygl.invoice.log.InvoiceLogService; import com.jfinal.aop.Before; import com.jfinal.core.Controller; +import org.apache.poi.ss.usermodel.Workbook; /** * Generated by COWR Thu Aug 13 23:09:29 CST 2020 @@ -46,6 +49,22 @@ public class InvoiceLogController extends Controller { renderJson(Result.object(InvoiceLogService.me.find(pp, invoice_number, supermarket_id, state, order_sn, stm, etm, code, invoice_type))); } + @Before(StartAndEndIntervalValidator.class) + public void export() { + Integer supermarket_id = getInt("supermarket_id"); + Integer state = getInt("state"); + String invoice_number = get("invoice_number"); + String order_sn = get("order_sn"); + String stm = get("stm"); + String etm = get("etm"); + String code = get("code"); + Integer invoice_type = getInt("invoice_type"); + + Workbook wb = InvoiceLogService.me.export(invoice_number, supermarket_id, state, order_sn, stm, etm, code, invoice_type); + + render(new ExcelRender("发票使用日志_" + System.currentTimeMillis() + ".xlsx", wb)); + } + /** * 按主键查找单个对象 invoice_log 发票管理 - 发票使用记录 */ diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportQueryService.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportQueryService.java index 318b371..cc7c8bf 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportQueryService.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/transport/TransportQueryService.java @@ -123,6 +123,7 @@ public class TransportQueryService { // transobj.set("next_invoice_code", InvoiceReceiveService.me.nextInvoiceCode(transport.getSupermarketId())); // 2020-09-21 加了发票代码 transobj.set("invoice_numbers", InvoiceReceiveService.me.nextInvoiceCode(transport.getSupermarketId())); // TODO 专票? + transobj.set("req_receipt", ordercluster.getReqReceipt()); // TODO 2020-10-12 如果放开购买,连零散购砂都不做配额了,这里需要修改 return Result.success(transobj); } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/log/InvoiceLogController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/log/InvoiceLogController.java index e86e48e..a6f98ab 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/log/InvoiceLogController.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/log/InvoiceLogController.java @@ -1,5 +1,7 @@ package com.cowr.service.ssjygl.invoice.log; +import com.cowr.common.validator.StartAndEndIntervalValidator; +import com.cowr.common.view.ExcelRender; import com.cowr.common.view.PageParam; import com.cowr.common.view.Result; import com.cowr.model.InvoiceLog; @@ -10,6 +12,7 @@ import com.cowr.ssjygl.invoice.log.InvoiceLogService; import com.cowr.ssjygl.invoice.log.InvoiceLogValidator; import com.jfinal.aop.Before; import com.jfinal.core.Controller; +import org.apache.poi.ss.usermodel.Workbook; /** * Generated by COWR Thu Aug 13 23:09:29 CST 2020 @@ -47,6 +50,22 @@ public class InvoiceLogController extends Controller { renderJson(Result.object(InvoiceLogService.me.find(pp, invoice_number, supermarket_id, state, order_sn, stm, etm, code, invoice_type))); } + @Before(StartAndEndIntervalValidator.class) + public void export() { + Integer supermarket_id = getInt("supermarket_id"); + Integer state = getInt("state"); + String invoice_number = get("invoice_number"); + String order_sn = get("order_sn"); + String stm = get("stm"); + String etm = get("etm"); + String code = get("code"); + Integer invoice_type = getInt("invoice_type"); + + Workbook wb = InvoiceLogService.me.export(invoice_number, supermarket_id, state, order_sn, stm, etm, code, invoice_type); + + render(new ExcelRender("发票使用日志_" + System.currentTimeMillis() + ".xlsx", wb)); + } + /** * 按主键查找单个对象 invoice_log 发票管理 - 发票使用记录 */