package cn.iocoder.yudao.module.mes.service.pro.card; 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.card.vo.process.MesProCardProcessPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.card.vo.process.MesProCardProcessSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.card.MesProCardProcessDO; import cn.iocoder.yudao.module.mes.dal.mysql.pro.card.MesProCardProcessMapper; import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRO_CARD_PROCESS_NOT_EXISTS; /** * MES 流转卡工序记录 Service 实现类 * * @author 芋道源码 */ @Service @Validated public class MesProCardProcessServiceImpl implements MesProCardProcessService { @Resource private MesProCardProcessMapper cardProcessMapper; @Resource @Lazy private MesProCardService cardService; @Resource private MesProProcessService processService; @Override public Long createCardProcess(MesProCardProcessSaveReqVO createReqVO) { // 1. 校验关联数据(含流转卡草稿状态校验) validateCardProcessSaveData(createReqVO); // 2. 插入 MesProCardProcessDO cardProcess = BeanUtils.toBean(createReqVO, MesProCardProcessDO.class); cardProcessMapper.insert(cardProcess); return cardProcess.getId(); } @Override public void updateCardProcess(MesProCardProcessSaveReqVO updateReqVO) { // 1.1 校验存在 validateCardProcessExists(updateReqVO.getId()); // 1.2 校验关联数据(含流转卡草稿状态校验) validateCardProcessSaveData(updateReqVO); // 2. 更新 MesProCardProcessDO updateObj = BeanUtils.toBean(updateReqVO, MesProCardProcessDO.class); cardProcessMapper.updateById(updateObj); } @Override public void deleteCardProcess(Long id) { // 1. 校验存在 MesProCardProcessDO cardProcess = cardProcessMapper.selectById(id); if (cardProcess == null) { throw exception(PRO_CARD_PROCESS_NOT_EXISTS); } // 2. 校验流转卡为草稿状态 cardService.validateCardExistsAndPrepare(cardProcess.getCardId()); // 3. 删除 cardProcessMapper.deleteById(id); } @Override public MesProCardProcessDO getCardProcess(Long id) { return cardProcessMapper.selectById(id); } @Override public PageResult getCardProcessPage(MesProCardProcessPageReqVO pageReqVO) { return cardProcessMapper.selectPage(pageReqVO); } // ==================== 校验方法 ==================== private void validateCardProcessExists(Long id) { if (cardProcessMapper.selectById(id) == null) { throw exception(PRO_CARD_PROCESS_NOT_EXISTS); } } private void validateCardProcessSaveData(MesProCardProcessSaveReqVO reqVO) { // 校验流转卡存在 + 草稿状态 cardService.validateCardExistsAndPrepare(reqVO.getCardId()); // 校验工序存在 if (reqVO.getProcessId() != null) { processService.validateProcessExistsAndEnable(reqVO.getProcessId()); } } @Override public void deleteCardProcessByCardId(Long cardId) { cardProcessMapper.deleteByCardId(cardId); } }