处理结算单编号验证可能存在的问题
parent
e1df7096b8
commit
0935c05b84
|
|
@ -40,13 +40,13 @@ public class InvoiceReceiveService extends BaseService {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Integer code = Integer.parseInt(invoice_code);
|
Long code = Long.parseLong(invoice_code);
|
||||||
String sql = "select * from invoice_receive t\n" +
|
String sql = "select * from invoice_receive t\n" +
|
||||||
" where t.supermarket_id = ? \n" +
|
" where t.supermarket_id = ? \n" +
|
||||||
" and t.surplus > 0 \n" +
|
" and t.surplus > 0 \n" +
|
||||||
" and t.invoice_number = ? \n" +
|
" and t.invoice_number = ? \n" +
|
||||||
" and cast(t.start_code as unsigned integer) <= ? \n" +
|
" and cast(t.start_code as unsigned) <= ? \n" +
|
||||||
" and cast(t.end_code as unsigned integer) >= ? \n" +
|
" and cast(t.end_code as unsigned) >= ? \n" +
|
||||||
" limit 1";
|
" limit 1";
|
||||||
|
|
||||||
InvoiceReceive receive = InvoiceReceive.dao.findFirst(sql, supermarket_id, invoice_number, code, code);
|
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 supermarket_id
|
||||||
* @param invoice_number
|
* @param invoice_number
|
||||||
* @param invoice_code
|
* @param invoice_code
|
||||||
|
|
@ -66,12 +67,12 @@ public class InvoiceReceiveService extends BaseService {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Integer code = Integer.parseInt(invoice_code);
|
Long code = Long.parseLong(invoice_code);
|
||||||
String sql = "select * from invoice_receive t\n" +
|
String sql = "select * from invoice_receive t\n" +
|
||||||
" where t.supermarket_id = ? \n" +
|
" where t.supermarket_id = ? \n" +
|
||||||
" and t.invoice_number = ? \n" +
|
" and t.invoice_number = ? \n" +
|
||||||
" and cast(t.start_code as unsigned integer) <= ? \n" +
|
" and cast(t.start_code as unsigned) <= ? \n" +
|
||||||
" and cast(t.end_code as unsigned integer) >= ? \n" +
|
" and cast(t.end_code as unsigned) >= ? \n" +
|
||||||
" limit 1";
|
" limit 1";
|
||||||
|
|
||||||
InvoiceReceive receive = InvoiceReceive.dao.findFirst(sql, supermarket_id, invoice_number, code, code);
|
InvoiceReceive receive = InvoiceReceive.dao.findFirst(sql, supermarket_id, invoice_number, code, code);
|
||||||
|
|
@ -90,7 +91,7 @@ public class InvoiceReceiveService extends BaseService {
|
||||||
return null;
|
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 找到所有作废的发票
|
// 按领用 id 找到所有作废的发票
|
||||||
List<InvoiceLog> invoiceLogs = InvoiceLog.dao.find(
|
List<InvoiceLog> invoiceLogs = InvoiceLog.dao.find(
|
||||||
|
|
@ -114,7 +115,7 @@ public class InvoiceReceiveService extends BaseService {
|
||||||
return null;
|
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);
|
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) {
|
private String getValidInvoiceCode(String invoice_number, String next_invoice_code, Map<String, InvoiceLog> map) {
|
||||||
if (map.containsKey(invoice_number + "_" + next_invoice_code)) { // 说明下一个发票号码已经作废,需要继续顺延
|
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 {
|
} else {
|
||||||
return next_invoice_code;
|
return next_invoice_code;
|
||||||
}
|
}
|
||||||
|
|
@ -142,7 +143,7 @@ public class InvoiceReceiveService extends BaseService {
|
||||||
String sql = "select * from invoice_receive t\n" +
|
String sql = "select * from invoice_receive t\n" +
|
||||||
" where t.supermarket_id = ? \n" +
|
" where t.supermarket_id = ? \n" +
|
||||||
" and t.surplus > 0\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);
|
List<InvoiceReceive> receives = InvoiceReceive.dao.find(sql, supermarket_id);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,13 @@ import java.util.List;
|
||||||
public class TicketLogService extends BaseService {
|
public class TicketLogService extends BaseService {
|
||||||
public static final TicketLogService me = new TicketLogService();
|
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) {
|
public TicketLog checkInvalidTicketLog(String ticket_code) {
|
||||||
return TicketLog.dao.findFirst(
|
return TicketLog.dao.findFirst(
|
||||||
"select * from ticket_log t where t.state = ? and t.ticket_code = ?",
|
"select * from ticket_log t where t.state = ? and t.ticket_code = ?",
|
||||||
|
|
|
||||||
|
|
@ -38,13 +38,13 @@ public class TicketReceiveService extends BaseService {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Integer code = Integer.parseInt(ticket_code);
|
Long code = Long.parseLong(ticket_code);
|
||||||
|
|
||||||
String sql = "select * from ticket_receive t\n" +
|
String sql = "select * from ticket_receive t\n" +
|
||||||
" where t.supermarket_id = ? \n" +
|
" where t.supermarket_id = ? \n" +
|
||||||
" and t.surplus > 0 \n" +
|
" and t.surplus > 0 \n" +
|
||||||
" and cast(t.start_code as unsigned integer) <= ? \n" +
|
" and cast(t.start_code as unsigned) <= ? \n" +
|
||||||
" and cast(t.end_code as unsigned integer) >= ? \n" +
|
" and cast(t.end_code as unsigned) >= ? \n" +
|
||||||
" limit 1";
|
" limit 1";
|
||||||
TicketReceive receive = TicketReceive.dao.findFirst(sql, supermarket_id, code, code);
|
TicketReceive receive = TicketReceive.dao.findFirst(sql, supermarket_id, code, code);
|
||||||
|
|
||||||
|
|
@ -56,11 +56,11 @@ public class TicketReceiveService extends BaseService {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Integer code = Integer.parseInt(ticket_code);
|
Long code = Long.parseLong(ticket_code);
|
||||||
String sql = "select * from ticket_receive t\n" +
|
String sql = "select * from ticket_receive t\n" +
|
||||||
" where t.supermarket_id = ? \n" +
|
" where t.supermarket_id = ? \n" +
|
||||||
" and cast(t.start_code as unsigned integer) <= ? \n" +
|
" and cast(t.start_code as unsigned) <= ? \n" +
|
||||||
" and cast(t.end_code as unsigned integer) >= ? \n" +
|
" and cast(t.end_code as unsigned) >= ? \n" +
|
||||||
" limit 1";
|
" limit 1";
|
||||||
|
|
||||||
TicketReceive receive = TicketReceive.dao.findFirst(sql, supermarket_id, code, code);
|
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) {
|
private String getValidTicketCode(String next_ticket_code, Map<String, TicketLog> map) {
|
||||||
if (map.containsKey(next_ticket_code)) { // 说明下一个结算单号码已经作废,需要继续顺延
|
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 {
|
} else {
|
||||||
return next_ticket_code;
|
return next_ticket_code;
|
||||||
}
|
}
|
||||||
|
|
@ -88,7 +88,7 @@ public class TicketReceiveService extends BaseService {
|
||||||
String sql = "select * from ticket_receive t\n" +
|
String sql = "select * from ticket_receive t\n" +
|
||||||
" where t.supermarket_id = ? \n" +
|
" where t.supermarket_id = ? \n" +
|
||||||
" and t.surplus > 0\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);
|
List<TicketReceive> receives = TicketReceive.dao.find(sql, supermarket_id);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,9 +70,9 @@ public class InvoiceLogSyncService extends BaseSyncService {
|
||||||
receive.setCurrentCode(receive.getEndCode());
|
receive.setCurrentCode(receive.getEndCode());
|
||||||
} else {
|
} else {
|
||||||
if (code.equals(receive.getStartCode())) { // 作废第一张发票
|
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())) { // 作废顺延的下一张发票
|
} 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 {
|
} else {
|
||||||
// 其他情况下不更新 current_code
|
// 其他情况下不更新 current_code
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -125,9 +125,9 @@ public class OrderTempSyncService {
|
||||||
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
||||||
}
|
}
|
||||||
|
|
||||||
TicketLog ticketLog = TicketLogService.me.checkInvalidTicketLog(ticket_code);
|
TicketLog ticketLog = TicketLogService.me.checkUseTicketLog(ticket_code);
|
||||||
if (ticketLog != null) {
|
if (ticketLog != null) {
|
||||||
return Result.failedstr("结算单 %s 已作废", ticket_code);
|
return Result.failedstr("结算单 %s 已使用", ticket_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
ticketReceive.setSurplus(ticketReceive.getSurplus() - 1);
|
ticketReceive.setSurplus(ticketReceive.getSurplus() - 1);
|
||||||
|
|
@ -397,9 +397,9 @@ public class OrderTempSyncService {
|
||||||
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
||||||
}
|
}
|
||||||
|
|
||||||
TicketLog ticketLog = TicketLogService.me.checkInvalidTicketLog(ticket_code);
|
TicketLog ticketLog = TicketLogService.me.checkUseTicketLog(ticket_code);
|
||||||
if (ticketLog != null) {
|
if (ticketLog != null) {
|
||||||
return Result.failedstr("结算单 %s 已作废", ticket_code);
|
return Result.failedstr("结算单 %s 已使用", ticket_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
ticketReceive.setSurplus(ticketReceive.getSurplus() - 1);
|
ticketReceive.setSurplus(ticketReceive.getSurplus() - 1);
|
||||||
|
|
@ -766,9 +766,9 @@ public class OrderTempSyncService {
|
||||||
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
||||||
}
|
}
|
||||||
|
|
||||||
TicketLog ticketLog = TicketLogService.me.checkInvalidTicketLog(ticket_code);
|
TicketLog ticketLog = TicketLogService.me.checkUseTicketLog(ticket_code);
|
||||||
if (ticketLog != null) {
|
if (ticketLog != null) {
|
||||||
return Result.failedstr("结算单 %s 已作废", ticket_code);
|
return Result.failedstr("结算单 %s 已使用", ticket_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
ticketReceive.setSurplus(ticketReceive.getSurplus() - 1);
|
ticketReceive.setSurplus(ticketReceive.getSurplus() - 1);
|
||||||
|
|
@ -1188,9 +1188,9 @@ public class OrderTempSyncService {
|
||||||
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
return Result.failed("没有有效的结算单领用记录,或者结算单已经被使用");
|
||||||
}
|
}
|
||||||
|
|
||||||
TicketLog ticketLog = TicketLogService.me.checkInvalidTicketLog(ticket_code);
|
TicketLog ticketLog = TicketLogService.me.checkUseTicketLog(ticket_code);
|
||||||
if (ticketLog != null) {
|
if (ticketLog != null) {
|
||||||
return Result.failedstr("结算单 %s 已作废", ticket_code);
|
return Result.failedstr("结算单 %s 已使用", ticket_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
order.setTicketCode(ticket_code);
|
order.setTicketCode(ticket_code);
|
||||||
|
|
|
||||||
|
|
@ -67,9 +67,9 @@ public class TicketLogSyncService extends BaseSyncService {
|
||||||
receive.setCurrentCode(receive.getEndCode());
|
receive.setCurrentCode(receive.getEndCode());
|
||||||
} else {
|
} else {
|
||||||
if (ticket_code.equals(receive.getStartCode())) { // 作废第一张结算单
|
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())) { // 作废顺延的下一张结算单
|
} 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 {
|
} else {
|
||||||
// 其他情况下不更新 current_code
|
// 其他情况下不更新 current_code
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -78,9 +78,9 @@ public class InvoiceInvalidVerifySyncService {
|
||||||
receive.setCurrentCode(receive.getEndCode());
|
receive.setCurrentCode(receive.getEndCode());
|
||||||
} else {
|
} else {
|
||||||
if (model.getInvoiceCode().equals(receive.getStartCode())) { // 作废第一张发票
|
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())) { // 作废顺延的下一张发票
|
} 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 {
|
} else {
|
||||||
// 其他情况下不更新 current_code
|
// 其他情况下不更新 current_code
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -207,9 +207,9 @@ public class InvoiceLogSyncService extends BaseSyncService {
|
||||||
receive.setCurrentCode(receive.getEndCode());
|
receive.setCurrentCode(receive.getEndCode());
|
||||||
} else {
|
} else {
|
||||||
if (code.equals(receive.getStartCode())) { // 作废第一张发票
|
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())) { // 作废顺延的下一张发票
|
} 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 {
|
} else {
|
||||||
// 其他情况下不更新 current_code
|
// 其他情况下不更新 current_code
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -78,9 +78,9 @@ public class TicketInvalidVerifySyncService {
|
||||||
receive.setCurrentCode(receive.getEndCode());
|
receive.setCurrentCode(receive.getEndCode());
|
||||||
} else {
|
} else {
|
||||||
if (model.getTicketCode().equals(receive.getStartCode())) { // 作废第一张结算单
|
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())) { // 作废顺延的下一张结算单
|
} 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 {
|
} else {
|
||||||
// 其他情况下不更新 current_code
|
// 其他情况下不更新 current_code
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,9 +76,9 @@ public class TicketLogSyncService extends BaseSyncService {
|
||||||
receive.setCurrentCode(receive.getEndCode());
|
receive.setCurrentCode(receive.getEndCode());
|
||||||
} else {
|
} else {
|
||||||
if (ticket_code.equals(receive.getStartCode())) { // 作废第一张结算单
|
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())) { // 作废顺延的下一张结算单
|
} 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 {
|
} else {
|
||||||
// 其他情况下不更新 current_code
|
// 其他情况下不更新 current_code
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue