From baa1c7ecdc47c5da14790b422007ce21e0547ffa Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Fri, 18 Mar 2022 00:50:23 +0800
Subject: [PATCH] 重构:订单创建和修改方法
---
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java | 104 +++++++++++++++++++++++++
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 116 +++-------------------------
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml | 2
3 files changed, 115 insertions(+), 107 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
index ec62439..fc54596 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
@@ -19,21 +19,27 @@
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.BusParameterSettingsDao;
+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.dto.MoneyCardOperationDto;
import com.matrix.system.hive.dto.MoneyCardPayDto;
import com.matrix.system.hive.dto.ProjUseOperationDto;
import com.matrix.system.hive.plugin.util.CollectionUtils;
+import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.hive.service.CodeService;
import com.matrix.system.hive.service.MoneyCardUseService;
import com.matrix.system.hive.service.SysProjUseService;
import com.matrix.system.score.constant.ScoreSettingConstant;
import com.matrix.system.score.entity.ScoreVipDetail;
+import com.matrix.system.score.service.ScoreVipDetailService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
@@ -52,6 +58,9 @@
@Component
public class SysOrderServiceHelper {
+
+ @Autowired
+ ScoreVipDetailService scoreVipDetailService;
@Autowired
SysVipInfoDao sysVipInfoDao;
@@ -74,6 +83,11 @@
SysOutStoreItemDao sysOutStoreItemDao;
@Autowired
+ private SysOrderDao sysOrderDao;
+
+ @Autowired
+ private OperationLogService operationLogService;
+ @Autowired
ShoppingGoodsDao shoppingGoodsDao;
@Autowired
@@ -88,6 +102,10 @@
@Autowired
MoneyCardUseService moneyCardUseService;
+
+
+ @Autowired
+ private SysOrderItemDao orderItemDao;
/**
* 创建支付流水
@@ -259,6 +277,7 @@
/**
* 新增出库单并更新本店库存
* jyytodo 继续优化
+ *
* @param order
*/
public void addOutStore(SysOrder order) {
@@ -373,10 +392,9 @@
}
-
-
/**
* 设置会员消费积分
+ *
* @param pageOrder
*/
public void addVipScore(SysOrder pageOrder) {
@@ -527,8 +545,90 @@
}
}
+ /**
+ * 创建订单信息
+ *
+ * @param sysOrder
+ * @return
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public SysOrder saveOrder(SysOrder sysOrder) {
+
+ //校验参数 jyytodo
+
+ // 计算订单折扣金额,收款情况下 计算订单总额
+ double zkTotal = 0.0;
+ // 页面的pageOrder 参数只包含支付金额信息,不带有购买商品
+ for (SysOrderItem item : sysOrder.getItems()) {
+ ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId());
+ item.setType(shoppingGoods.getGoodType());
+ if (item.getZkPrice() == 0) {
+ item.setIsFree(Dictionary.FLAG_YES);
+ }
+ Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
+ zkTotal = MoneyUtil.add(zkTotal, itemZkTotal);
+ item.setStatus(Dictionary.ORDER_STATU_DFK);
+ }
+
+ SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+ sysOrder.setZkTotal(zkTotal);
+ sysOrder.setStatu(Dictionary.ORDER_STATU_DFK);
+
+ sysOrder.setStaffId(user.getSuId());
+ sysOrder.setCompanyId(user.getCompanyId());
+
+ //新增订单
+ sysOrder.setOrderNo(codeService.getOrderCode());
+ sysOrderDao.insert(sysOrder);
+
+ //保存单据明细
+ sysOrder.getItems().forEach(sysOrderItem -> {
+ sysOrderItem.setOrderId(sysOrder.getId());
+ orderItemDao.insert(sysOrderItem);
+ });
+
+ //保存单据日志
+ operationLogService.saveOperation(sysOrder.getCompanyId(), sysOrder.getShopId(), user.getSuId(),
+ OperationFunctionEnum.ORDER,
+ OperationButtonEnum.CREATE,
+ sysOrder.getId(),
+ sysOrder.getOrderNo(),
+ sysOrder.getVipId());
+
+ return sysOrder;
+ }
+ /**
+ * 修改订单信息
+ *
+ * @param sysOrder
+ * @return
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public SysOrder modifyOrder(SysOrder sysOrder) {
+ // 计算订单折扣金额,收款情况下 计算订单总额
+ double zkTotal = 0.0;
+ for (SysOrderItem item : sysOrder.getItems()) {
+ ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId());
+ item.setType(shoppingGoods.getGoodType());
+ if (item.getZkPrice() == 0) {
+ item.setIsFree(Dictionary.FLAG_YES);
+ }
+ Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
+ zkTotal = MoneyUtil.add(zkTotal, itemZkTotal);
+ }
+ sysOrder.setZkTotal(zkTotal);
+ //更新订单
+ sysOrderDao.update(sysOrder);
+ //删除原有订单明细
+ orderItemDao.deleteByOrderId(sysOrder.getId());
+ sysOrder.getItems().forEach(sysOrderItem -> {
+ sysOrderItem.setOrderId(sysOrder.getId());
+ orderItemDao.insert(sysOrderItem);
+ });
+ return sysOrder;
+ }
}
\ No newline at end of file
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 99bff37..72f57c1 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
@@ -37,8 +37,6 @@
import com.matrix.system.hive.pojo.ShoppingCarItem;
import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
import com.matrix.system.hive.service.*;
-import com.matrix.system.score.constant.ScoreSettingConstant;
-import com.matrix.system.score.entity.ScoreVipDetail;
import com.matrix.system.score.service.ScoreVipDetailService;
import com.matrix.system.shopXcx.mqTask.AsyncMessageRouting;
import com.matrix.system.wechart.templateMsg.UniformMsgParam;
@@ -145,7 +143,6 @@
private SysOrderServiceHelper sysOrderServiceHelper;
-
@Autowired
MoneyCardUseService moneyCardUseService;
@@ -156,91 +153,15 @@
@Transactional(rollbackFor = Exception.class)
public SysOrder checkAndSaveOrder(SysOrder sysOrder) {
- // 计算订单折扣金额,收款情况下 计算订单总额
- double zkTotal = 0.0;
-
- // 判断是否为退款
- String orderStatus = Dictionary.ORDER_STATU_DFK;
- if (Dictionary.ORDER_STATU_TK.equals(sysOrder.getStatu())) {
- orderStatus = Dictionary.ORDER_STATU_TK;
- }
-
- // 页面的pageOrder 参数只包含支付金额信息,不带有购买商品
- for (SysOrderItem item : sysOrder.getItems()) {
- // 若为退款,则先更新原有数量
- if (orderStatus.equals(Dictionary.ORDER_STATU_TK)) {
- SysOrderItem sysOrderItem = new SysOrderItem();
- sysOrderItem.setId(item.getId());
- sysOrderItem.setCount(item.getPreCount() - item.getCount());
- orderItemDao.update(sysOrderItem);
- }
- item.setId(null);
-
- ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId());
- item.setType(shoppingGoods.getGoodType());
- if (item.getZkPrice() == 0) {
- item.setIsFree(Dictionary.FLAG_YES);
- }
-
- // 订单欠款减去支付金额 设置实际欠款
- Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
- zkTotal = MoneyUtil.add(zkTotal, itemZkTotal);
- item.setStatus(orderStatus);
- }
-
- SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
- sysOrder.setZkTotal(zkTotal);
- sysOrder.setStatu(orderStatus);
- SysOrder source = null;
- if (sysOrder.getId() != null) {
- source = sysOrderDao.selectById(sysOrder.getId());
- }
- sysOrder.setStaffId(source != null ? source.getStaffId() : user.getSuId());
- sysOrder.setCompanyId(source != null ? source.getCompanyId() : user.getCompanyId());
-
-
- if (sysOrder.getId() == null) {
- //新增订单
- 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());
-
+ if (Objects.isNull(sysOrder.getId())) {
+ LogUtil.info("新增正向订单");
+ return sysOrderServiceHelper.saveOrder(sysOrder);
} 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(),
- "修改订单内容");
+ LogUtil.info("修改订单");
+ return sysOrderServiceHelper.modifyOrder(sysOrder);
}
- sysOrder.getItems().forEach(sysOrderItem -> {
- sysOrderItem.setOrderId(sysOrder.getId());
- if (sysOrder.getStatu().equals(Dictionary.ORDER_STATU_TK)) {
- // 取负数
- sysOrderItem.setCount(-sysOrderItem.getCount());
- orderItemDao.insert(sysOrderItem);
- // 调整回来
- sysOrderItem.setCount(-sysOrderItem.getCount());
- } else {
- orderItemDao.insert(sysOrderItem);
- }
- });
-
- return sysOrder;
}
/**
@@ -485,7 +406,7 @@
sysVipInfoService.updateDealStatus(pageOrder.getVipId(), BooleanEnum.TRUE.getValue());
//添加支付流水
- sysOrderServiceHelper.addOrderFlow(pageOrder,false);
+ sysOrderServiceHelper.addOrderFlow(pageOrder, false);
//扣除储值卡余额
sysOrderServiceHelper.cardPaySk(pageOrder);
@@ -533,7 +454,7 @@
* @param pageOrder
*/
private void updateOrderInfo(SysOrder pageOrder) {
- LogUtil.info("付款更新订单信息 id={}",pageOrder.getId());
+ LogUtil.info("付款更新订单信息 id={}", pageOrder.getId());
SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
pageOrder.setCashierId(user.getSuId());
@@ -594,7 +515,7 @@
//检查业绩设置
checkOrderAchieve(pageOrder);
- LogUtil.info("订单满足支付条件 id={}",pageOrder.getId());
+ LogUtil.info("订单满足支付条件 id={}", pageOrder.getId());
}
@@ -631,12 +552,9 @@
}
-
-
-
-
/**
* 补交
+ *
* @author:姜友瑶
* @date 2016年9月19日
*/
@@ -646,7 +564,7 @@
SysOrder sourceOrder = sysOrderDao.selectById(pageOrder.getId());
//添加支付流水
- sysOrderServiceHelper.addOrderFlow(pageOrder,true);
+ sysOrderServiceHelper.addOrderFlow(pageOrder, true);
//扣除储值卡余额
sysOrderServiceHelper.cardPaySk(pageOrder);
@@ -667,7 +585,7 @@
if (refundTotal == pageOrder.getArrears()) {
sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
- }else{
+ } else {
sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
}
sourceOrder.setArrears(sourceOrder.getArrears() - refundTotal);
@@ -675,14 +593,6 @@
sourceOrder.setCashPay(sourceOrder.getCashPay() == null ? 0 : sourceOrder.getCashPay() + cashPayTotal);
sysOrderDao.update(sourceOrder);
}
-
-
-
-
-
-
-
-
/**
@@ -773,7 +683,7 @@
order.setFlows(czVo.getFlows());
- sysOrderServiceHelper.addOrderFlow(order,false);
+ sysOrderServiceHelper.addOrderFlow(order, false);
// 添加员工业绩
achieveNewService.addAchaeveByOrder(order);
@@ -867,7 +777,7 @@
// 添加订单收款流水
- sysOrderServiceHelper.addOrderFlow(sysOrder,false);
+ sysOrderServiceHelper.addOrderFlow(sysOrder, false);
//退款退套餐退项目
refundProjUse(sysOrder);
//删除积分
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
index 2e2de04..81ed5fc 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
@@ -88,7 +88,6 @@
<insert id="insert" parameterType="SysOrderItem"
useGeneratedKeys="true" keyProperty="id">
INSERT INTO sys_order_item (
- ID,
ORDER_ID,
COUNT,
refundCount,
@@ -106,7 +105,6 @@
pay_method_detail
)
VALUES (
- #{id},
#{orderId},
#{count},
#{refundCount},
--
Gitblit v1.9.1