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; } }