package cn.iocoder.yudao.module.mdm.service.warehouse; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mdm.controller.admin.warehouse.vo.MdmWarehousePageReqVO; import cn.iocoder.yudao.module.mdm.controller.admin.warehouse.vo.MdmWarehouseSaveReqVO; import cn.iocoder.yudao.module.mdm.dal.dataobject.warehouse.MdmWarehouseDO; import cn.iocoder.yudao.module.mdm.dal.mysql.warehouse.MdmWarehouseMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.mdm.enums.ErrorCodeConstants.*; /** * MDM 仓库 Service 实现类 * * @author 芋道源码 */ @Service @Validated public class MdmWarehouseServiceImpl implements MdmWarehouseService { @Resource private MdmWarehouseMapper warehouseMapper; @Override public Long createWarehouse(MdmWarehouseSaveReqVO createReqVO) { // 校验数据 validateWarehouseSaveData(createReqVO); // 插入 MdmWarehouseDO warehouse = BeanUtils.toBean(createReqVO, MdmWarehouseDO.class); warehouseMapper.insert(warehouse); return warehouse.getId(); } @Override public void updateWarehouse(MdmWarehouseSaveReqVO updateReqVO) { // 校验存在 validateWarehouseExists(updateReqVO.getId()); // 校验数据 validateWarehouseSaveData(updateReqVO); // 更新 MdmWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, MdmWarehouseDO.class); warehouseMapper.updateById(updateObj); } @Override public void updateWarehouseStatus(Long id, Integer status) { // 校验存在 validateWarehouseExists(id); // 更新状态 warehouseMapper.updateById(new MdmWarehouseDO().setId(id).setStatus(status)); } @Override public void deleteWarehouse(Long id) { // 校验存在 validateWarehouseExists(id); // TODO: 校验是否被库存使用 // 删除 warehouseMapper.deleteById(id); } @Override public MdmWarehouseDO validateWarehouseExists(Long id) { MdmWarehouseDO warehouse = warehouseMapper.selectById(id); if (warehouse == null) { throw exception(MDM_WAREHOUSE_NOT_EXISTS); } return warehouse; } @Override public MdmWarehouseDO validateWarehouseExistsAndEnable(Long id) { MdmWarehouseDO warehouse = validateWarehouseExists(id); if (warehouse.getStatus() != null && warehouse.getStatus() != 0) { throw exception(MDM_WAREHOUSE_IS_DISABLE); } return warehouse; } private void validateWarehouseSaveData(MdmWarehouseSaveReqVO reqVO) { // 校验编码唯一 MdmWarehouseDO warehouse = warehouseMapper.selectByCode(reqVO.getCode()); if (warehouse != null && ObjUtil.notEqual(warehouse.getId(), reqVO.getId())) { throw exception(MDM_WAREHOUSE_CODE_DUPLICATE); } // 校验名称唯一 MdmWarehouseDO sameName = warehouseMapper.selectByName(reqVO.getName()); if (sameName != null && ObjUtil.notEqual(sameName.getId(), reqVO.getId())) { throw exception(MDM_WAREHOUSE_NAME_DUPLICATE); } } @Override public MdmWarehouseDO getWarehouse(Long id) { return warehouseMapper.selectById(id); } @Override public PageResult getWarehousePage(MdmWarehousePageReqVO pageReqVO) { return warehouseMapper.selectPage(pageReqVO); } @Override public List getWarehouseList(Collection ids) { if (CollUtil.isEmpty(ids)) { return Collections.emptyList(); } return warehouseMapper.selectListByIds(ids); } @Override public MdmWarehouseDO getWarehouseByCode(String code) { return warehouseMapper.selectByCode(code); } }