From c7c18bd88edafcc644d5eb8aedab612308048383 Mon Sep 17 00:00:00 2001 From: "lisai17@sina.com" Date: Mon, 23 Nov 2020 22:44:58 +0800 Subject: [PATCH] . --- .../ssjygl/stat/sale/OrderStatService.java | 170 +++++++++++++++++- .../ssjygl/stat/sale/OrderStatController.java | 26 +++ .../ssjygl/stat/sale/OrderStatController.java | 26 +++ 3 files changed, 220 insertions(+), 2 deletions(-) diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java index 0285987..b1e9094 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/sale/OrderStatService.java @@ -1516,9 +1516,78 @@ public class OrderStatService { row = sheet.createRow(i + 1); a = 0; row.createCell(a++).setCellValue(order.getStr("name")); - if(order.get("cnt") != null){ + if (order.get("cnt") != null) { row.createCell(a++).setCellValue(order.getInt("cnt")); - }else{ + } else { + row.createCell(a++).setCellValue(""); + } + row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_weight")); + row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_price")); + } + + ReportExcelStyle.setCommonCellStyle(wb, sheet, datalen, end_col); + + return wb; + } + + public List yearStatBySup(String stm, String etm) { + List list = Db.find("select s.id, s.name, a.cnt, a.total_price, a.total_weight from supermarket s\n" + + "left join (\n" + + " select t.supermarket_id id, count(t.sn) cnt, sum(t.total_price) total_price, sum(weight) total_weight from order_temp t\n" + + " where t.state = 5\n" + + " and t.create_time >= ? \n" + + " and t.create_time <= ? \n" + + " group by t.supermarket_id\n" + + ") a on s.id = a.id order by s.id", stm, etm); + + Record hj = new Record(); + hj.set("id", 0); + hj.set("name", "合计"); + hj.set("cnt", 0); + hj.set("total_price", new BigDecimal(0)); + hj.set("total_weight", new BigDecimal(0)); + + for (Record record : list) { + if (record.get("cnt") != null) { + hj.set("cnt", hj.getInt("cnt") + record.getInt("cnt")); + } + if (record.get("total_price") != null) { + hj.set("total_price", hj.getBigDecimal("total_price").add(record.getBigDecimal("total_price"))); + } + if (record.get("total_weight") != null) { + hj.set("total_weight", hj.getBigDecimal("total_weight").add(record.getBigDecimal("total_weight"))); + } + } + + list.add(hj); + + return list; + } + + public Workbook yearStatBySupExport(String stm, String etm) { + List list = yearStatBySup(stm, etm); + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet(stm.substring(0, 10) + " ~ " + etm.substring(0, 10) + "年销售汇总"); + + // 表头 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("总销售额"); + + int end_col = 4; + 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(order.getStr("name")); + if (order.get("cnt") != null) { + row.createCell(a++).setCellValue(order.getInt("cnt")); + } else { row.createCell(a++).setCellValue(""); } row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_weight")); @@ -1595,6 +1664,103 @@ public class OrderStatService { } + // 表头 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("客户总余额"); + + int end_col = 5; + int datalen = list.size(); + Record hj = null; + + for (int i = 0; i < datalen; i++) { + Record order = list.get(i); + + row = sheet.createRow(i + 1); + a = 0; + + if (order.getInt("id") == 0) { + hj = order; + } + + row.createCell(a++).setCellValue(order.getStr("name")); + row.createCell(a++).setCellValue(order.getInt("cnt")); + row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_weight")); + row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_price")); + row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_surplus")); + } + + if (hj != null) { + row = sheet.createRow(datalen + 1); + a = 0; + + row.createCell(a++).setCellValue("账户总余额"); + row.createCell(a++).setCellValue(""); + row.createCell(a++).setCellValue(""); + row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(hj, "total_account_surplus")); + row.createCell(a++).setCellValue(""); + } + + sheet.addMergedRegion(new CellRangeAddress(datalen + 1, datalen + 1, 3, 4));// 下标从0开始 起始行号,终止行号, 起始列号,终止列号 + ReportExcelStyle.setCommonCellStyle(wb, sheet, datalen + 1, end_col); + + return wb; + } + + + public List yearStatByCustomer(String stm, String etm) { + List list = Db.find("select ifnull(c.name, '零散') name, a.*, p.surplus total_surplus from (\n" + + " select ifnull(t.customer_id, -1) id, count(t.sn) cnt, sum(t.total_price) total_price, sum(weight) total_weight from order_temp t\n" + + " where t.state = 5\n" + + " and t.create_time >= ? \n" + + " and t.create_time <= ? \n" + + " group by t.customer_id\n" + + " ) a\n" + + " left join customer c on c.id = a.id\n" + + " left join prepay_customer p on p.customer_id = a.id", stm, etm); + + + Record hj = new Record(); + hj.set("id", 0); + hj.set("name", "合计"); + hj.set("cnt", 0); + hj.set("total_price", new BigDecimal(0)); + hj.set("total_weight", new BigDecimal(0)); + hj.set("total_weight", new BigDecimal(0)); + hj.set("total_surplus", new BigDecimal(0)); + + for (Record record : list) { + if (record.get("cnt") != null) { + hj.set("cnt", hj.getInt("cnt") + record.getInt("cnt")); + } + if (record.get("total_price") != null) { + hj.set("total_price", hj.getBigDecimal("total_price").add(record.getBigDecimal("total_price"))); + } + if (record.get("total_weight") != null) { + hj.set("total_weight", hj.getBigDecimal("total_weight").add(record.getBigDecimal("total_weight"))); + } + if (record.get("total_surplus") != null) { + hj.set("total_surplus", hj.getBigDecimal("total_surplus").add(record.getBigDecimal("total_surplus"))); + } + } + + hj.set("total_account_surplus", hj.getBigDecimal("total_surplus").add(hj.getBigDecimal("total_price"))); + + list.add(hj); + + return list; + } + + + public Workbook yearStatByCustomerExport(String stm, String etm) { + List list = yearStatByCustomer(stm, etm); + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet(stm.substring(0, 10) + " ~ " + stm.substring(0, 10) + "时段销售汇总"); + // 表头 start Row row = sheet.createRow(0); int a = 0; diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/stat/sale/OrderStatController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/stat/sale/OrderStatController.java index 1f6b69a..dd7a6d6 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/stat/sale/OrderStatController.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/stat/sale/OrderStatController.java @@ -302,4 +302,30 @@ public class OrderStatController extends BaseController { render(new ExcelRender("按砂站总销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb)); } } + + @Before(StartAndEndIntervalValidator.class) + public void statRangeAllCustomer() { + String stm = get("stm"); + String etm = get("etm"); + int export = getInt("export", 0); // 是否导出为exce 0 不导出,1 导出 + if (export == 0) { + renderJson(Result.object(OrderStatService.me.yearStatByCustomer(stm, etm))); + } else { + Workbook wb = OrderStatService.me.yearStatByCustomerExport(stm, etm); + render(new ExcelRender("按客户统计总销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb)); + } + } + + @Before(StartAndEndIntervalValidator.class) + public void statRangeAllSup() { + String stm = get("stm"); + String etm = get("etm"); + int export = getInt("export", 0); // 是否导出为exce 0 不导出,1 导出 + if (export == 0) { + renderJson(Result.object(OrderStatService.me.yearStatBySup(stm, etm))); + } else { + Workbook wb = OrderStatService.me.yearStatBySupExport(stm, etm); + render(new ExcelRender("按砂站总销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb)); + } + } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/stat/sale/OrderStatController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/stat/sale/OrderStatController.java index 9340e0f..e7695e7 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/stat/sale/OrderStatController.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/stat/sale/OrderStatController.java @@ -363,4 +363,30 @@ public class OrderStatController extends BaseController { render(new ExcelRender("按砂站总销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb)); } } + + @Before(StartAndEndIntervalValidator.class) + public void statRangeAllCustomer() { + String stm = get("stm"); + String etm = get("etm"); + int export = getInt("export", 0); // 是否导出为exce 0 不导出,1 导出 + if (export == 0) { + renderJson(Result.object(OrderStatService.me.yearStatByCustomer(stm, etm))); + } else { + Workbook wb = OrderStatService.me.yearStatByCustomerExport(stm, etm); + render(new ExcelRender("按客户统计总销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb)); + } + } + + @Before(StartAndEndIntervalValidator.class) + public void statRangeAllSup() { + String stm = get("stm"); + String etm = get("etm"); + int export = getInt("export", 0); // 是否导出为exce 0 不导出,1 导出 + if (export == 0) { + renderJson(Result.object(OrderStatService.me.yearStatBySup(stm, etm))); + } else { + Workbook wb = OrderStatService.me.yearStatBySupExport(stm, etm); + render(new ExcelRender("按砂站总销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb)); + } + } }