From 4a9c9bbc5cafd2855c24ccb74944fc250cb4b2f6 Mon Sep 17 00:00:00 2001 From: wuwenxiong <646448316@qq.com> Date: Fri, 7 Jan 2022 16:48:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A2=84=E5=94=AE=E5=8D=95?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E4=BD=99=E9=A2=9D=E8=AE=A1=E7=AE=97=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presellorder/PresellOrderService.java | 102 +++++++++++++----- 1 file changed, 74 insertions(+), 28 deletions(-) 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 dd22384..b05c814 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 @@ -2,7 +2,6 @@ package com.cowr.ssjygl.presellorder; import com.cowr.common.Const; import com.cowr.common.base.BaseService; -import com.cowr.common.enums.OrderStateEnum; import com.cowr.common.view.PageParam; import com.cowr.model.PresellOrder; import com.jfinal.kit.StrKit; @@ -25,7 +24,7 @@ public class PresellOrderService extends BaseService { public Page find(PageParam pp, Integer customer_id, Integer supermarket_id, Integer del, String name, String stm, String etm, Integer type) { String selectsql = "select t.*, c.name customer_name, s.name supermarket_name, c.texpayer_name, c.texpayer_num,\n" + - " ifnull(g.total_price, 0) yth_amount, t.presell_amount - ifnull(g.total_price, 0) surplus \n"; + " ifnull(g.total_price, 0) yth_amount \n"; String fromsql = " from presell_order t \n" + " left join customer c on t.customer_id = c.id \n" + " left join supermarket s on t.supermarket_id = s.id \n" + @@ -98,12 +97,17 @@ public class PresellOrderService extends BaseService { findSql += " order by t.create_time desc"; } - return Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray()); + Page page = Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray()); + List list = page.getList(); + + setSurplus(list); + + return page; } - public List list(Integer customer_id, Integer supermarket_id, Integer del, String name, String stm, String etm, Integer type) { + public List list(Integer customer_id, Integer supermarket_id, Integer del, String name, String stm, String etm, Integer type) { String sql = "select t.*, c.name customer_name, s.name supermarket_name, c.texpayer_name, c.texpayer_num,\n" + - " ifnull(g.total_price, 0) yth_amount, t.presell_amount - ifnull(g.total_price, 0) surplus \n" + + " ifnull(g.total_price, 0) yth_amount \n" + " from presell_order t \n" + " left join customer c on t.customer_id = c.id \n" + " left join supermarket s on t.supermarket_id = s.id \n" + @@ -160,35 +164,77 @@ public class PresellOrderService extends BaseService { } } - return PresellOrder.dao.find(sql, paraList.toArray()); + List list = Db.find(sql, paraList.toArray()); + + setSurplus(list); + + return list; } + public void setSurplus(List list) { + if (list == null || list.isEmpty()) { + return; + } + + for (Record r : list) { + Integer customer_id = r.getInt("customer_id"); + if (customer_id != null) { + BigDecimal surplus = getPresellCustomerSurplusById(customer_id); + r.set("surplus", surplus); + } + } + } + + /** + * 根据客户id查询客户的可配金额 + * @param id + * @return + */ 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; + " IFNULL(\n" + + " (\n" + + " SELECT\n" + + " (\n" + + " IFNULL(\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" + + " 0\n" + + " )\n" + + " ) - (\n" + + " IFNULL(\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" + + " ),\n" + + " 0\n" + + " )\n" + + " )\n" + + " ),\n" + + " 0\n" + + " ) AS suplus"; + + BigDecimal out = Db.queryBigDecimal(sql, params.toArray()); + + return out == null ? new BigDecimal(0) : out; } }