云
12 小时以前 e09f103259fa602382bb5ce2a03361a6397af46a
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java
@@ -35,6 +35,8 @@
    private MesDvRepairLineService repairLineService;
    @Resource
    private MesDvMachineryService machineryService;
    @Resource
    private cn.iocoder.yudao.module.mes.dal.mysql.dv.spare.MesDvSpareMovementMapper spareMovementMapper;
    @Override
    public Long createRepair(MesDvRepairSaveReqVO createReqVO) {
@@ -49,9 +51,18 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateRepair(MesDvRepairSaveReqVO updateReqVO) {
        // 1.1 校验存在,且状态为草稿
        validateRepairPrepare(updateReqVO.getId());
        MesDvRepairDO old = repairMapper.selectById(updateReqVO.getId());
        if (spareMovementMapper.selectCount(
                cn.iocoder.yudao.module.mes.dal.dataobject.dv.spare.MesDvSpareMovementDO::getRepairId, old.getId()) > 0
                && (!java.util.Objects.equals(old.getMachineryId(), updateReqVO.getMachineryId())
                || !java.util.Objects.equals(old.getCode(), updateReqVO.getCode()))) {
            throw exception(new cn.iocoder.yudao.framework.common.exception.ErrorCode(1_040_807_001,
                    "备件操作失败:{}"), "已有备件流水的维修单不能更换设备或编码");
        }
        // 1.2 校验保存数据
        validateSaveData(updateReqVO);
@@ -65,6 +76,12 @@
    public void deleteRepair(Long id) {
        // 校验存在,且状态为草稿
        validateRepairPrepare(id);
        if (spareMovementMapper.selectCount(
                cn.iocoder.yudao.module.mes.dal.dataobject.dv.spare.MesDvSpareMovementDO::getRepairId, id) > 0) {
            throw exception(new cn.iocoder.yudao.framework.common.exception.ErrorCode(1_040_807_001,
                    "备件操作失败:{}"), "已有备件流水的维修单不能删除,请保留维修追溯记录");
        }
        // 删除
        repairMapper.deleteById(id);
@@ -97,7 +114,8 @@
    @Override
    public MesDvRepairDO validateRepairExists(Long id) {
        MesDvRepairDO repair = repairMapper.selectById(id);
        MesDvRepairDO repair = org.springframework.transaction.support.TransactionSynchronizationManager.isActualTransactionActive()
                ? repairMapper.lockForSpare(id) : repairMapper.selectById(id);
        if (repair == null) {
            throw exception(DV_REPAIR_NOT_EXISTS);
        }
@@ -134,6 +152,7 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void submitRepair(Long id, Long userId) {
        // 1. 校验存在,且状态为草稿
        validateRepairPrepare(id);
@@ -144,6 +163,7 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void confirmRepair(cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairConfirmReqVO confirmReqVO) {
        // 1. 校验存在,且状态为维修中
        MesDvRepairDO repair = validateRepairExists(confirmReqVO.getId());
@@ -157,6 +177,7 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void finishRepair(Long id, Integer result, Long userId) {
        // 1. 校验存在,且状态为待验收
        MesDvRepairDO repair = validateRepairExists(id);