package com.klp.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.utils.StringUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.domain.bo.WmsOrderBo; import com.klp.domain.vo.WmsOrderVo; import com.klp.domain.WmsOrder; import com.klp.mapper.WmsOrderMapper; import com.klp.service.IWmsOrderService; import java.util.List; import java.util.Map; import java.util.Collection; /** * 订单主Service业务层处理 * * @author Joshi * @date 2025-07-18 */ @RequiredArgsConstructor @Service public class WmsOrderServiceImpl implements IWmsOrderService { private final WmsOrderMapper baseMapper; /** * 查询订单主 */ @Override public WmsOrderVo queryById(Long orderId){ return baseMapper.selectVoById(orderId); } /** * 查询订单主列表 */ @Override public TableDataInfo queryPageList(WmsOrderBo bo, PageQuery pageQuery) { QueryWrapper lqw = buildQueryWrapperPlus(bo); Page result = baseMapper.selectVoPlusPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** * 查询订单主列表ByStatus */ @Override public TableDataInfo queryPageListByStatus(WmsOrderBo bo, PageQuery pageQuery) { QueryWrapper lqw = buildQueryWrapperByStatus(bo); Page result = baseMapper.selectVoPlusPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } private QueryWrapper buildQueryWrapperByStatus(WmsOrderBo bo) { QueryWrapper lqw = Wrappers.query(); // 修改为order_status不是零就查出来 if (bo.getOrderStatus() != null) { if (bo.getOrderStatus() == -1) { // 当orderStatus为-1时,查询所有非0状态的记录 lqw.ne("o.order_status", 0); } else { // 当orderStatus为其他值时(包括0),按指定状态查询 lqw.eq("o.order_status", bo.getOrderStatus()); } } lqw.eq("o.del_flag", 0); lqw.eq(StringUtils.isNotBlank(bo.getOrderCode()), "o.order_code", bo.getOrderCode()); lqw.eq(bo.getCustomerId() != null, "o.customer_id", bo.getCustomerId()); lqw.eq(StringUtils.isNotBlank(bo.getSalesManager()), "o.sales_manager", bo.getSalesManager()); // 当orderStatus为null时不添加任何条件,查询所有记录 return lqw; } private QueryWrapper buildQueryWrapperPlus(WmsOrderBo bo) { QueryWrapper lqw = Wrappers.query(); lqw.eq("o.del_flag", 0); lqw.like(StringUtils.isNotBlank(bo.getOrderCode()), "o.order_code", bo.getOrderCode()); lqw.eq(bo.getCustomerId() != null, "o.customer_id", bo.getCustomerId()); lqw.eq(StringUtils.isNotBlank(bo.getSalesManager()), "o.sales_manager", bo.getSalesManager()); lqw.eq(bo.getOrderStatus() != null, "o.order_status", bo.getOrderStatus()); return lqw; } /** * 查询订单主列表 */ @Override public List queryList(WmsOrderBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page build = new PageQuery().build(); build.setSize(Long.MAX_VALUE); Page wmsOrderVoPage = baseMapper.selectVoPlusPage(build, lqw); return wmsOrderVoPage.getRecords(); } private LambdaQueryWrapper buildQueryWrapper(WmsOrderBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(StringUtils.isNotBlank(bo.getOrderCode()), WmsOrder::getOrderCode, bo.getOrderCode()); lqw.eq(bo.getCustomerId() != null, WmsOrder::getCustomerId, bo.getCustomerId()); lqw.eq(StringUtils.isNotBlank(bo.getSalesManager()), WmsOrder::getSalesManager, bo.getSalesManager()); lqw.eq(bo.getOrderStatus() != null, WmsOrder::getOrderStatus, bo.getOrderStatus()); return lqw; } /** * 新增订单主 */ @Override public Boolean insertByBo(WmsOrderBo bo) { WmsOrder add = BeanUtil.toBean(bo, WmsOrder.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setOrderId(add.getOrderId()); } return flag; } /** * 修改订单主 */ @Override public Boolean updateByBo(WmsOrderBo bo) { WmsOrder update = BeanUtil.toBean(bo, WmsOrder.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } /** * 保存前的数据校验 */ private void validEntityBeforeSave(WmsOrder entity){ //TODO 做一些数据校验,如唯一约束 } /** * 批量删除订单主 */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; } }