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.exception.ServiceException;
|
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.measuringinstrumentledger.dto.SparePartsUseDto;
|
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 org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
@Service
|
public class SparePartsRequisitionRecordServiceImpl
|
extends ServiceImpl<SparePartsRequisitionRecordMapper, SparePartsRequisitionRecord>
|
implements SparePartsRequisitionRecordService {
|
|
@Autowired
|
private SparePartsRequisitionRecordMapper sparePartsRequisitionRecordMapper;
|
|
@Autowired
|
private SparePartsMapper sparePartsMapper;
|
|
@Override
|
public IPage<SparePartsRequisitionRecord> listPage(Page page, SparePartsRequisitionRecord query) {
|
return sparePartsRequisitionRecordMapper.listPage(page, query);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void processSparePartsUse(Long deviceLedgerId, String deviceName, Long sourceId,
|
Integer sourceType, String sourceText,
|
List<SparePartsUseDto> useList) {
|
if (useList == null || useList.isEmpty()) {
|
return;
|
}
|
String operator = SecurityUtils.getLoginUser().getNickName();
|
for (SparePartsUseDto useItem : useList) {
|
if (useItem == null || useItem.getId() == null) {
|
continue;
|
}
|
BigDecimal quantity = useItem.getQuantity();
|
if (quantity == null || quantity.compareTo(BigDecimal.ZERO) <= 0) {
|
throw new ServiceException("领用数量必须大于0");
|
}
|
SpareParts sparePart = sparePartsMapper.selectById(useItem.getId());
|
if (sparePart == null) {
|
throw new ServiceException("备件不存在");
|
}
|
if (sparePart.getQuantity() == null || sparePart.getQuantity().compareTo(quantity) < 0) {
|
throw new ServiceException("备件[" + sparePart.getName() + "]库存不足");
|
}
|
sparePart.setQuantity(sparePart.getQuantity().subtract(quantity));
|
sparePartsMapper.updateById(sparePart);
|
|
SparePartsRequisitionRecord record = new SparePartsRequisitionRecord();
|
record.setSparePartsId(sparePart.getId());
|
record.setSparePartsName(sparePart.getName());
|
record.setQuantity(quantity);
|
record.setDeviceLedgerId(deviceLedgerId);
|
record.setDeviceName(deviceName);
|
record.setSourceId(sourceId);
|
record.setSourceType(sourceType);
|
record.setSourceText(StringUtils.isNotEmpty(sourceText) ? sourceText : (sourceType == 0 ? "维修" : "保养"));
|
record.setOperator(operator);
|
sparePartsRequisitionRecordMapper.insert(record);
|
}
|
}
|
}
|