package com.ruoyi.measuringinstrumentledger.service.impl;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
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>
|
* 服务实现类
|
* </p>
|
*
|
* @author 芯导软件(江苏)有限公司
|
* @since 2026-04-02 03:59:56
|
*/
|
@Service
|
@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) {
|
IPage<SparePartsRequisitionRecordDto> result = sparePartsRequisitionRecordMapper.listPage(page, sparePartsRequisitionRecordDto);
|
// 处理来源类型文本
|
result.getRecords().forEach(record -> {
|
if (record.getSourceType() != null) {
|
record.setSourceText(SparePartsRequisitionRecordSourceTypeEnum.getByCode(record.getSourceType()).getValue());
|
}
|
});
|
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);
|
}
|
}
|