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; } } 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); //删除积分 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},