package cn.iocoder.yudao.module.mes.service.md.factory; 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.mes.controller.admin.md.factory.vo.MesMdFactoryPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.md.factory.vo.MesMdFactorySaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.factory.MesMdFactoryDO; import cn.iocoder.yudao.module.mes.dal.mysql.md.factory.MesMdFactoryMapper; import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkshopMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import java.util.Collection; import java.util.Collections; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; /** * MES 工厂 Service 实现类 * * @author 超级管理员 */ @Service @Validated public class MesMdFactoryServiceImpl implements MesMdFactoryService { @Resource private MesMdFactoryMapper factoryMapper; @Resource private MesMdWorkshopMapper workshopMapper; @Override public Long createFactory(MesMdFactorySaveReqVO createReqVO) { // 校验编码、名称唯一 validateFactoryCodeUnique(null, createReqVO.getCode()); validateFactoryNameUnique(null, createReqVO.getName()); MesMdFactoryDO factory = BeanUtils.toBean(createReqVO, MesMdFactoryDO.class); factoryMapper.insert(factory); return factory.getId(); } @Override public void updateFactory(MesMdFactorySaveReqVO updateReqVO) { validateFactoryExists(updateReqVO.getId()); validateFactoryCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); validateFactoryNameUnique(updateReqVO.getId(), updateReqVO.getName()); MesMdFactoryDO updateObj = BeanUtils.toBean(updateReqVO, MesMdFactoryDO.class); factoryMapper.updateById(updateObj); } @Override public void deleteFactory(Long id) { validateFactoryExists(id); // 工厂下存在车间时不允许删除,避免车间悬空 Long workshopCount = workshopMapper.selectCountByFactoryId(id); if (workshopCount != null && workshopCount > 0) { throw exception(MD_FACTORY_HAS_WORKSHOP); } factoryMapper.deleteById(id); } private void validateFactoryExists(Long id) { if (factoryMapper.selectById(id) == null) { throw exception(MD_FACTORY_NOT_EXISTS); } } private void validateFactoryCodeUnique(Long id, String code) { MesMdFactoryDO factory = factoryMapper.selectByCode(code); if (factory == null) { return; } if (ObjUtil.notEqual(factory.getId(), id)) { throw exception(MD_FACTORY_CODE_DUPLICATE); } } private void validateFactoryNameUnique(Long id, String name) { MesMdFactoryDO factory = factoryMapper.selectByName(name); if (factory == null) { return; } if (ObjUtil.notEqual(factory.getId(), id)) { throw exception(MD_FACTORY_NAME_DUPLICATE); } } @Override public MesMdFactoryDO getFactory(Long id) { return factoryMapper.selectById(id); } @Override public PageResult getFactoryPage(MesMdFactoryPageReqVO pageReqVO) { return factoryMapper.selectPage(pageReqVO); } @Override public List getFactoryList(Collection ids) { if (CollUtil.isEmpty(ids)) { return Collections.emptyList(); } return factoryMapper.selectByIds(ids); } @Override public List getFactoryListByStatus(Integer status) { return factoryMapper.selectListByStatus(status); } }