优化-2
parent
c292008626
commit
f7ab0ab24d
|
|
@ -130,28 +130,6 @@ public abstract class BasePresellOrder<M extends BasePresellOrder<M>> extends Ba
|
|||
return get("presell_amount");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: pug_amount
|
||||
* type: DECIMAL(12,2)
|
||||
* isNullable: NO
|
||||
* isPrimaryKey: NO
|
||||
* defaultValue: 0.00
|
||||
* @param pugAmount 已提货额
|
||||
*/
|
||||
@JSONField(name="pug_amount")
|
||||
public void setPugAmount(java.math.BigDecimal pugAmount) {
|
||||
set("pug_amount", pugAmount);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return pug_amount 已提货额
|
||||
*/
|
||||
@JSONField(name="pug_amount")
|
||||
public java.math.BigDecimal getPugAmount() {
|
||||
return get("pug_amount");
|
||||
}
|
||||
|
||||
/**
|
||||
* name: invoice_number
|
||||
* type: VARCHAR(20)
|
||||
|
|
|
|||
|
|
@ -24,12 +24,23 @@ public class PresellOrderService extends BaseService {
|
|||
public static final PresellOrderService me = new PresellOrderService();
|
||||
|
||||
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.address, c.texpayer_name, c.texpayer_num, c.memo,\n" +
|
||||
" (t.presell_amount - t.pug_amount) as surplus \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";
|
||||
String fromsql = " from presell_order t \n" +
|
||||
" left join customer c on t.customer_id = c.id \n" +
|
||||
" left join prepay_customer p on t.customer_id = p.customer_id \n" +
|
||||
" left join supermarket s on t.supermarket_id = s.id \n" +
|
||||
" left join ( \n" +
|
||||
"SELECT\n" +
|
||||
" o.presell_order_id,\n" +
|
||||
" ifnull(SUM(d.total_price), 0) 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 1=1 \n";
|
||||
List<Object> paraList = new ArrayList<>();
|
||||
|
||||
|
|
@ -65,9 +76,9 @@ public class PresellOrderService extends BaseService {
|
|||
|
||||
if (type != null && (type == 0 || type == 1)) {
|
||||
if (type == 0) {
|
||||
fromsql += " and t.presell_amount > t.pug_amount \n";
|
||||
fromsql += " and t.presell_amount - ifnull(g.total_price, 0) > 0\n";
|
||||
} else {
|
||||
fromsql += " and t.presell_amount = t.pug_amount \n";
|
||||
fromsql += " and t.presell_amount = g.total_price \n";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -91,12 +102,23 @@ public class PresellOrderService extends BaseService {
|
|||
}
|
||||
|
||||
public List<PresellOrder> 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.address, c.texpayer_name, c.texpayer_num, c.memo, \n" +
|
||||
" (t.presell_amount - t.pug_amount) as surplus\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" +
|
||||
" from presell_order t \n" +
|
||||
" left join customer c on t.customer_id = c.id \n" +
|
||||
" left join prepay_customer p on t.customer_id = p.customer_id \n" +
|
||||
" left join supermarket s on t.supermarket_id = s.id \n" +
|
||||
" left join ( \n" +
|
||||
"SELECT\n" +
|
||||
" o.presell_order_id,\n" +
|
||||
" ifnull(SUM(d.total_price), 0) 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 1=1 \n";
|
||||
List<Object> paraList = new ArrayList<>();
|
||||
|
||||
|
|
@ -132,9 +154,9 @@ public class PresellOrderService extends BaseService {
|
|||
|
||||
if (type != null && (type == 0 || type == 1)) {
|
||||
if (type == 0) {
|
||||
sql += " and t.presell_amount > t.pug_amount \n";
|
||||
sql += " and t.presell_amount - ifnull(g.total_price, 0) > 0\n";
|
||||
} else {
|
||||
sql += " and t.presell_amount = t.pug_amount \n";
|
||||
sql += " and t.presell_amount = g.total_price \n";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -142,7 +164,19 @@ public class PresellOrderService extends BaseService {
|
|||
}
|
||||
|
||||
public BigDecimal getPresellCustomerSurplusById(String id) {
|
||||
String sql = "select t.presell_amount - t.pug_amount as surplus from presell_order t\n" +
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2760,9 +2760,21 @@ public class OrderStatService {
|
|||
" p.customer_id,\n" +
|
||||
" p.supermarket_id,\n" +
|
||||
" ifnull(sum(p.presell_amount), 0) presell_amount,\n" +
|
||||
" ifnull(sum(p.pug_amount), 0) pug_amount\n" +
|
||||
" ifnull(sum(g.total_price), 0) pug_amount\n" +
|
||||
" FROM\n" +
|
||||
" presell_order p\n" +
|
||||
" left join ( \n" +
|
||||
" SELECT\n" +
|
||||
" o.presell_order_id,\n" +
|
||||
" ifnull(SUM(d.total_price), 0) 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 = p.id\n" +
|
||||
" WHERE\n" +
|
||||
" p.del = 0\n" +
|
||||
paramsSql +
|
||||
|
|
|
|||
|
|
@ -1271,24 +1271,24 @@ public class OrderTempSyncService {
|
|||
order.setPaid(new BigDecimal(0)); // 预付费的实际支付为 0
|
||||
order.setPrepayCustomerId(prepayCustomer.getId());
|
||||
|
||||
PresellOrder presellOrder = PresellOrder.dao.findById(ordercluster.getPresellOrderId());
|
||||
if (presellOrder == null) return false;
|
||||
|
||||
synctask.addIncrementData(
|
||||
presellOrder.getTablename(),
|
||||
"id",
|
||||
presellOrder.getId(),
|
||||
new JSONObject().fluentPut("pug_amount", order.getTotalPrice()) // 结算完成,更新提货额
|
||||
);
|
||||
|
||||
// 更新本地presellOrder的pug_amount
|
||||
presellOrder.setPugAmount(presellOrder.getPugAmount().add(order.getTotalPrice()));
|
||||
|
||||
ret = presellOrder.update();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
// PresellOrder presellOrder = PresellOrder.dao.findById(ordercluster.getPresellOrderId());
|
||||
// if (presellOrder == null) return false;
|
||||
//
|
||||
// synctask.addIncrementData(
|
||||
// presellOrder.getTablename(),
|
||||
// "id",
|
||||
// presellOrder.getId(),
|
||||
// new JSONObject().fluentPut("pug_amount", order.getTotalPrice()) // 结算完成,更新提货额
|
||||
// );
|
||||
//
|
||||
// // 更新本地presellOrder的pug_amount
|
||||
// presellOrder.setPugAmount(presellOrder.getPugAmount().add(order.getTotalPrice()));
|
||||
//
|
||||
// ret = presellOrder.update();
|
||||
//
|
||||
// if (!ret) {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
ret = order.save() && transport.update();
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import com.cowr.ssjygl.modifylog.ModifyLogService;
|
|||
import com.cowr.ssjygl.order.ordercluster.OrderclusterService;
|
||||
import com.cowr.ssjygl.prepay.prepaycustomer.PrepayCustomerService;
|
||||
import com.cowr.ssjygl.prepay.refunddetail.RefundDetailService;
|
||||
import com.cowr.ssjygl.presellorder.PresellOrderService;
|
||||
import com.cowr.ssjygl.supermarket.product.SupermarketProductService;
|
||||
import com.cowr.ssjygl.supermarket.receiverdistance.SupermarketReceiverDistanceService;
|
||||
import com.jfinal.kit.StrKit;
|
||||
|
|
@ -584,7 +585,8 @@ public class OrderclusterSyncService extends BaseSyncService {
|
|||
}
|
||||
|
||||
// 余额
|
||||
BigDecimal surplus = presellOrder.getPresellAmount().subtract(presellOrder.getPugAmount());
|
||||
BigDecimal pug_amount = PresellOrderService.me.getPresellCustomerSurplusById(model.getPresellOrderId());
|
||||
BigDecimal surplus = presellOrder.getPresellAmount().subtract(pug_amount);
|
||||
|
||||
if (unitprice.multiply(model.getTotalWeight()).compareTo(surplus) > 0) {
|
||||
return Result.failedstr("余额 %.2f 不足以购买 %.2f 吨 %s", surplus, model.getTotalWeight(), product.getName());
|
||||
|
|
@ -899,7 +901,8 @@ public class OrderclusterSyncService extends BaseSyncService {
|
|||
return Result.failed(false, "未获取到订单信息");
|
||||
}
|
||||
// 余额
|
||||
BigDecimal surplus = order.getPresellAmount().subtract(order.getPugAmount());
|
||||
BigDecimal pug_amount = PresellOrderService.me.getPresellCustomerSurplusById(oldobj.getPresellOrderId());
|
||||
BigDecimal surplus = order.getPresellAmount().subtract(pug_amount);
|
||||
if (plan_total_price.compareTo(surplus) > 0) {
|
||||
return Result.failedstr("共计总配额达 %.2f元,客户余额(%.2f元)不足", plan_total_price, surplus);
|
||||
}
|
||||
|
|
@ -1125,7 +1128,8 @@ public class OrderclusterSyncService extends BaseSyncService {
|
|||
} else {
|
||||
PresellOrder order = PresellOrder.dao.findById(presell_order_id);
|
||||
if (order != null) {
|
||||
availableBalance = order.getPresellAmount().subtract(order.getPugAmount());
|
||||
BigDecimal pug_amount = PresellOrderService.me.getPresellCustomerSurplusById(presell_order_id);
|
||||
availableBalance = order.getPresellAmount().subtract(pug_amount);
|
||||
maximumConfiguration = availableBalance.divide(new BigDecimal(unit_price), 2, BigDecimal.ROUND_DOWN);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ import com.jfinal.plugin.activerecord.Db;
|
|||
import com.jfinal.plugin.activerecord.IAtom;
|
||||
import com.jfinal.plugin.activerecord.Record;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
public class OrderTempSyncService {
|
||||
|
|
@ -183,24 +182,25 @@ public class OrderTempSyncService {
|
|||
ret = prepayCustomer.update();
|
||||
|
||||
}
|
||||
} else {
|
||||
Ordercluster ordercluster = Ordercluster.dao.findById(order.getOrderclusterId());
|
||||
if (ordercluster != null) {
|
||||
PresellOrder presellOrder = PresellOrder.dao.findById(ordercluster.getPresellOrderId());
|
||||
if (presellOrder != null) {
|
||||
presellOrder.setPugAmount(presellOrder.getPugAmount().subtract(order.getTotalPrice()));
|
||||
synctaskincrement.addIncrementData(
|
||||
presellOrder.getTablename(),
|
||||
"id",
|
||||
presellOrder.getId(),
|
||||
new JSONObject().fluentPut("pug_amount", new BigDecimal(0).subtract(order.getTotalPrice())) // 取消订单,在提货额上加上一个负数
|
||||
);
|
||||
// 余额变化需要广播
|
||||
SyncTaskService.me.save(synctaskincrement);
|
||||
ret = presellOrder.update();
|
||||
}
|
||||
}
|
||||
}
|
||||
// else {
|
||||
// Ordercluster ordercluster = Ordercluster.dao.findById(order.getOrderclusterId());
|
||||
// if (ordercluster != null) {
|
||||
// PresellOrder presellOrder = PresellOrder.dao.findById(ordercluster.getPresellOrderId());
|
||||
// if (presellOrder != null) {
|
||||
// presellOrder.setPugAmount(presellOrder.getPugAmount().subtract(order.getTotalPrice()));
|
||||
// synctaskincrement.addIncrementData(
|
||||
// presellOrder.getTablename(),
|
||||
// "id",
|
||||
// presellOrder.getId(),
|
||||
// new JSONObject().fluentPut("pug_amount", new BigDecimal(0).subtract(order.getTotalPrice())) // 取消订单,在提货额上加上一个负数
|
||||
// );
|
||||
// // 余额变化需要广播
|
||||
// SyncTaskService.me.save(synctaskincrement);
|
||||
// ret = presellOrder.update();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
if (!ret) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue