dev
wuwenxiong 2022-01-04 02:13:16 +08:00
parent c292008626
commit f7ab0ab24d
6 changed files with 101 additions and 73 deletions

View File

@ -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)

View File

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

View File

@ -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 +

View File

@ -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();

View File

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

View File

@ -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) {