From 7791a585b5709ab5a4add73eeac0071e8d16656c Mon Sep 17 00:00:00 2001 From: wuwenxiong <646448316@qq.com> Date: Fri, 7 Jan 2022 15:29:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A1=E7=AE=97=E4=BD=99?= =?UTF-8?q?=E9=A2=9D=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cowr/ssjygl/prepay/PrepayService.java | 2 +- .../presellorder/PresellOrderService.java | 43 +++++++---- .../stat/customer/CustomerStatService.java | 1 + .../ssjygl/stat/sale/OrderStatService.java | 75 ++++++++++++++----- .../order/ordertemp/OrderTempSyncService.java | 2 +- .../ssjygl/stat/sale/OrderStatController.java | 5 +- .../receive/InvoiceReceiveSyncService.java | 8 +- .../ordercluster/OrderclusterSyncService.java | 6 +- .../receive/TicketReceiveSyncService.java | 8 +- 9 files changed, 93 insertions(+), 57 deletions(-) diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/prepay/PrepayService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/prepay/PrepayService.java index 71409d5..fbd1f93 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/prepay/PrepayService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/prepay/PrepayService.java @@ -141,7 +141,7 @@ public class PrepayService { //获取账户可用余额 BigDecimal availableBalance = RefundDetailService.me.getAvailableBalance(prepayCustomer.getCustomerId(), prepayCustomer.getSurplus()); if (ordercluster.getSaleType() == 1) { - availableBalance = PresellOrderService.me.getPresellCustomerSurplusById(ordercluster.getPresellOrderId()); + availableBalance = PresellOrderService.me.getPresellCustomerSurplusById(ordercluster.getCustomerId()); } out.set("prepay_truck", true); out.set("prepay_threshold", prepayCustomer.getThreshold()); diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellorder/PresellOrderService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellorder/PresellOrderService.java index 3b4e2ff..dd22384 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellorder/PresellOrderService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/presellorder/PresellOrderService.java @@ -163,21 +163,32 @@ public class PresellOrderService extends BaseService { return PresellOrder.dao.find(sql, paraList.toArray()); } - public BigDecimal getPresellCustomerSurplusById(String id) { - String sql = "select t.presell_amount - ifnull(g.total_price, 0) surplus from presell_order t\n" + - " left join ( \n" + - "SELECT\n" + - " o.presell_order_id,\n" + - " SUM(d.total_price) total_price\n" + - "FROM\n" + - " `order_temp` d\n" + - "LEFT JOIN ordercluster o ON d.ordercluster_id = o.id\n" + - "WHERE\n" + - " d.sale_type = 1\n" + - "AND d.state = 5\n" + - "GROUP BY\n" + - " o.presell_order_id" + ") g on g.presell_order_id = t.id\n" + - "WHERE t.id = ?"; - return Db.queryBigDecimal(sql, id); + public BigDecimal getPresellCustomerSurplusById(Integer id) { + List params = new ArrayList<>(); + params.add(id); + params.add(id); + String sql = "SELECT\n" + + " (\n" + + " SELECT\n" + + " sum(t.presell_amount)\n" + + " FROM\n" + + " presell_order t\n" + + " WHERE\n" + + " t.del = 0\n" + + " AND t.customer_id = ?\n" + + " ) - (\n" + + " SELECT\n" + + " sum(\n" + + " t.total_weight * t.unit_price\n" + + " )\n" + + " FROM\n" + + " ordercluster t\n" + + " WHERE\n" + + " t.sale_type = 1\n" + + " AND t.state < 5\n" + + " AND t.customer_id = ?\n" + + " ) as surplus"; + BigDecimal out = Db.queryBigDecimal(sql, params.toArray()); + return out == null ? new BigDecimal(0) : out; } } diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/customer/CustomerStatService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/customer/CustomerStatService.java index 5b6a70b..405e358 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/customer/CustomerStatService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/stat/customer/CustomerStatService.java @@ -51,6 +51,7 @@ public class CustomerStatService { " where t.customer_id is not null\n" + " and t.create_time <= ? \n" + " and t.state = 5\n" + + " and t.sale_type = 0\n" + customerSql + " group by t.customer_id\n"; 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 1474ce9..e9f329c 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 @@ -3026,7 +3026,7 @@ public class OrderStatService { " left join (\n" + " select t.id, t.product_id, count(*) as orderCount, sum(t.total_price) as totalPrice, sum(t.weight) as weight\n" + " from (\n" + - " select t.supermarket_id as id, t.paid, t.total_price, t.weight, t.product_id\n" + + " select t.supermarket_id as id, t.total_price, t.weight, t.product_id\n" + " from order_temp t \n" + " where t.sale_type = 0 \n" + " and t.state = 5 \n" + @@ -3040,9 +3040,9 @@ public class OrderStatService { List yhList = Db.find( "SELECT\n" + " t.supermarket_id id,\n" + - " count(*) as order_num,\n" + - " sum(t.weight) as weight,\n" + - " sum(t.total_price) total_price\n" + + " ifnull(count(*), 0) as order_num,\n" + + " ifnull(sum(t.weight), 0) as weight,\n" + + " ifnull(sum(t.total_price), 0) as total_price\n" + "FROM\n" + " order_temp t\n" + "LEFT JOIN ordercluster c ON c.id = t.ordercluster_id\n" + @@ -3050,6 +3050,7 @@ public class OrderStatService { "WHERE\n" + " t.sale_type = 1\n" + " AND t.state = 5\n" + + " AND p.del = 0\n" + yhParams + "GROUP BY\n" + " t.supermarket_id", yhParamsList.toArray()); @@ -3076,7 +3077,7 @@ public class OrderStatService { double hj_yh_total_price = 0.0; // 实售合并 - if (shList.size() > 0) { + if (shList != null && !shList.isEmpty()) { List shList2 = new ArrayList<>(); for (Record s : shList) { int id = s.getInt("id"); @@ -3095,6 +3096,16 @@ public class OrderStatService { if ((s1_id == 1 && s2_id == 7) || (s1_id == 5 && s2_id == 9) ||s1_id == 6 && s2_id == 8) { Record s3 = new Record(); + int order_num; + int s1_order_num = s1.getInt("order_num") == null ? 0 : s1.getInt("order_num"); + int s2_order_num = s2.getInt("order_num") == null ? 0 : s2.getInt("order_num"); + order_num = s1_order_num + s2_order_num; + + BigDecimal total_price; + BigDecimal s1_total_price = s1.getBigDecimal("total_price") == null ? new BigDecimal(0) : s1.getBigDecimal("total_price"); + BigDecimal s2_total_price = s2.getBigDecimal("total_price") == null ? new BigDecimal(0) : s2.getBigDecimal("total_price"); + total_price = s1_total_price.add(s2_total_price); + BigDecimal weight = s1.getBigDecimal("weight").add(s2.getBigDecimal("weight")); if (weight.compareTo(new BigDecimal(0)) == 0) { weight = new BigDecimal(0); @@ -3104,8 +3115,8 @@ public class OrderStatService { s3.set("name", s1.getStr("name")); s3.set("product_id", s1.getInt("product_id")); s3.set("product_name", s1.getStr("product_name")); - s3.set("order_num", Math.addExact(s1.getInt("order_num"), s2.getInt("order_num"))); - s3.set("total_price", s1.getBigDecimal("total_price").add(s2.getBigDecimal("total_price"))); + s3.set("order_num", order_num); + s3.set("total_price", total_price); s3.set("weight", weight); shList1.add(s3); break; @@ -3115,9 +3126,21 @@ public class OrderStatService { } else if (shList2.size() == 1) { shList1.addAll(shList2); } + } else { + for (Record s : sups) { + Record p = new Record(); + p.set("id", s.getInt("id")); + p.set("name", s.getStr("name")); + p.set("product_id", 1); + p.set("product_name", "黄砂"); + p.set("order_num", 0); + p.set("weight", new BigDecimal(0)); + p.set("total_price", new BigDecimal(0)); + shList1.add(p); + } } // 预售合并 - if (yhList.size() > 0) { + if (yhList != null && !yhList.isEmpty()) { List yhList2 = new ArrayList<>(); for (Record s : yhList) { int id = s.getInt("id"); @@ -3133,18 +3156,28 @@ public class OrderStatService { for (Record s2 : yhList2) { int s1_id = s1.getInt("id"); int s2_id = s2.getInt("id"); - if ((s1_id == 1 && s2_id == 7) || (s1_id == 5 && s2_id == 9) ||s1_id == 6 && s2_id == 8) { + if ((s1_id == 1 && s2_id == 7) || (s1_id == 5 && s2_id == 9) || s1_id == 6 && s2_id == 8) { flag = true; Record s3 = new Record(); + int order_num; + int s1_order_num = s1.getInt("order_num") == null ? 0 : s1.getInt("order_num"); + int s2_order_num = s2.getInt("order_num") == null ? 0 : s2.getInt("order_num"); + order_num = s1_order_num + s2_order_num; + + BigDecimal total_price; + BigDecimal s1_total_price = s1.getBigDecimal("total_price") == null ? new BigDecimal(0) : s1.getBigDecimal("total_price"); + BigDecimal s2_total_price = s2.getBigDecimal("total_price") == null ? new BigDecimal(0) : s2.getBigDecimal("total_price"); + total_price = s1_total_price.add(s2_total_price); + BigDecimal weight = s1.getBigDecimal("weight").add(s2.getBigDecimal("weight")); if (weight.compareTo(new BigDecimal(0)) == 0) { weight = new BigDecimal(0); } s3.set("id", s1_id); - s3.set("order_num", Math.addExact(s1.getInt("order_num"), s2.getInt("order_num"))); - s3.set("total_price", s1.getBigDecimal("total_price").add(s2.getBigDecimal("total_price"))); + s3.set("order_num", order_num); + s3.set("total_price", total_price); s3.set("weight", weight); yhList1.add(s3); break; @@ -3159,7 +3192,11 @@ public class OrderStatService { } } else { for (Record s : sups) { - Record p = new Record().set("id", s.getInt("id")).set("total_price", new BigDecimal(0)); + Record p = new Record(); + p.set("id", s.getInt("id")); + p.set("order_num", 0); + p.set("weight", new BigDecimal(0)); + p.set("total_price", new BigDecimal(0)); yhList1.add(p); } } @@ -3182,9 +3219,9 @@ public class OrderStatService { if (s_id == sl_id) { flag = false; Record r = new Record(); - int order_num = sl.getInt("order_num"); - BigDecimal weight = sl.getBigDecimal("weight"); - BigDecimal total_price = sl.getBigDecimal("total_price"); + int order_num = sl.getInt("order_num") == null ? 0 : sl.getInt("order_num"); + BigDecimal weight = sl.getBigDecimal("weight") == null ? new BigDecimal(0) : sl.getBigDecimal("weight"); + BigDecimal total_price = sl.getBigDecimal("total_price") == null ? new BigDecimal(0) : sl.getBigDecimal("total_price"); if (product_id == 1) { hj_hs_sh_order_num += order_num; @@ -3249,9 +3286,9 @@ public class OrderStatService { flag = false; Record r = new Record(); - int order_num = yl.getInt("order_num"); - BigDecimal weight = yl.getBigDecimal("weight"); - BigDecimal total_price = yl.getBigDecimal("total_price"); + int order_num = yl.getInt("order_num") == null ? 0 : yl.getInt("order_num"); + BigDecimal weight = yl.getBigDecimal("weight") == null ? new BigDecimal(0) : yl.getBigDecimal("weight"); + BigDecimal total_price = yl.getBigDecimal("total_price") == null ? new BigDecimal(0) : yl.getBigDecimal("total_price"); hj_yh_order_num += order_num; hj_yh_weight += weight.doubleValue(); hj_yh_total_price += total_price.doubleValue(); @@ -3375,7 +3412,7 @@ public class OrderStatService { Record total = new Record(); total.set("key", "total").set("name", "总合计").set("item_name", "-").set("product_name", "-") .set("order_num", hj_hs_sh_order_num + hj_els_sh_order_num + hj_jzs_sh_order_num + hj_yh_order_num) - .set("weight", hj_hs_sh_weight + hj_els_sh_weight + hj_els_sh_weight + hj_yh_weight) + .set("weight", hj_hs_sh_weight + hj_els_sh_weight + hj_jzs_sh_weight + hj_yh_weight) .set("total_price", hj_hs_sh_total_price + hj_els_sh_total_price + hj_jzs_sh_total_price + hj_yh_total_price); retList.add(total); diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java index 26a9139..414ad5b 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java @@ -1126,7 +1126,7 @@ public class OrderTempSyncService { return Result.failed("没有找到客户预付费信息"); } //账户可用余额 - BigDecimal availableBalance = PresellOrderService.me.getPresellCustomerSurplusById(ordercluster.getPresellOrderId()); + BigDecimal availableBalance = PresellOrderService.me.getPresellCustomerSurplusById(ordercluster.getCustomerId()); if (availableBalance == null || availableBalance.compareTo(min) <= 0) { return Result.failed("客户余额不足"); } 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 04ba636..6352177 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 @@ -322,11 +322,10 @@ public class OrderStatController extends BaseController { String tm = get("tm"); int export = getInt("export", 0); // 是否导出为exce 0 不导出,1 导出 Boolean stat_product = getBoolean("stat_product", false); - Integer sale_type = getInt("sale_type"); if (export == 0) { - renderJson(Result.object(OrderStatService.me.salestat(tm, sale_type))); + renderJson(Result.object(OrderStatService.me.statYearBySup(tm, 2))); } else { - Workbook wb = OrderStatService.me.yearsalestatExport(tm, sale_type); + Workbook wb = OrderStatService.me.yearsalestatExportBySup(tm); render(new ExcelRender("按砂站总销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb)); } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java index b08e5ab..c01eaec 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java @@ -114,14 +114,12 @@ public class InvoiceReceiveSyncService extends BaseSyncService { } receive.setSurplus(0); - SyncTask syncTask = new SyncTask(); - boolean ret = Db.tx(new IAtom() { @Override public boolean run() { try { return receive.update() - && SyncTaskService.me.save(syncTask.addUpdateData(receive), receive.getSupermarketId()) // 下发到指定的砂站 + && SyncTaskService.me.save(new SyncTask().addUpdateData(receive), receive.getSupermarketId()) // 下发到指定的砂站 && ModifyLogService.me.save(receive, oldobj, Enums.DataOpType.UPDATE.getId(), user); } catch (Exception e) { log.error(e.getMessage(), e); @@ -130,10 +128,6 @@ public class InvoiceReceiveSyncService extends BaseSyncService { } }); - if (ret) { - SyncTaskService.me.send(syncTask); - } - return ret ? Result.object(receive) : Result.failed(false, "回收失败"); } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java index d64a0a2..239c1d7 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java @@ -585,7 +585,7 @@ public class OrderclusterSyncService extends BaseSyncService { } // 余额 - BigDecimal pug_amount = PresellOrderService.me.getPresellCustomerSurplusById(model.getPresellOrderId()); + BigDecimal pug_amount = PresellOrderService.me.getPresellCustomerSurplusById(model.getCustomerId()); BigDecimal surplus = presellOrder.getPresellAmount().subtract(pug_amount); if (unitprice.multiply(model.getTotalWeight()).compareTo(surplus) > 0) { @@ -901,7 +901,7 @@ public class OrderclusterSyncService extends BaseSyncService { return Result.failed(false, "未获取到订单信息"); } // 余额 - BigDecimal pug_amount = PresellOrderService.me.getPresellCustomerSurplusById(oldobj.getPresellOrderId()); + BigDecimal pug_amount = PresellOrderService.me.getPresellCustomerSurplusById(oldobj.getCustomerId()); BigDecimal surplus = order.getPresellAmount().subtract(pug_amount); if (plan_total_price.compareTo(surplus) > 0) { return Result.failedstr("共计总配额达 %.2f元,客户余额(%.2f元)不足", plan_total_price, surplus); @@ -1128,7 +1128,7 @@ public class OrderclusterSyncService extends BaseSyncService { } else { PresellOrder order = PresellOrder.dao.findById(presell_order_id); if (order != null) { - BigDecimal pug_amount = PresellOrderService.me.getPresellCustomerSurplusById(presell_order_id); + BigDecimal pug_amount = PresellOrderService.me.getPresellCustomerSurplusById(order.getCustomerId()); availableBalance = order.getPresellAmount().subtract(pug_amount); maximumConfiguration = availableBalance.divide(new BigDecimal(unit_price), 2, BigDecimal.ROUND_DOWN); } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveSyncService.java index 318cea7..d994ff8 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveSyncService.java @@ -111,14 +111,12 @@ public class TicketReceiveSyncService extends BaseSyncService { } receive.setSurplus(0); - SyncTask syncTask = new SyncTask(); - boolean ret = Db.tx(new IAtom() { @Override public boolean run() { try { return receive.update() - && SyncTaskService.me.save(syncTask.addUpdateData(receive), receive.getSupermarketId()) // 下发到指定的砂站 + && SyncTaskService.me.save(new SyncTask().addUpdateData(receive), receive.getSupermarketId()) // 下发到指定的砂站 && ModifyLogService.me.save(receive, oldobj, Enums.DataOpType.UPDATE.getId(), user); } catch (Exception e) { log.error(e.getMessage(), e); @@ -127,10 +125,6 @@ public class TicketReceiveSyncService extends BaseSyncService { } }); - if (ret) { - SyncTaskService.me.send(syncTask); - } - return ret ? Result.object(receive) : Result.failed(false, "回收失败"); } }