修复预付取消问题

dev
lisai 2022-12-21 13:23:25 +08:00
parent 46e58c548d
commit 239f6f7169
2 changed files with 282 additions and 278 deletions

View File

@ -1,253 +1,256 @@
package com.cowr.service.ssjygl.presellorder; package com.cowr.service.ssjygl.presellorder;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cowr.common.Const; import com.cowr.common.Const;
import com.cowr.common.enums.Enums; import com.cowr.common.enums.Enums;
import com.cowr.common.enums.OrderStateEnum; import com.cowr.common.enums.OrderStateEnum;
import com.cowr.common.view.Result; import com.cowr.common.view.Result;
import com.cowr.model.*; import com.cowr.model.*;
import com.cowr.service.ssjygl.base.BaseSyncService; import com.cowr.service.ssjygl.base.BaseSyncService;
import com.cowr.service.ssjygl.synctask.SyncTaskService; import com.cowr.service.ssjygl.synctask.SyncTaskService;
import com.cowr.ssjygl.modifylog.ModifyLogService; import com.cowr.ssjygl.modifylog.ModifyLogService;
import com.cowr.ssjygl.prepay.prepaycustomer.PrepayCustomerService; import com.cowr.ssjygl.prepay.prepaycustomer.PrepayCustomerService;
import com.jfinal.kit.StrKit; import com.jfinal.kit.StrKit;
import com.jfinal.log.Log; import com.jfinal.log.Log;
import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.IAtom; import com.jfinal.plugin.activerecord.IAtom;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
/** /**
* Generated by COWR Wed Dec 15 11:37:33 CST 2021 * Generated by COWR Wed Dec 15 11:37:33 CST 2021
* TableName: presell_order * TableName: presell_order
* Remarks: * Remarks:
* PrimaryKey: id * PrimaryKey: id
*/ */
public class PresellOrderSyncService extends BaseSyncService { public class PresellOrderSyncService extends BaseSyncService {
private static final Log log = Log.getLog(PresellOrderSyncService.class); private static final Log log = Log.getLog(PresellOrderSyncService.class);
public static final PresellOrderSyncService me = new PresellOrderSyncService(); public static final PresellOrderSyncService me = new PresellOrderSyncService();
public Result save(PresellOrder model, Sysuser tokenuser) { public Result save(PresellOrder model, Sysuser tokenuser) {
try { try {
Integer customer_id = model.getCustomerId(); Integer customer_id = model.getCustomerId();
Customer customer = Customer.dao.findById(customer_id); Customer customer = Customer.dao.findById(customer_id);
if (customer == null) { if (customer == null) {
return Result.failed(false,"按客户id未找到对应客户信息"); return Result.failed(false,"按客户id未找到对应客户信息");
} }
Integer type = customer.getType(); Integer type = customer.getType();
if (type == null || type != 1) { if (type == null || type != 1) {
return Result.failed(false,"选择的客户不是预付费客户"); return Result.failed(false,"选择的客户不是预付费客户");
} }
PrepayCustomer prepayCustomer = PrepayCustomerService.me.getPrepayCustomer(customer.getId()); PrepayCustomer prepayCustomer = PrepayCustomerService.me.getPrepayCustomer(customer.getId());
if (prepayCustomer == null) { if (prepayCustomer == null) {
return Result.failed(false,"未获取到预付费客户信息"); return Result.failed(false,"未获取到预付费客户信息");
} }
PrepayCustomer prepayCustomerSurplus = PrepayCustomerService.me.getPrepayCustomerSurplus(customer.getId()); PrepayCustomer prepayCustomerSurplus = PrepayCustomerService.me.getPrepayCustomerSurplus(customer.getId());
if (prepayCustomerSurplus == null) { if (prepayCustomerSurplus == null) {
return Result.failed(false,"未获取到预付费客户可用余额信息"); return Result.failed(false,"未获取到预付费客户可用余额信息");
} }
if (model.getPresellAmount().compareTo(prepayCustomerSurplus.getSurplus()) == 1) { // 预售金额大于可用余额 if (model.getPresellAmount().compareTo(prepayCustomerSurplus.getSurplus()) == 1) { // 预售金额大于可用余额
return Result.failed(false,"余额不足,当前客户可用余额【"+ prepayCustomerSurplus.getSurplus()+"】元"); return Result.failed(false,"余额不足,当前客户可用余额【"+ prepayCustomerSurplus.getSurplus()+"】元");
} }
model.setId(StrKit.getRandomUUID()); model.setId(StrKit.getRandomUUID());
model.setCreateTime(new Date()); model.setCreateTime(new Date());
model.setCreateUserId(tokenuser.getId()); model.setCreateUserId(tokenuser.getId());
model.setCreateUserName(tokenuser.getName()); model.setCreateUserName(tokenuser.getName());
SyncTask synctask = new SyncTask(); SyncTask synctask = new SyncTask();
SyncTask synctaskincrement = new SyncTask(); SyncTask synctaskincrement = new SyncTask();
boolean ret = Db.tx(new IAtom() { boolean ret = Db.tx(new IAtom() {
@Override @Override
public boolean run() throws SQLException { public boolean run() throws SQLException {
boolean ret = model.save(); boolean ret = model.save();
if (!ret) { if (!ret) {
return false; return false;
} }
synctask.addSaveData(model); synctask.addSaveData(model);
Integer presellType = customer.getPresellType(); Integer presellType = customer.getPresellType();
if (presellType == 0) { if (presellType == 0) {
customer.setPresellType(1); customer.setPresellType(1);
ret = customer.update(); ret = customer.update();
synctask.addUpdateData(customer); synctask.addUpdateData(customer);
if (!ret) { if (!ret) {
return false; return false;
} }
} }
prepayCustomer.setSurplus(prepayCustomer.getSurplus().subtract(model.getPresellAmount())); prepayCustomer.setSurplus(prepayCustomer.getSurplus().subtract(model.getPresellAmount()));
// 余额变化需要广播 // 余额变化需要广播
synctaskincrement.addIncrementData( synctaskincrement.addIncrementData(
prepayCustomer.getTablename(), prepayCustomer.getTablename(),
"id", "id",
prepayCustomer.getId(), prepayCustomer.getId(),
new JSONObject().fluentPut("surplus", new BigDecimal(0).subtract(model.getPresellAmount())) new JSONObject().fluentPut("surplus", new BigDecimal(0).subtract(model.getPresellAmount()))
); );
SyncTaskService.me.save(synctaskincrement); SyncTaskService.me.save(synctaskincrement);
ret = prepayCustomer.update(); ret = prepayCustomer.update();
if (!ret) { if (!ret) {
return false; return false;
} }
return SyncTaskService.me.save(synctask) return SyncTaskService.me.save(synctask)
&& ModifyLogService.me.save(model, null, Enums.DataOpType.SAVE.getId(), tokenuser); && ModifyLogService.me.save(model, null, Enums.DataOpType.SAVE.getId(), tokenuser);
} }
}); });
// todo客户余额变更时需短信通知 // todo客户余额变更时需短信通知
return ret ? Result.object(model) : Result.failed(false, "新增失败"); return ret ? Result.object(model) : Result.failed(false, "新增失败");
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
return Result.failed(false, e.getMessage()); return Result.failed(false, e.getMessage());
} }
} }
public Result edit(PresellOrder model, Sysuser tokenuser) { public Result edit(PresellOrder model, Sysuser tokenuser) {
try { try {
// 注意这里有 !,找到后才做 update 操作 // 注意这里有 !,找到后才做 update 操作
PresellOrder oldobj = model.findByPk(); PresellOrder oldobj = model.findByPk();
if (oldobj == null) { if (oldobj == null) {
return Result.failed(false, "按主键未找到对应记录"); return Result.failed(false, "按主键未找到对应记录");
} }
PresellOrder saveold = oldobj.clone(); PresellOrder saveold = oldobj.clone();
oldobj.setPresellDate(model.getPresellDate()); oldobj.setPresellDate(model.getPresellDate());
oldobj.setInvoiceCode(model.getInvoiceCode()); oldobj.setInvoiceCode(model.getInvoiceCode());
oldobj.setInvoiceNumber(model.getInvoiceNumber()); oldobj.setInvoiceNumber(model.getInvoiceNumber());
oldobj.setMemo(model.getMemo()); oldobj.setMemo(model.getMemo());
SyncTask synctask = new SyncTask(); SyncTask synctask = new SyncTask();
boolean ret = Db.tx(new IAtom() { boolean ret = Db.tx(new IAtom() {
@Override @Override
public boolean run() { public boolean run() {
try { try {
boolean ret = oldobj.update(); boolean ret = oldobj.update();
if (!ret) { if (!ret) {
return false; return false;
} }
synctask.addUpdateData(oldobj); synctask.addUpdateData(oldobj);
return SyncTaskService.me.save(synctask) return SyncTaskService.me.save(synctask)
&& ModifyLogService.me.save(model, saveold, Enums.DataOpType.UPDATE.getId(), tokenuser); && ModifyLogService.me.save(model, saveold, Enums.DataOpType.UPDATE.getId(), tokenuser);
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
return false; return false;
} }
} }
}); });
if (ret) { if (ret) {
SyncTaskService.me.send(synctask); SyncTaskService.me.send(synctask);
} }
return ret ? Result.object(oldobj) : Result.failed(false, "修改失败"); return ret ? Result.object(oldobj) : Result.failed(false, "修改失败");
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
return Result.failed(false, "修改失败"); return Result.failed(false, "修改失败");
} }
} }
/** /**
* *
* *
* @param model BaseModel * @param model BaseModel
* @return Result * @return Result
*/ */
public Result delete(PresellOrder model, Sysuser tokenuser) { public Result delete(PresellOrder model, Sysuser tokenuser) {
try { try {
// 注意这里有 !,找到后才做 delete 操作 // 注意这里有 !,找到后才做 delete 操作
if (!model.checkExistsByPk()) { if (!model.checkExistsByPk()) {
return Result.failed(false, "按主键未找到对应记录"); return Result.failed(false, "按主键未找到对应记录");
} }
// 如果预售单已经进行了配额则不能删除 // 如果预售单已经进行了配额则不能删除
List<Ordercluster> list = Ordercluster.dao.find("select * from ordercluster where presell_order_id = ? and state != ?", List<Ordercluster> list = Ordercluster.dao.find("select * from ordercluster where presell_order_id = ? and state != ?",
model.getId(), OrderStateEnum.INVALID.getStateid()); model.getId(), OrderStateEnum.INVALID.getStateid());
if (list.size() > 0) { if (list.size() > 0) {
return Result.failed(false, "预售单已配额"); return Result.failed(false, "预售单已配额");
} }
PresellOrder oldobj = model.findByPk(); // 找到旧记录进行更新 PresellOrder oldobj = model.findByPk(); // 找到旧记录进行更新
if (oldobj == null) { if (oldobj == null) {
return Result.failed(false, "按主键未找到对应记录"); return Result.failed(false, "按主键未找到对应记录");
} }
if (!oldobj.hasDelKey()) { if (!oldobj.hasDelKey()) {
return Result.failed(false, "不存在逻辑删除字段"); return Result.failed(false, "不存在逻辑删除字段");
} }
PrepayCustomer prepayCustomer = PrepayCustomerService.me.getPrepayCustomer(oldobj.getCustomerId()); PrepayCustomer prepayCustomer = PrepayCustomerService.me.getPrepayCustomer(oldobj.getCustomerId());
if (prepayCustomer == null) { if (prepayCustomer == null) {
return Result.failed(false,"未获取到预付费客户信息"); return Result.failed(false,"未获取到预付费客户信息");
} }
PresellOrder saveold = oldobj.clone(); PresellOrder saveold = oldobj.clone();
oldobj.setDel(Const.LOGIC_DEL_INVALID); // 逻辑删除字段统一用 del oldobj.setDel(Const.LOGIC_DEL_INVALID); // 逻辑删除字段统一用 del
SyncTask synctask = new SyncTask(); SyncTask synctask = new SyncTask();
SyncTask synctaskincrement = new SyncTask(); SyncTask synctaskincrement = new SyncTask();
boolean ret = Db.tx(new IAtom() {
@Override synctask.setSupermarketId(saveold.getSupermarketId());
public boolean run() {
try { boolean ret = Db.tx(new IAtom() {
boolean ret = oldobj.update(); @Override
public boolean run() {
if (!ret) { try {
return false; boolean ret = oldobj.update();
}
if (!ret) {
prepayCustomer.setSurplus(prepayCustomer.getSurplus().add(saveold.getPresellAmount())); return false;
}
synctaskincrement.addIncrementData(
prepayCustomer.getTablename(), prepayCustomer.setSurplus(prepayCustomer.getSurplus().add(saveold.getPresellAmount()));
"id",
prepayCustomer.getId(), synctaskincrement.addIncrementData(
new JSONObject().fluentPut("surplus", saveold.getPresellAmount()) prepayCustomer.getTablename(),
); "id",
prepayCustomer.getId(),
// 余额变化需要广播 new JSONObject().fluentPut("surplus", saveold.getPresellAmount())
SyncTaskService.me.save(synctaskincrement); );
ret = prepayCustomer.update();
// 余额变化需要广播
if (!ret) { SyncTaskService.me.save(synctaskincrement);
return false; ret = prepayCustomer.update();
}
if (!ret) {
synctask.addUpdateData(oldobj); return false;
}
return SyncTaskService.me.save(synctask)
&& ModifyLogService.me.save(oldobj, saveold, Enums.DataOpType.UPDATE.getId(), tokenuser); synctask.addUpdateData(oldobj);
} catch (Exception e) {
log.error(e.getMessage(), e); return SyncTaskService.me.save(synctask)
return false; && ModifyLogService.me.save(oldobj, saveold, Enums.DataOpType.UPDATE.getId(), tokenuser);
} } catch (Exception e) {
} log.error(e.getMessage(), e);
}); return false;
}
if (ret) { }
SyncTaskService.me.send(synctask); });
}
if (ret) {
return ret ? Result.object(oldobj) : Result.failed(false, "取消失败"); SyncTaskService.me.send(synctask);
} catch (Exception e) { }
log.error(e.getMessage(), e);
return Result.failed(false, "取消失败"); return ret ? Result.object(oldobj) : Result.failed(false, "取消失败");
} } catch (Exception e) {
} log.error(e.getMessage(), e);
} return Result.failed(false, "取消失败");
}
}
}

View File

@ -73,37 +73,37 @@ public class Main {
System.out.println("orders : " + orders.size()); System.out.println("orders : " + orders.size());
// List<OrderTemp> orders = OrderTemp.dao.find("select * from order_temp where customer_id = 172 and state = 5 and create_time >= '2022-03-04' and create_time < '2022-04-25'"); // //List<OrderTemp> orders = OrderTemp.dao.find("select * from order_temp where customer_id = 172 and state = 5 and create_time >= '2022-03-04' and create_time < '2022-04-25'");
// //
//
Db.tx(new IAtom() {
@Override
public boolean run() {
try {
for (int i = 0; i < orders.size(); i++) {
System.out.println("处理 " + i);
DOrder o = orders.get(i);
// Db.tx(new IAtom() {
// @Override
// public boolean run() {
// try {
// for (int i = 0; i < orders.size(); i++) {
// System.out.println("处理 " + i);
// DOrder o = orders.get(i);
//
// if (!m.pass(o, now)) { // if (!m.pass(o, now)) {
// return false; // return false;
// } // }
//
if (!m.updateErrorData(o, now)) { //// if (!m.updateErrorData(o, now)) {
return false; //// return false;
} //// }
} // }
//
return true; // return true;
} catch (Exception e) { // } catch (Exception e) {
e.printStackTrace(); // e.printStackTrace();
return false; // return false;
} // }
} // }
}); // });
} }
private List<DOrder> imp() throws ParseException { private List<DOrder> imp() throws ParseException {
String filepath = "C:\\Users\\lisai\\OneDrive\\文档\\黄砂经营管理\\浠水\\9月1日到11月7日补开普票统计.xlsx"; String filepath = "C:\\Users\\lisai\\OneDrive\\文档\\黄砂经营管理\\浠水\\9月1日到11月7日补开普票统计给李工处理新普票号-程兴提供.xls";
List<DOrder> out = new ArrayList<>(); List<DOrder> out = new ArrayList<>();
try (FileInputStream in = new FileInputStream(new File(filepath))) { try (FileInputStream in = new FileInputStream(new File(filepath))) {
@ -158,7 +158,8 @@ public class Main {
if (!StrKit.notBlank(, )) { if (!StrKit.notBlank(, )) {
System.out.println("发票代码错误 " + + ", " + j); System.out.println("发票代码错误 " + + ", " + j);
return null; continue;
// return null;
} }
String[] = .split("至"); String[] = .split("至");
@ -199,7 +200,7 @@ public class Main {
} }
for (OrderTemp o : orders) { for (OrderTemp o : orders) {
if (StrKit.isBlank(o.getInvoiceNumber())) { if (StrKit.notBlank(o.getInvoiceNumber())) {
out.add(new DOrder(o, , , , )); out.add(new DOrder(o, , , , ));
} }
} }