package com.klp.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.klp.domain.WmsCostStandardConfig; import com.klp.domain.vo.WmsCostStandardConfigVo; import com.klp.mapper.WmsCostStandardConfigMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.klp.domain.bo.WmsCostStandardConfigBo; import com.klp.service.IWmsCostStandardConfigService; import java.time.LocalDate; import java.util.Collection; import java.util.List; /** * 成本标准配置表Service业务层处理 * * @author klp * @date 2025-11-25 */ @RequiredArgsConstructor @Service public class WmsCostStandardConfigServiceImpl implements IWmsCostStandardConfigService { private final WmsCostStandardConfigMapper baseMapper; /** * 查询成本标准配置表 */ @Override public WmsCostStandardConfigVo queryById(Long configId) { return baseMapper.selectVoById(configId); } /** * 查询成本标准配置表列表 */ @Override public TableDataInfo queryPageList(WmsCostStandardConfigBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** * 查询成本标准配置表列表 */ @Override public List queryList(WmsCostStandardConfigBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper buildQueryWrapper(WmsCostStandardConfigBo bo) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getConfigId() != null, WmsCostStandardConfig::getConfigId, bo.getConfigId()); lqw.eq(bo.getUnitCost() != null, WmsCostStandardConfig::getUnitCost, bo.getUnitCost()); lqw.eq(bo.getEffectiveDate() != null, WmsCostStandardConfig::getEffectiveDate, bo.getEffectiveDate()); lqw.eq(bo.getStatus() != null, WmsCostStandardConfig::getStatus, bo.getStatus()); lqw.orderByDesc(WmsCostStandardConfig::getEffectiveDate); return lqw; } /** * 新增成本标准配置表 */ @Override @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(WmsCostStandardConfigBo bo) { // 如果新标准立即生效,需要将当前有效的标准标记为失效 if (bo.getEffectiveDate() != null && !bo.getEffectiveDate().isAfter(LocalDate.now())) { // 将当前有效的标准标记为失效 WmsCostStandardConfigVo current = queryCurrentEffective(); if (current != null) { WmsCostStandardConfig update = new WmsCostStandardConfig(); update.setConfigId(current.getConfigId()); update.setExpireDate(LocalDate.now().minusDays(1)); update.setStatus(0); baseMapper.updateById(update); } } WmsCostStandardConfig add = BeanUtil.toBean(bo, WmsCostStandardConfig.class); if (add.getStatus() == null) { add.setStatus(1); // 默认有效 } validEntityBeforeSave(add); return baseMapper.insert(add) > 0; } /** * 修改成本标准配置表 */ @Override public Boolean updateByBo(WmsCostStandardConfigBo bo) { WmsCostStandardConfig update = BeanUtil.toBean(bo, WmsCostStandardConfig.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } /** * 保存前的数据校验 */ private void validEntityBeforeSave(WmsCostStandardConfig entity) { // TODO 做一些数据校验,如唯一约束 } /** * 校验并批量删除成本标准配置表信息 */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if (isValid) { // TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; } /** * 查询当前有效的成本标准 */ @Override public WmsCostStandardConfigVo queryCurrentEffective() { return baseMapper.selectCurrentEffective(); } /** * 查询指定日期的有效成本标准 */ @Override public WmsCostStandardConfigVo queryEffectiveByDate(LocalDate date) { return baseMapper.selectEffectiveByDate(date); } }