From ec59428eacc798b8dfc617644aa9ca05066f2341 Mon Sep 17 00:00:00 2001
From: 姜友瑶 <935090232@qq.com>
Date: Sat, 02 Jul 2022 16:13:55 +0800
Subject: [PATCH] Merge branch 'developer'
---
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 134 ++++++++++++++++++++++++++++++++++++++++----
1 files changed, 122 insertions(+), 12 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index f569ace..4228c40 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -20,7 +20,10 @@
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.dao.SysUsersDao;
+import com.matrix.system.common.service.OperationLogService;
import com.matrix.system.constance.Dictionary;
+import com.matrix.system.enums.OperationButtonEnum;
+import com.matrix.system.enums.OperationFunctionEnum;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.plugin.util.CollectionUtils;
@@ -126,6 +129,9 @@
@Autowired
private AsyncMessageManager asyncMessageManager;
+ @Autowired
+ private OperationLogService operationLogService;
+
@Override
public int add(SysOrder sysOrder) {
@@ -177,13 +183,20 @@
}
@Override
- public SysOrder findById(Long id) {
+ public SysOrder findById(Long id) {
return sysOrderDao.selectById(id);
+
+ }
+
+ @Override
+ public List<SysOrder> findByIds(List<Long> ids) {
+ return sysOrderDao.selectByIds(ids);
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public SysOrder checkAndSaveOrder(SysOrder sysOrder) {
// 计算订单折扣金额,收款情况下 计算订单总额
@@ -233,12 +246,27 @@
//新增订单
sysOrder.setOrderNo(codeService.getOrderCode());
sysOrderDao.insert(sysOrder);
+ //保存单据日志
+ operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(),
+ OperationFunctionEnum.ORDER,
+ OperationButtonEnum.CREATE,
+ sysOrder.getId(),
+ sysOrder.getOrderNo(),
+ sysOrder.getVipId());
} else {
//更新订单
sysOrderDao.update(sysOrder);
//删除原有订单明细
orderItemDao.deleteByOrderId(sysOrder.getId());
+ //保存单据日志
+ operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(),
+ OperationFunctionEnum.ORDER,
+ OperationButtonEnum.UPDATE,
+ sysOrder.getId(),
+ sysOrder.getOrderNo(),
+ sysOrder.getVipId(),
+ "修改订单内容");
}
sysOrder.getItems().forEach(sysOrderItem -> {
@@ -266,9 +294,10 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public int cancelOrder(Long id) {
+ public void cancelOrder(Long id) {
SysOrder order = sysOrderDao.selectById(id);
+ SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
if (order.getStatu().equals(Dictionary.ORDER_STATU_DFK)) {
order.setStatu(Dictionary.ORDER_STATU_YQX);
@@ -277,10 +306,17 @@
//发送微信公众号提醒
UniformMsgParam uniformMsgParam = new UniformMsgParam(order.getCompanyId(), UniformMsgParam.GZH_DDQX);
uniformMsgParam.put("orderId", order.getId());
- asyncMessageManager.sendMsg(AsyncMessageRouting.SEND_UNIFORM_TEMPLATE_MSG ,uniformMsgParam);
+ asyncMessageManager.sendMsg(AsyncMessageRouting.SEND_UNIFORM_TEMPLATE_MSG, uniformMsgParam);
- return sysOrderDao.update(order);
-
+ sysOrderDao.update(order);
+ //保存单据日志
+ operationLogService.saveOperation(order.getCompanyId(), order.getShopId(),sysUsers.getSuId(),
+ OperationFunctionEnum.ORDER,
+ OperationButtonEnum.CANCEL,
+ order.getId(),
+ order.getOrderNo(),
+ order.getVipId(),
+ "未付款取消订单");
} else {
//一个订单只能被取消一次
@@ -377,8 +413,18 @@
// 取消订单
order.setStatu(Dictionary.ORDER_STATU_YQX);
- return sysOrderDao.update(order);
+ sysOrderDao.update(order);
+ //保存单据日志
+ operationLogService.saveOperation(order.getCompanyId(), order.getShopId(),sysUsers.getSuId(),
+ OperationFunctionEnum.ORDER,
+ OperationButtonEnum.CANCEL,
+ order.getId(),
+ order.getOrderNo(),
+ order.getVipId(),
+ "已付款取消订单");
}
+
+
}
@@ -512,14 +558,21 @@
//设置会员积分
addVipScore(pageOrder);
+
}
/**
* 付款后更新订单信息
+ *
* @param pageOrder
*/
private void updateOrderInfo(SysOrder pageOrder) {
+
+ SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+ pageOrder.setCashierId(user.getSuId());
+
pageOrder.setPayTime(new Date());
+
pageOrder.setStatu(Dictionary.ORDER_STATU_YFK);
List<SysOrderFlow> flows = pageOrder.getFlows();
@@ -528,14 +581,29 @@
.map(SysOrderFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal cardPayAmount = flows.stream()
- .filter(item -> item.getPayMethod().equals("储值卡") && item.getIsGift().equals("N"))
+ .filter(item -> item.getPayMethod().equals("储值卡"))
.map(SysOrderFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
pageOrder.setCardPay(cardPayAmount.doubleValue());
pageOrder.setCashPay(cashPayAmount.doubleValue());
//欠款金额在流水处理中处理了
+ double sum = flows.stream().mapToDouble(item -> item.getAmount().doubleValue()).sum();
+
+ if (sum > 0 && cardPayAmount.doubleValue() == 0 && cashPayAmount.doubleValue() == 0) {
+ throw new GlobleException("订单更新失败,支付金额计算错误,请联系管理员");
+ }
+
+
sysOrderDao.update(pageOrder);
+
+ //保存单据日志
+ operationLogService.saveOperation(pageOrder.getCompanyId(), pageOrder.getShopId(), user.getSuId(),
+ OperationFunctionEnum.ORDER,
+ OperationButtonEnum.ORDER_SK,
+ pageOrder.getId(),
+ pageOrder.getOrderNo(),
+ pageOrder.getVipId());
}
private void checkOrder(SysOrder pageOrder) {
@@ -567,7 +635,7 @@
entries.forEach(entrie -> {
double sum = entrie.getValue().stream().mapToDouble(AchieveNew::getGoodsCash).sum();
//todo 目前使用js计算金额可能存在精度的误差展示用0.1屏蔽
- if (Math.abs(sum- (item.getZkPrice()*item.getCount()) )>0.1) {
+ if (Math.abs(sum - (item.getZkPrice() * item.getCount())) > 0.1) {
ShoppingGoods shopGoods = shoppingGoodsDao.selectById(item.getGoodsId());
throw GlobleException.instance(shopGoods.getName() + "," + entrie.getKey() + "业绩金额与收款金额不一致");
}
@@ -863,6 +931,33 @@
}
});
+ // 充值卡订单欠款检测
+ if (Dictionary.FLAG_NO_N.equals(moneyCardUse.getIsVipCar())) {
+ SysOrderItem item = orderItemDao.selectById(moneyCardUse.getOrderItemId());
+ if (item != null) {
+ SysOrder sysOrder = sysOrderDao.selectById(item.getOrderId());
+ if (sysOrder != null) {
+ if (Dictionary.ORDER_STATU_QK.equals(sysOrder.getStatu())) {
+ if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
+ throw new GlobleException("充值卡订单存在欠款,无法使用赠送余额支付");
+ }
+
+ // 若该笔订单中,有多项明细,则充值卡直接无法支付; 若订单中,仅充值卡一项,则已付款和充值卡使用情况判断是否可使用
+ List<SysOrderItem> items = orderItemDao.selectByOrderId(sysOrder.getId());
+ if (items.size() > 1) {
+ throw new GlobleException("充值卡订单存在欠款,无法支付");
+ } else {
+ double totalUse = moneyCardUseFlowDao.selectCardUseAmount(moneyCardUse.getId());
+ Double hasPay = sysOrder.getZkTotal() - sysOrder.getArrears();
+ if (hasPay < (totalUse + flow.getAmount().doubleValue())) {
+ throw new GlobleException("充值卡订单存在欠款,已支付金额不足");
+ }
+ }
+ }
+ }
+ }
+ }
+
SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
@@ -983,7 +1078,7 @@
* @date 2016年9月19日
*/
public void addMoneyCardUse(SysOrder sourceOrder) {
-
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
List<SysOrderItem> orderItemList = sourceOrder.getItems();
for (SysOrderItem sysOrderItem : orderItemList) {
// 如果购买的是充值卡
@@ -1022,6 +1117,7 @@
moneyCardUse.setFailTime(invalidTime);
moneyCardUseDao.insert(moneyCardUse);
+
}
}
}
@@ -1290,7 +1386,7 @@
//赠送项目是否计算消耗业绩否则 赠送产品按原价计算消耗
boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
if (zsConsumeAchieve) {
- if (sysOrderItem.getPrice() <= 0) {
+ if (sysOrderItem.getZkPrice() <= 0) {
//等于0取原价
if (taocanId == null) {
puse.setPrice(goodsAssemble.getShoppingGoods().getPrice());
@@ -1402,9 +1498,9 @@
boolean zsConsumeAchieve = projServicesService.skipServiceOrderStep(Dictionary.ZS_CONSUME_ACHIEVE);
if (zsConsumeAchieve) {
//赠送情况下,如果收款金额大于0,就是赠送金额划扣的情况,金额即为划扣的折扣金额
- if(sysOrderItem.getZkPrice()>0){
+ if (sysOrderItem.getZkPrice() > 0) {
puse.setPrice(sysOrderItem.getZkPrice());
- }else{
+ } else {
puse.setPrice(sysOrderItem.getShoppingGoods().getSealPice());
}
} else {
@@ -1520,6 +1616,7 @@
moneyCardUseFlow.setCreateTime(new Date());
moneyCardUseFlow.setOperationId(user.getSuId());
moneyCardUseFlow.setBalance(cardUser.getGiftMoney() + cardUser.getRealMoney());
+ moneyCardUseFlow.setCarUseId(cardUser.getId());
moneyCardUseFlowDao.insert(moneyCardUseFlow);
order.setFlows(czVo.getFlows());
@@ -1626,6 +1723,14 @@
// 设置业绩
achieveNewService.addAchaeveByOrder(sysOrder);
+
+ //保存单据日志
+ operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(),
+ OperationFunctionEnum.ORDER,
+ OperationButtonEnum.ORDER_TK,
+ sysOrder.getId(),
+ sysOrder.getOrderNo(),
+ sysOrder.getVipId());
}
@@ -1853,4 +1958,9 @@
sysInstoreInfoService.check(instoreInfo);
}
+
+ @Override
+ public BigDecimal findVipArrearsByVipId(Long vipId) {
+ return sysOrderDao.selectArrearsByVipId(vipId);
+ }
}
--
Gitblit v1.9.1