发票结算单回收

dev
wuwenxiong 2022-01-06 17:30:09 +08:00
parent 60be64bc14
commit 6c013d24fe
4 changed files with 137 additions and 4 deletions

View File

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

View File

@ -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, "回收失败");
}
}

View File

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

View File

@ -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, "回收失败");
}
}