package cn.iocoder.yudao.module.mes.service.pro.line;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.ObjUtil;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
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.pro.line.vo.MesProLinePageReqVO;
|
import cn.iocoder.yudao.module.mes.controller.admin.pro.line.vo.MesProLineSaveReqVO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.line.MesProLineDO;
|
import cn.iocoder.yudao.module.mes.dal.mysql.pro.batch.MesProBatchMapper;
|
import cn.iocoder.yudao.module.mes.dal.mysql.pro.line.MesProLineMapper;
|
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 MesProLineServiceImpl implements MesProLineService {
|
|
@Resource
|
private MesProLineMapper lineMapper;
|
|
@Resource
|
private MesProBatchMapper batchMapper;
|
|
@Override
|
public Long createLine(MesProLineSaveReqVO createReqVO) {
|
// 1. 校验编码、名称唯一
|
validateLineSaveData(createReqVO);
|
|
// 2. 插入产线
|
MesProLineDO line = BeanUtils.toBean(createReqVO, MesProLineDO.class);
|
lineMapper.insert(line);
|
return line.getId();
|
}
|
|
@Override
|
public void updateLine(MesProLineSaveReqVO updateReqVO) {
|
// 1.1 校验存在
|
validateLineExists(updateReqVO.getId());
|
// 1.2 校验编码、名称唯一
|
validateLineSaveData(updateReqVO);
|
|
// 2. 更新产线
|
MesProLineDO updateObj = BeanUtils.toBean(updateReqVO, MesProLineDO.class);
|
lineMapper.updateById(updateObj);
|
}
|
|
@Override
|
public void deleteLine(Long id) {
|
// 1.1 校验存在
|
validateLineExists(id);
|
// 1.2 校验是否被生产批次引用
|
if (batchMapper.selectCountByLineId(id) > 0) {
|
throw exception(PRO_LINE_HAS_BATCH_NOT_DELETE);
|
}
|
|
// 2. 删除产线
|
lineMapper.deleteById(id);
|
}
|
|
@Override
|
public MesProLineDO getLine(Long id) {
|
return lineMapper.selectById(id);
|
}
|
|
@Override
|
public List<MesProLineDO> getLineList(Collection<Long> ids) {
|
if (CollUtil.isEmpty(ids)) {
|
return Collections.emptyList();
|
}
|
return lineMapper.selectByIds(ids);
|
}
|
|
@Override
|
public PageResult<MesProLineDO> getLinePage(MesProLinePageReqVO pageReqVO) {
|
return lineMapper.selectPage(pageReqVO);
|
}
|
|
@Override
|
public List<MesProLineDO> getLineListByStatus(Integer status) {
|
return lineMapper.selectListByStatus(status);
|
}
|
|
@Override
|
public MesProLineDO validateLineExists(Long id) {
|
MesProLineDO line = lineMapper.selectById(id);
|
if (line == null) {
|
throw exception(PRO_LINE_NOT_EXISTS);
|
}
|
return line;
|
}
|
|
@Override
|
public MesProLineDO validateLineExistsAndEnable(Long id) {
|
MesProLineDO line = validateLineExists(id);
|
if (ObjUtil.notEqual(CommonStatusEnum.ENABLE.getStatus(), line.getStatus())) {
|
throw exception(PRO_LINE_IS_DISABLE);
|
}
|
return line;
|
}
|
|
// ==================== 私有方法 ====================
|
|
private void validateLineCodeUnique(Long id, String code) {
|
MesProLineDO line = lineMapper.selectByCode(code);
|
if (line == null) {
|
return;
|
}
|
if (id == null || !line.getId().equals(id)) {
|
throw exception(PRO_LINE_CODE_DUPLICATE);
|
}
|
}
|
|
private void validateLineNameUnique(Long id, String name) {
|
MesProLineDO line = lineMapper.selectByName(name);
|
if (line == null) {
|
return;
|
}
|
if (id == null || !line.getId().equals(id)) {
|
throw exception(PRO_LINE_NAME_DUPLICATE);
|
}
|
}
|
|
private void validateLineSaveData(MesProLineSaveReqVO saveReqVO) {
|
// 1. 校验编码唯一
|
validateLineCodeUnique(saveReqVO.getId(), saveReqVO.getCode());
|
// 2. 校验名称唯一
|
validateLineNameUnique(saveReqVO.getId(), saveReqVO.getName());
|
}
|
|
}
|