package com.klp.service.impl; import cn.hutool.core.bean.BeanUtil; 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 org.springframework.transaction.annotation.Transactional; import com.klp.common.helper.LoginHelper; import com.klp.domain.bo.WmsTransferOrderBo; import com.klp.domain.vo.WmsTransferOrderVo; import com.klp.domain.WmsTransferOrder; import com.klp.domain.WmsTransferOrderItem; import com.klp.mapper.WmsTransferOrderMapper; import com.klp.mapper.WmsTransferOrderItemMapper; import com.klp.service.IWmsTransferOrderService; import com.klp.service.IWmsTransferOrderItemService; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Collection; /** * 调拨单主Service业务层处理 * * @author klp * @date 2026-03-27 */ @RequiredArgsConstructor @Service public class WmsTransferOrderServiceImpl implements IWmsTransferOrderService { private final WmsTransferOrderMapper baseMapper; private final WmsTransferOrderItemMapper wmsTransferOrderItemMapper; private final IWmsTransferOrderItemService wmsTransferOrderItemService; /** * 查询调拨单主 */ @Override public WmsTransferOrderVo queryById(Long orderId){ return baseMapper.selectVoById(orderId); } /** * 查询调拨单主列表 */ @Override public TableDataInfo queryPageList(WmsTransferOrderBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** * 查询调拨单主列表 */ @Override public List queryList(WmsTransferOrderBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper buildQueryWrapper(WmsTransferOrderBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(StringUtils.isNotBlank(bo.getTransferNo()), WmsTransferOrder::getTransferNo, bo.getTransferNo()); lqw.like(StringUtils.isNotBlank(bo.getTransferName()), WmsTransferOrder::getTransferName, bo.getTransferName()); lqw.eq(bo.getTransferStatus() != null, WmsTransferOrder::getTransferStatus, bo.getTransferStatus()); lqw.eq(bo.getTransferTime() != null, WmsTransferOrder::getTransferTime, bo.getTransferTime()); lqw.like(StringUtils.isNotBlank(bo.getTransferType()), WmsTransferOrder::getTransferType, bo.getTransferType()); lqw.like(StringUtils.isNotBlank(bo.getApproveBy()), WmsTransferOrder::getApproveBy, bo.getApproveBy()); lqw.eq(bo.getApproveStatus() != null, WmsTransferOrder::getApproveStatus, bo.getApproveStatus()); lqw.eq(bo.getApproveTime() != null, WmsTransferOrder::getApproveTime, bo.getApproveTime()); return lqw; } /** * 新增调拨单主 */ @Override public Boolean insertByBo(WmsTransferOrderBo bo) { WmsTransferOrder add = BeanUtil.toBean(bo, WmsTransferOrder.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setOrderId(add.getOrderId()); } return flag; } /** * 修改调拨单主 */ @Override public Boolean updateByBo(WmsTransferOrderBo bo) { WmsTransferOrder update = BeanUtil.toBean(bo, WmsTransferOrder.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } /** * 保存前的数据校验 */ private void validEntityBeforeSave(WmsTransferOrder entity){ //TODO 做一些数据校验,如唯一约束 } /** * 批量删除调拨单主 */ @Override @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } // 先删除关联的调拨单明细记录 if (ids != null && !ids.isEmpty()) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(WmsTransferOrderItem::getTransferId, ids); wmsTransferOrderItemMapper.delete(queryWrapper); } // 再删除调拨单主记录 return baseMapper.deleteBatchIds(ids) > 0; } /** * 审批调拨单 */ @Override public Boolean approve(Long orderId, Integer approveStatus) { WmsTransferOrder order = baseMapper.selectById(orderId); if (order == null) { throw new RuntimeException("调拨单不存在"); } if (order.getApproveStatus() != null && order.getApproveStatus() != 0) { throw new RuntimeException("该调拨单已审批,不能重复审批"); } order.setApproveStatus(approveStatus); order.setApproveBy(LoginHelper.getUsername()); order.setApproveTime(new Date()); return baseMapper.updateById(order) > 0; } }