处理结算单编号验证可能存在的问题

dev
lisai17@sina.com 2021-03-28 23:27:01 +08:00
parent e1df7096b8
commit 0935c05b84
10 changed files with 46 additions and 38 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);
@ -1188,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

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