修改预售单列表余额计算方式

dev
wuwenxiong 2022-01-07 16:48:40 +08:00
parent 8c892fa9a0
commit 4a9c9bbc5c
1 changed files with 74 additions and 28 deletions

View File

@ -2,7 +2,6 @@ package com.cowr.ssjygl.presellorder;
import com.cowr.common.Const; import com.cowr.common.Const;
import com.cowr.common.base.BaseService; import com.cowr.common.base.BaseService;
import com.cowr.common.enums.OrderStateEnum;
import com.cowr.common.view.PageParam; import com.cowr.common.view.PageParam;
import com.cowr.model.PresellOrder; import com.cowr.model.PresellOrder;
import com.jfinal.kit.StrKit; import com.jfinal.kit.StrKit;
@ -25,7 +24,7 @@ public class PresellOrderService extends BaseService {
public Page<Record> find(PageParam pp, Integer customer_id, Integer supermarket_id, Integer del, String name, String stm, String etm, Integer type) { public Page<Record> 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" + 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" + String fromsql = " from presell_order t \n" +
" left join customer c on t.customer_id = c.id \n" + " left join customer c on t.customer_id = c.id \n" +
" left join supermarket s on t.supermarket_id = s.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"; findSql += " order by t.create_time desc";
} }
return Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray()); Page<Record> page = Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray());
List<Record> list = page.getList();
setSurplus(list);
return page;
} }
public List<PresellOrder> list(Integer customer_id, Integer supermarket_id, Integer del, String name, String stm, String etm, Integer type) { public List<Record> 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" + 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" + " from presell_order t \n" +
" left join customer c on t.customer_id = c.id \n" + " left join customer c on t.customer_id = c.id \n" +
" left join supermarket s on t.supermarket_id = s.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<Record> list = Db.find(sql, paraList.toArray());
setSurplus(list);
return list;
} }
public void setSurplus(List<Record> 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) { public BigDecimal getPresellCustomerSurplusById(Integer id) {
List<Object> params = new ArrayList<>(); List<Object> params = new ArrayList<>();
params.add(id); params.add(id);
params.add(id); params.add(id);
String sql = "SELECT\n" + String sql = "SELECT\n" +
" (\n" + " IFNULL(\n" +
" SELECT\n" + " (\n" +
" sum(t.presell_amount)\n" + " SELECT\n" +
" FROM\n" + " (\n" +
" presell_order t\n" + " IFNULL(\n" +
" WHERE\n" + " (\n" +
" t.del = 0\n" + " SELECT\n" +
" AND t.customer_id = ?\n" + " sum(t.presell_amount)\n" +
" ) - (\n" + " FROM\n" +
" SELECT\n" + " presell_order t\n" +
" sum(\n" + " WHERE\n" +
" t.total_weight * t.unit_price\n" + " t.del = 0\n" +
" )\n" + " AND t.customer_id = ?\n" +
" FROM\n" + " ),\n" +
" ordercluster t\n" + " 0\n" +
" WHERE\n" + " )\n" +
" t.sale_type = 1\n" + " ) - (\n" +
" AND t.state < 5\n" + " IFNULL(\n" +
" AND t.customer_id = ?\n" + " (\n" +
" ) as surplus"; " SELECT\n" +
BigDecimal out = Db.queryBigDecimal(sql, params.toArray()); " sum(\n" +
return out == null ? new BigDecimal(0) : out; " 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;
} }
} }