Merge remote-tracking branch 'origin/ls-dev' into ls-dev

dev
xiaocui 2021-03-30 19:51:50 +08:00
commit da13ec31e2
12 changed files with 72 additions and 61 deletions

View File

@ -40,13 +40,13 @@ public class InvoiceReceiveService extends BaseService {
return null;
}
Integer code = Integer.parseInt(invoice_code);
Long code = Long.parseLong(invoice_code);
String sql = "select * from invoice_receive t\n" +
" where t.supermarket_id = ? \n" +
" and t.surplus > 0 \n" +
" and t.invoice_number = ? \n" +
" and cast(t.start_code as unsigned integer) <= ? \n" +
" and cast(t.end_code as unsigned integer) >= ? \n" +
" and cast(t.start_code as unsigned) <= ? \n" +
" and cast(t.end_code as unsigned) >= ? \n" +
" limit 1";
InvoiceReceive receive = InvoiceReceive.dao.findFirst(sql, supermarket_id, invoice_number, code, code);
@ -56,6 +56,7 @@ public class InvoiceReceiveService extends BaseService {
/**
* 使
*
* @param supermarket_id
* @param invoice_number
* @param invoice_code
@ -66,12 +67,12 @@ public class InvoiceReceiveService extends BaseService {
return null;
}
Integer code = Integer.parseInt(invoice_code);
Long code = Long.parseLong(invoice_code);
String sql = "select * from invoice_receive t\n" +
" where t.supermarket_id = ? \n" +
" and t.invoice_number = ? \n" +
" and cast(t.start_code as unsigned integer) <= ? \n" +
" and cast(t.end_code as unsigned integer) >= ? \n" +
" and cast(t.start_code as unsigned) <= ? \n" +
" and cast(t.end_code as unsigned) >= ? \n" +
" limit 1";
InvoiceReceive receive = InvoiceReceive.dao.findFirst(sql, supermarket_id, invoice_number, code, code);
@ -90,7 +91,7 @@ public class InvoiceReceiveService extends BaseService {
return null;
}
String next_invoice_code = String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getCurrentCode()) + 1);
String next_invoice_code = String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getCurrentCode()) + 1);
// 按领用 id 找到所有作废的发票
List<InvoiceLog> invoiceLogs = InvoiceLog.dao.find(
@ -114,7 +115,7 @@ public class InvoiceReceiveService extends BaseService {
return null;
}
String next_next_invoice_code = String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(next_invoice_code) + 1);
String next_next_invoice_code = String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(next_invoice_code) + 1);
return getValidInvoiceCode(receive, next_next_invoice_code, invoiceLogs);
}
@ -125,7 +126,7 @@ public class InvoiceReceiveService extends BaseService {
private String getValidInvoiceCode(String invoice_number, String next_invoice_code, Map<String, InvoiceLog> map) {
if (map.containsKey(invoice_number + "_" + next_invoice_code)) { // 说明下一个发票号码已经作废,需要继续顺延
return getValidInvoiceCode(invoice_number, String.format("%0" + next_invoice_code.length() + "d", Integer.parseInt(next_invoice_code) + 1), map);
return getValidInvoiceCode(invoice_number, String.format("%0" + next_invoice_code.length() + "d", Long.parseLong(next_invoice_code) + 1), map);
} else {
return next_invoice_code;
}
@ -142,7 +143,7 @@ public class InvoiceReceiveService extends BaseService {
String sql = "select * from invoice_receive t\n" +
" where t.supermarket_id = ? \n" +
" and t.surplus > 0\n" +
" order by cast(t.start_code as unsigned integer) asc";
" order by cast(t.start_code as unsigned) asc";
List<InvoiceReceive> receives = InvoiceReceive.dao.find(sql, supermarket_id);

View File

@ -26,6 +26,13 @@ import java.util.List;
public class TicketLogService extends BaseService {
public static final TicketLogService me = new TicketLogService();
public TicketLog checkUseTicketLog(String ticket_code) {
return TicketLog.dao.findFirst(
"select * from ticket_log t where t.ticket_code = ?",
ticket_code
);
}
public TicketLog checkInvalidTicketLog(String ticket_code) {
return TicketLog.dao.findFirst(
"select * from ticket_log t where t.state = ? and t.ticket_code = ?",

View File

@ -38,13 +38,13 @@ public class TicketReceiveService extends BaseService {
return null;
}
Integer code = Integer.parseInt(ticket_code);
Long code = Long.parseLong(ticket_code);
String sql = "select * from ticket_receive t\n" +
" where t.supermarket_id = ? \n" +
" and t.surplus > 0 \n" +
" and cast(t.start_code as unsigned integer) <= ? \n" +
" and cast(t.end_code as unsigned integer) >= ? \n" +
" and cast(t.start_code as unsigned) <= ? \n" +
" and cast(t.end_code as unsigned) >= ? \n" +
" limit 1";
TicketReceive receive = TicketReceive.dao.findFirst(sql, supermarket_id, code, code);
@ -56,11 +56,11 @@ public class TicketReceiveService extends BaseService {
return null;
}
Integer code = Integer.parseInt(ticket_code);
Long code = Long.parseLong(ticket_code);
String sql = "select * from ticket_receive t\n" +
" where t.supermarket_id = ? \n" +
" and cast(t.start_code as unsigned integer) <= ? \n" +
" and cast(t.end_code as unsigned integer) >= ? \n" +
" and cast(t.start_code as unsigned) <= ? \n" +
" and cast(t.end_code as unsigned) >= ? \n" +
" limit 1";
TicketReceive receive = TicketReceive.dao.findFirst(sql, supermarket_id, code, code);
@ -70,7 +70,7 @@ public class TicketReceiveService extends BaseService {
private String getValidTicketCode(String next_ticket_code, Map<String, TicketLog> map) {
if (map.containsKey(next_ticket_code)) { // 说明下一个结算单号码已经作废,需要继续顺延
return getValidTicketCode(String.format("%0" + next_ticket_code.length() + "d", Integer.parseInt(next_ticket_code) + 1), map);
return getValidTicketCode(String.format("%0" + next_ticket_code.length() + "d", Long.parseLong(next_ticket_code) + 1), map);
} else {
return next_ticket_code;
}
@ -88,7 +88,7 @@ public class TicketReceiveService extends BaseService {
String sql = "select * from ticket_receive t\n" +
" where t.supermarket_id = ? \n" +
" and t.surplus > 0\n" +
" order by cast(t.start_code as unsigned integer) asc";
" order by cast(t.start_code as unsigned) asc";
List<TicketReceive> receives = TicketReceive.dao.find(sql, supermarket_id);

View File

@ -70,9 +70,9 @@ public class InvoiceLogSyncService extends BaseSyncService {
receive.setCurrentCode(receive.getEndCode());
} else {
if (code.equals(receive.getStartCode())) { // 作废第一张发票
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getStartCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getStartCode()) + 1));
} else if (code.equals(receive.getCurrentCode())) { // 作废顺延的下一张发票
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getCurrentCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getCurrentCode()) + 1));
} else {
// 其他情况下不更新 current_code
}

View File

@ -125,9 +125,9 @@ public class OrderTempSyncService {
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
}
TicketLog ticketLog = TicketLogService.me.checkInvalidTicketLog(ticket_code);
TicketLog ticketLog = TicketLogService.me.checkUseTicketLog(ticket_code);
if (ticketLog != null) {
return Result.failedstr("结算单 %s 已作废", ticket_code);
return Result.failedstr("结算单 %s 已使用", ticket_code);
}
ticketReceive.setSurplus(ticketReceive.getSurplus() - 1);
@ -397,9 +397,9 @@ public class OrderTempSyncService {
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
}
TicketLog ticketLog = TicketLogService.me.checkInvalidTicketLog(ticket_code);
TicketLog ticketLog = TicketLogService.me.checkUseTicketLog(ticket_code);
if (ticketLog != null) {
return Result.failedstr("结算单 %s 已作废", ticket_code);
return Result.failedstr("结算单 %s 已使用", ticket_code);
}
ticketReceive.setSurplus(ticketReceive.getSurplus() - 1);
@ -766,9 +766,9 @@ public class OrderTempSyncService {
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
}
TicketLog ticketLog = TicketLogService.me.checkInvalidTicketLog(ticket_code);
TicketLog ticketLog = TicketLogService.me.checkUseTicketLog(ticket_code);
if (ticketLog != null) {
return Result.failedstr("结算单 %s 已作废", ticket_code);
return Result.failedstr("结算单 %s 已使用", ticket_code);
}
ticketReceive.setSurplus(ticketReceive.getSurplus() - 1);
@ -852,8 +852,9 @@ public class OrderTempSyncService {
transport.setArriveTime(now);
transport.setType(OrderTypeEnum.TEMP.getTypeid());
if (prepayCustomer.getSurplus().compareTo(order.getTotalPrice()) < 1) {
return Result.failedstr("总价 %.2f,客户余额(%.2f)不足以支付");
// 客户账户可用余额要可以支付本次订单
if (availableBalance.compareTo(order.getTotalPrice()) < 1) {
return Result.failedstr("总价 %.2f,客户可用余额(%.2f)不足以支付", order.getTotalPrice(), availableBalance);
}
InvoiceReceive finalReceive = receive;
@ -1187,9 +1188,9 @@ public class OrderTempSyncService {
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
}
TicketLog ticketLog = TicketLogService.me.checkInvalidTicketLog(ticket_code);
TicketLog ticketLog = TicketLogService.me.checkUseTicketLog(ticket_code);
if (ticketLog != null) {
return Result.failedstr("结算单 %s 已作废", ticket_code);
return Result.failedstr("结算单 %s 已使用", ticket_code);
}
order.setTicketCode(ticket_code);

View File

@ -67,9 +67,9 @@ public class TicketLogSyncService extends BaseSyncService {
receive.setCurrentCode(receive.getEndCode());
} else {
if (ticket_code.equals(receive.getStartCode())) { // 作废第一张结算单
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getStartCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getStartCode()) + 1));
} else if (ticket_code.equals(receive.getCurrentCode())) { // 作废顺延的下一张结算单
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getCurrentCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getCurrentCode()) + 1));
} else {
// 其他情况下不更新 current_code
}

View File

@ -78,9 +78,9 @@ public class InvoiceInvalidVerifySyncService {
receive.setCurrentCode(receive.getEndCode());
} else {
if (model.getInvoiceCode().equals(receive.getStartCode())) { // 作废第一张发票
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getStartCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getStartCode()) + 1));
} else if (model.getInvoiceCode().equals(receive.getCurrentCode())) { // 作废顺延的下一张发票
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getCurrentCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getCurrentCode()) + 1));
} else {
// 其他情况下不更新 current_code
}

View File

@ -207,9 +207,9 @@ public class InvoiceLogSyncService extends BaseSyncService {
receive.setCurrentCode(receive.getEndCode());
} else {
if (code.equals(receive.getStartCode())) { // 作废第一张发票
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getStartCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getStartCode()) + 1));
} else if (code.equals(receive.getCurrentCode())) { // 作废顺延的下一张发票
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getCurrentCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getCurrentCode()) + 1));
} else {
// 其他情况下不更新 current_code
}

View File

@ -154,7 +154,7 @@ public class CheckUndonOrderclusterJob implements Job {
}
}
log.debug("自动转结完成 %s");
log.debug("自动转结完成");
} else {
log.debug("无未完成的订单");
}

View File

@ -723,26 +723,10 @@ public class OrderclusterSyncService extends BaseSyncService {
BigDecimal ofsset_weight = model.getTotalWeight().subtract(oldobj.getTotalWeight()); // 本次修改增加的重量
BigDecimal offset_total_price = ofsset_weight.multiply(oldobj.getUnitPrice()); // 本次修改增加的价格
plan_total_price = offset_total_price.add(undo_price); // 剩余未完成金额加上本次增加的金额
// 线上调试
log.debug("已完成:%s", overweight);
log.debug("旧配额:%s", oldobj.getTotalWeight());
log.debug("本调整:%s", ofsset_weight);
log.debug("本调整总价:%s", offset_total_price);
log.debug("客户未完总价:%s", undo_price);
log.debug("调整后总价:%s", plan_total_price);
} else { // 修改后比原来的小
BigDecimal ofsset_weight = oldobj.getTotalWeight().subtract(model.getTotalWeight()); // 本次修改增加的重量
BigDecimal offset_total_price = ofsset_weight.multiply(oldobj.getUnitPrice()); // 本次修改增加的价格
plan_total_price = undo_price.subtract(offset_total_price); // 剩余未完成金额加上本次增加的金额
// 线上调试
log.debug("已完成:%s", overweight);
log.debug("旧配额:%s", oldobj.getTotalWeight());
log.debug("本调整:%s", ofsset_weight);
log.debug("本调整总价:%s", offset_total_price);
log.debug("客户未完总价:%s", undo_price);
log.debug("调整后总价:%s", plan_total_price);
}
if (plan_total_price.compareTo(prepayCustomer.getSurplus()) > 0) {
@ -951,6 +935,12 @@ public class OrderclusterSyncService extends BaseSyncService {
return Result.failed("不是预付费用户");
}
// 当前配额指定的客户、超市、品类对应的单价
BigDecimal unitprice = CustomerSupermarketProductService.me.getUnitPrice(oldobj.getCustomerId(), oldobj.getSupermarketId(), oldobj.getProductId());
if (unitprice == null) {
return Result.failed("未配置商品单价");
}
// 按客户统计已完成量
BigDecimal over_weight = OrderclusterService.me.getOverWeight(oldobj.getId()); // 按客户找集团订单已完成量
BigDecimal surplus_weight = oldobj.getTotalWeight().subtract(over_weight); // 剩余未完成量
@ -971,16 +961,18 @@ public class OrderclusterSyncService extends BaseSyncService {
BigDecimal plan_total_price;
if (total_weight.compareTo(surplus_weight) > 0) { // 修改后,比原来的大
BigDecimal surplus_weight_1 = total_weight.subtract(surplus_weight); // 本次修改增加的重量
BigDecimal offset_total_price = surplus_weight_1.multiply(oldobj.getUnitPrice()); // 本次修改增加的价格
BigDecimal offset_total_price = surplus_weight_1.multiply(unitprice); // 本次修改增加的价格
plan_total_price = offset_total_price.add(undo_price); // 剩余未完成金额加上本次增加的金额
} else { // 修改后比原来的小
BigDecimal surplus_weight_1 = surplus_weight.subtract(total_weight); // 本次修改增加的重量
BigDecimal offset_total_price = surplus_weight_1.multiply(oldobj.getUnitPrice()); // 本次修改增加的价格
BigDecimal offset_total_price = surplus_weight_1.multiply(unitprice); // 本次修改增加的价格
plan_total_price = undo_price.subtract(offset_total_price); // 剩余未完成金额加上本次增加的金额
}
if (plan_total_price.compareTo(prepayCustomer.getSurplus()) > 0) {
return Result.failedstr("共计总配额达 %.2f元,客户余额(%.2f元)不足", plan_total_price, prepayCustomer.getSurplus());
BigDecimal availableBalance = RefundDetailService.me.getAvailableBalance(prepayCustomer.getCustomerId(), prepayCustomer.getSurplus());
if (plan_total_price.compareTo(availableBalance) > 0) {
return Result.failedstr("共计总配额达 %.2f元,客户可用余额(%.2f元)不足", plan_total_price, availableBalance);
}
List<OrderclusterTruck> octs = OrderclusterTruck.dao.find("select * from ordercluster_truck t where t.ordercluster_id = ?", ordercluster_id);
@ -1053,6 +1045,7 @@ public class OrderclusterSyncService extends BaseSyncService {
forwardoldobj[0] = oldobj.clone();
forwardoldobj[0].setId(null); // 等待数据库自增长
forwardoldobj[0].setUuid(StrKit.getRandomUUID());
forwardoldobj[0].setUnitPrice(unitprice); // 用最新的单价更新
forwardoldobj[0].setTotalWeight(total_weight);
forwardoldobj[0].setCutoffTime(cutoff_time);
forwardoldobj[0].setCreateTime(now); // 当前系统时间
@ -1065,6 +1058,7 @@ public class OrderclusterSyncService extends BaseSyncService {
} else {
// 已有的,直接更新重量
forwardoldobj[0].setTotalWeight(forwardoldobj[0].getTotalWeight().add(total_weight));
forwardoldobj[0].setUnitPrice(unitprice); // 用最新的单价更新
ret = forwardoldobj[0].update();
synctask.addUpdateData(forwardoldobj[0]);
@ -1143,6 +1137,12 @@ public class OrderclusterSyncService extends BaseSyncService {
return Result.failed("已经完结或者取消的,不能再修改");
}
// 当前配额指定的客户、超市、品类对应的单价
BigDecimal unitprice = CustomerSupermarketProductService.me.getUnitPrice(oldobj.getCustomerId(), oldobj.getSupermarketId(), oldobj.getProductId());
if (unitprice == null) {
return Result.failed("未配置商品单价");
}
// 按客户统计已完成量
BigDecimal over_weight = OrderclusterService.me.getOverWeight(oldobj.getId()); // 按客户找集团订单已完成量
BigDecimal surplus_weight = oldobj.getTotalWeight().subtract(over_weight); // 剩余未完成量
@ -1247,6 +1247,7 @@ public class OrderclusterSyncService extends BaseSyncService {
forwardoldobj = oldobj.clone();
forwardoldobj.setId(null); // 等待数据库自增长
forwardoldobj.setUuid(StrKit.getRandomUUID());
forwardoldobj.setUnitPrice(unitprice);
forwardoldobj.setTotalWeight(total_weight);
forwardoldobj.setCutoffTime(cutoff_time);
forwardoldobj.setCreateTime(now); // 当前系统时间
@ -1259,6 +1260,7 @@ public class OrderclusterSyncService extends BaseSyncService {
} else {
// 已有的,直接更新重量
forwardoldobj.setTotalWeight(forwardoldobj.getTotalWeight().add(total_weight));
forwardoldobj.setUnitPrice(unitprice);
ret = forwardoldobj.update();
synctask.addUpdateData(forwardoldobj);

View File

@ -78,9 +78,9 @@ public class TicketInvalidVerifySyncService {
receive.setCurrentCode(receive.getEndCode());
} else {
if (model.getTicketCode().equals(receive.getStartCode())) { // 作废第一张结算单
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getStartCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getStartCode()) + 1));
} else if (model.getTicketCode().equals(receive.getCurrentCode())) { // 作废顺延的下一张结算单
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getCurrentCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getCurrentCode()) + 1));
} else {
// 其他情况下不更新 current_code
}

View File

@ -76,9 +76,9 @@ public class TicketLogSyncService extends BaseSyncService {
receive.setCurrentCode(receive.getEndCode());
} else {
if (ticket_code.equals(receive.getStartCode())) { // 作废第一张结算单
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getStartCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getStartCode()) + 1));
} else if (ticket_code.equals(receive.getCurrentCode())) { // 作废顺延的下一张结算单
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Integer.parseInt(receive.getCurrentCode()) + 1));
receive.setCurrentCode(String.format("%0" + receive.getStartCode().length() + "d", Long.parseLong(receive.getCurrentCode()) + 1));
} else {
// 其他情况下不更新 current_code
}