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

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.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<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" +
" 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<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" +
" 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<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) {
List<Object> 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;
}
}