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