解决结算单取消报错

dev
wany 2025-06-10 15:53:10 +08:00
parent e28986fe79
commit 8a9aa6af7d
1 changed files with 82 additions and 5 deletions

View File

@ -131,8 +131,11 @@ public class TicketLogSyncService extends BaseSyncService {
return Result.failed("未找到结算单记录");
}
if(ticketLog.getType() == 3){
return cancelType2(ticketLog, invalid_memo, sysuser);
}
return cancelType(ticketLog, invalid_memo, sysuser);
}
public Result cancelByCode(String ticket_code, String invalid_memo, Sysuser sysuser) {
TicketLog ticketLog = TicketLog.dao.findFirst("select * from ticket_log t where ticket_code = ? limit 1 ", ticket_code);
@ -141,8 +144,85 @@ public class TicketLogSyncService extends BaseSyncService {
return Result.failed("未找到结算单记录");
}
if(ticketLog.getType() == 3){
return cancelType2(ticketLog, invalid_memo, sysuser);
}
return cancelType(ticketLog, invalid_memo, sysuser);
}
/**
*
* @param ticketLog
* @param invalid_memo
* @param sysuser
* @return
*/
public Result cancelType(TicketLog ticketLog, String invalid_memo, Sysuser sysuser) {
if (ticketLog.getState() == OrderStateEnum.INVALID.getStateid()) {
return Result.failed("记录已作废");
}
OrderTransfer transfer = OrderTransfer.dao.findFirst("select * from order_transfer t \n" +
" where t.state = ? \n" +
" and t.ticket_code = ? ",
OrderStateEnum.RECEIVED.getStateid(),
ticketLog.getTicketCode()
);
if (transfer == null) {
return Result.failed("关联订单信息错误");
}
Map<Integer, SyncTask> map = new HashMap<>();
Date now = new Date();
Record logrecord = new Record();
logrecord.set("state", OrderStateEnum.INVALID.getStateid());
logrecord.set("ticket_code", ticketLog.getTicketCode());
transfer.setTicketCode(null);
int supermarket_id = transfer.getSupermarketId();
SyncTask syncTask = new SyncTask();
syncTask.addUpdateData(transfer);
ticketLog.setInvalidMemo(invalid_memo);
ticketLog.setInvalidTime(now);
ticketLog.setInvalidUserId(sysuser.getId());
ticketLog.setInvalidUserName(sysuser.getName());
ticketLog.setState(OrderStateEnum.INVALID.getStateid());
syncTask.addUpdateData(ticketLog);
map.put(supermarket_id,syncTask);
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() {
try {
boolean ret = transfer.update() && ticketLog.update();
if (!ret) {
return false;
}
// 将订单同步到不同的砂站
for (Map.Entry<Integer, SyncTask> entry : map.entrySet()) {
if (!SyncTaskService.me.save(entry.getValue(), entry.getKey())) {
return false;
}
}
return ModifyLogService.me.save(TicketLog.tablename, "id", logrecord.toJson(), Enums.DataOpType.SAVE.getId(), sysuser);
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
}
}
});
return ret ? Result.success() : Result.failed("修改失败");
}
/**
*
@ -189,9 +269,6 @@ public class TicketLogSyncService extends BaseSyncService {
logrecord.set("ticket_code", ticketLog.getTicketCode());
for (OrderTemp o : ordlist) {
if(o.getInvoiceType() == 2 && o.getInvoiceCode() != null){
return Result.failed("已经开专票的结算单不能取消");
}
o.setTicketCode(null);