9 天以前 f0efc10af370936b4db47b8428eb1ca4686431f9
src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
@@ -4,12 +4,18 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.enums.SparePartsRequisitionRecordSourceTypeEnum;
import com.ruoyi.measuringinstrumentledger.dto.SparePartsOutboundDto;
import com.ruoyi.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto;
import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper;
import com.ruoyi.measuringinstrumentledger.mapper.SparePartsRequisitionRecordMapper;
import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
/**
 * <p>
@@ -23,6 +29,7 @@
@RequiredArgsConstructor
public class SparePartsRequisitionRecordServiceImpl extends ServiceImpl<SparePartsRequisitionRecordMapper, SparePartsRequisitionRecord> implements SparePartsRequisitionRecordService {
    private final SparePartsRequisitionRecordMapper sparePartsRequisitionRecordMapper;
    private final SparePartsMapper sparePartsMapper;
    @Override
    public IPage<SparePartsRequisitionRecordDto> listPage(Page page, SparePartsRequisitionRecordDto sparePartsRequisitionRecordDto) {
@@ -35,4 +42,26 @@
        });
        return result;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void outbound(SparePartsOutboundDto dto) {
        SpareParts spareParts = sparePartsMapper.selectById(dto.getSparePartsId());
        if (spareParts == null) {
            throw new IllegalArgumentException("备件不存在");
        }
        if (spareParts.getQuantity().compareTo(new BigDecimal(dto.getQuantity())) < 0) {
            throw new IllegalArgumentException("备件 " + spareParts.getName() + " 库存不足");
        }
        // 扣减库存
        spareParts.setQuantity(spareParts.getQuantity().subtract(new BigDecimal(dto.getQuantity())));
        sparePartsMapper.updateById(spareParts);
        // 创建领用记录
        SparePartsRequisitionRecord record = new SparePartsRequisitionRecord();
        record.setSourceType(SparePartsRequisitionRecordSourceTypeEnum.SparePartsRequisitionRecordSourceTypeDirectOutbound.getCode());
        record.setSparePartsId(dto.getSparePartsId());
        record.setQuantity(dto.getQuantity());
        record.setDeviceLedgerId(dto.getDeviceLedgerId());
        this.save(record);
    }
}