diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveController.java index 4b1a72f..fb6b7aa 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveController.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveController.java @@ -141,4 +141,20 @@ public class InvoiceReceiveController extends Controller { renderJson(Result.success(receives)); } + + /** + * 发票回收invoice_receive + */ + @Before(InvoiceReceivePKValidator.class) + public void recycle() { + Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); + + if (tokenuser == null) { + renderJson(Result.noauth()); + return; + } + + InvoiceReceive model = getModel(InvoiceReceive.class, "", true); // 忽略不在model中的字段 + renderJson(InvoiceReceiveSyncService.me.recycle(model, tokenuser)); + } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java index 087e52d..b08e5ab 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/invoice/receive/InvoiceReceiveSyncService.java @@ -15,6 +15,7 @@ import com.jfinal.log.Log; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.IAtom; +import java.util.Date; import java.util.List; public class InvoiceReceiveSyncService extends BaseSyncService { @@ -85,4 +86,54 @@ public class InvoiceReceiveSyncService extends BaseSyncService { } } } + + public Result recycle(InvoiceReceive model, Sysuser user) { + InvoiceReceive oldobj = model.findByPk(); + if (oldobj == null) { + return Result.failed("未找到领用记录"); + } + if (oldobj.getSurplus() == 0) { + return Result.failed("余票为零,无法回收"); + } + String endCode = oldobj.getCurrentCode(); + String currentCode = oldobj.getCurrentCode(); + + InvoiceReceive receive = oldobj.clone(); + receive.setChangeTime(new Date()); + // 有使用过的 + if (!StrKit.isBlank(endCode) && !StrKit.isBlank(currentCode)) { + Long end = Long.parseLong(endCode); + Long current = Long.parseLong(currentCode); + if (current > end) { + return Result.failed("当前编码大于结束编码,无法回收"); + } + receive.setEndCode(String.format("%0" + oldobj.getCurrentCode().length() + "d", current)); + } else { + receive.setStartCode(null); + receive.setEndCode(null); + } + receive.setSurplus(0); + + SyncTask syncTask = new SyncTask(); + + boolean ret = Db.tx(new IAtom() { + @Override + public boolean run() { + try { + return receive.update() + && SyncTaskService.me.save(syncTask.addUpdateData(receive), receive.getSupermarketId()) // 下发到指定的砂站 + && ModifyLogService.me.save(receive, oldobj, Enums.DataOpType.UPDATE.getId(), user); + } catch (Exception e) { + log.error(e.getMessage(), e); + return false; + } + } + }); + + if (ret) { + SyncTaskService.me.send(syncTask); + } + + return ret ? Result.object(receive) : Result.failed(false, "回收失败"); + } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveController.java index 6a59943..d5da401 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveController.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveController.java @@ -139,4 +139,20 @@ public class TicketReceiveController extends Controller { renderJson(Result.success(receives)); } + + /** + * 发票回收invoice_receive + */ + @Before(TicketReceivePKValidator.class) + public void recycle() { + Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token")); + + if (tokenuser == null) { + renderJson(Result.noauth()); + return; + } + + TicketReceive model = getModel(TicketReceive.class, "", true); // 忽略不在model中的字段 + renderJson(TicketReceiveSyncService.me.recycle(model, tokenuser)); + } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveSyncService.java index dbfde7a..318cea7 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/ticket/receive/TicketReceiveSyncService.java @@ -2,18 +2,17 @@ package com.cowr.service.ssjygl.ticket.receive; import com.cowr.common.enums.Enums; import com.cowr.common.view.Result; -import com.cowr.model.TicketReceive; -import com.cowr.model.Supermarket; -import com.cowr.model.SyncTask; -import com.cowr.model.Sysuser; +import com.cowr.model.*; import com.cowr.service.ssjygl.base.BaseSyncService; import com.cowr.service.ssjygl.main.SvrCacheData; import com.cowr.service.ssjygl.synctask.SyncTaskService; import com.cowr.ssjygl.modifylog.ModifyLogService; +import com.jfinal.kit.StrKit; import com.jfinal.log.Log; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.IAtom; +import java.util.Date; import java.util.List; public class TicketReceiveSyncService extends BaseSyncService { @@ -83,4 +82,55 @@ public class TicketReceiveSyncService extends BaseSyncService { } } } + + public Result recycle(TicketReceive model, Sysuser user) { + TicketReceive oldobj = model.findByPk(); + if (oldobj == null) { + return Result.failed("未找到领用记录"); + } + if (oldobj.getSurplus() == 0) { + return Result.failed("余票为零,无法回收"); + } + + String endCode = oldobj.getCurrentCode(); + String currentCode = oldobj.getCurrentCode(); + + TicketReceive receive = oldobj.clone(); + receive.setChangeTime(new Date()); + // 有使用过的 + if (!StrKit.isBlank(endCode) && !StrKit.isBlank(currentCode)) { + Long end = Long.parseLong(endCode); + Long current = Long.parseLong(currentCode); + if (current > end) { + return Result.failed("当前编码大于结束编码,无法回收"); + } + receive.setEndCode(String.format("%0" + oldobj.getCurrentCode().length() + "d", current)); + } else { + receive.setStartCode(null); + receive.setEndCode(null); + } + receive.setSurplus(0); + + SyncTask syncTask = new SyncTask(); + + boolean ret = Db.tx(new IAtom() { + @Override + public boolean run() { + try { + return receive.update() + && SyncTaskService.me.save(syncTask.addUpdateData(receive), receive.getSupermarketId()) // 下发到指定的砂站 + && ModifyLogService.me.save(receive, oldobj, Enums.DataOpType.UPDATE.getId(), user); + } catch (Exception e) { + log.error(e.getMessage(), e); + return false; + } + } + }); + + if (ret) { + SyncTaskService.me.send(syncTask); + } + + return ret ? Result.object(receive) : Result.failed(false, "回收失败"); + } }