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"); 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 * name: invoice_number
* type: VARCHAR(20) * type: VARCHAR(20)

View File

@ -24,12 +24,23 @@ public class PresellOrderService extends BaseService {
public static final PresellOrderService me = new PresellOrderService(); 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) { 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" + String selectsql = "select t.*, c.name customer_name, s.name supermarket_name, c.texpayer_name, c.texpayer_num,\n" +
" (t.presell_amount - t.pug_amount) as surplus \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" + 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 prepay_customer p on t.customer_id = p.customer_id \n" +
" left join supermarket s on t.supermarket_id = s.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"; " where 1=1 \n";
List<Object> paraList = new ArrayList<>(); List<Object> paraList = new ArrayList<>();
@ -65,9 +76,9 @@ public class PresellOrderService extends BaseService {
if (type != null && (type == 0 || type == 1)) { if (type != null && (type == 0 || type == 1)) {
if (type == 0) { 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 { } 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) { 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" + String sql = "select t.*, c.name customer_name, s.name supermarket_name, c.texpayer_name, c.texpayer_num,\n" +
" (t.presell_amount - t.pug_amount) as surplus\n" + " ifnull(g.total_price, 0) yth_amount, t.presell_amount - ifnull(g.total_price, 0) surplus \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 prepay_customer p on t.customer_id = p.customer_id \n" +
" left join supermarket s on t.supermarket_id = s.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"; " where 1=1 \n";
List<Object> paraList = new ArrayList<>(); List<Object> paraList = new ArrayList<>();
@ -132,9 +154,9 @@ public class PresellOrderService extends BaseService {
if (type != null && (type == 0 || type == 1)) { if (type != null && (type == 0 || type == 1)) {
if (type == 0) { 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 { } 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) { 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 = ?"; "WHERE t.id = ?";
return Db.queryBigDecimal(sql, id); return Db.queryBigDecimal(sql, id);
} }

View File

@ -2760,9 +2760,21 @@ public class OrderStatService {
" p.customer_id,\n" + " p.customer_id,\n" +
" p.supermarket_id,\n" + " p.supermarket_id,\n" +
" ifnull(sum(p.presell_amount), 0) presell_amount,\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" + " FROM\n" +
" presell_order p\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" + " WHERE\n" +
" p.del = 0\n" + " p.del = 0\n" +
paramsSql + paramsSql +

View File

@ -1271,24 +1271,24 @@ public class OrderTempSyncService {
order.setPaid(new BigDecimal(0)); // 预付费的实际支付为 0 order.setPaid(new BigDecimal(0)); // 预付费的实际支付为 0
order.setPrepayCustomerId(prepayCustomer.getId()); order.setPrepayCustomerId(prepayCustomer.getId());
PresellOrder presellOrder = PresellOrder.dao.findById(ordercluster.getPresellOrderId()); // PresellOrder presellOrder = PresellOrder.dao.findById(ordercluster.getPresellOrderId());
if (presellOrder == null) return false; // if (presellOrder == null) return false;
//
synctask.addIncrementData( // synctask.addIncrementData(
presellOrder.getTablename(), // presellOrder.getTablename(),
"id", // "id",
presellOrder.getId(), // presellOrder.getId(),
new JSONObject().fluentPut("pug_amount", order.getTotalPrice()) // 结算完成,更新提货额 // new JSONObject().fluentPut("pug_amount", order.getTotalPrice()) // 结算完成,更新提货额
); // );
//
// 更新本地presellOrder的pug_amount // // 更新本地presellOrder的pug_amount
presellOrder.setPugAmount(presellOrder.getPugAmount().add(order.getTotalPrice())); // presellOrder.setPugAmount(presellOrder.getPugAmount().add(order.getTotalPrice()));
//
ret = presellOrder.update(); // ret = presellOrder.update();
//
if (!ret) { // if (!ret) {
return false; // return false;
} // }
ret = order.save() && transport.update(); 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.order.ordercluster.OrderclusterService;
import com.cowr.ssjygl.prepay.prepaycustomer.PrepayCustomerService; import com.cowr.ssjygl.prepay.prepaycustomer.PrepayCustomerService;
import com.cowr.ssjygl.prepay.refunddetail.RefundDetailService; 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.product.SupermarketProductService;
import com.cowr.ssjygl.supermarket.receiverdistance.SupermarketReceiverDistanceService; import com.cowr.ssjygl.supermarket.receiverdistance.SupermarketReceiverDistanceService;
import com.jfinal.kit.StrKit; 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) { if (unitprice.multiply(model.getTotalWeight()).compareTo(surplus) > 0) {
return Result.failedstr("余额 %.2f 不足以购买 %.2f 吨 %s", surplus, model.getTotalWeight(), product.getName()); return Result.failedstr("余额 %.2f 不足以购买 %.2f 吨 %s", surplus, model.getTotalWeight(), product.getName());
@ -899,7 +901,8 @@ public class OrderclusterSyncService extends BaseSyncService {
return Result.failed(false, "未获取到订单信息"); 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) { if (plan_total_price.compareTo(surplus) > 0) {
return Result.failedstr("共计总配额达 %.2f元,客户余额(%.2f元)不足", plan_total_price, surplus); return Result.failedstr("共计总配额达 %.2f元,客户余额(%.2f元)不足", plan_total_price, surplus);
} }
@ -1125,7 +1128,8 @@ public class OrderclusterSyncService extends BaseSyncService {
} else { } else {
PresellOrder order = PresellOrder.dao.findById(presell_order_id); PresellOrder order = PresellOrder.dao.findById(presell_order_id);
if (order != null) { 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); 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.IAtom;
import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.Record;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
public class OrderTempSyncService { public class OrderTempSyncService {
@ -183,24 +182,25 @@ public class OrderTempSyncService {
ret = prepayCustomer.update(); 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) { if (!ret) {