package com.ruoyi.safe.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.safe.dto.SafeHazardRecordDto;
import com.ruoyi.safe.mapper.SafeHazardMapper;
import com.ruoyi.safe.pojo.SafeHazard;
import com.ruoyi.safe.pojo.SafeHazardRecord;
import com.ruoyi.safe.mapper.SafeHazardRecordMapper;
import com.ruoyi.safe.service.SafeHazardRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
/**
*
* 安全生产--危险物料管控 服务实现类
*
*
* @author 芯导软件(江苏)有限公司
* @since 2026-01-28 01:13:40
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class SafeHazardRecordServiceImpl extends ServiceImpl implements SafeHazardRecordService {
@Autowired
private SafeHazardRecordMapper safeHazardRecordMapper;
@Autowired
private SafeHazardMapper safeHazardMapper;
@Override
public IPage pageSafeHazardRecord(Page page, SafeHazardRecordDto safeHazardRecordDto) {
return safeHazardRecordMapper.pageSafeHazardRecord(page, safeHazardRecordDto);
}
@Override
public int borrow(SafeHazardRecord safeHazardRecord) {
//判断数量是否满足
SafeHazard safeHazard = safeHazardMapper.selectById(safeHazardRecord.getSafeHazardId());
if (safeHazard.getStockQty().compareTo(safeHazardRecord.getApplyQty())<0) {
throw new RuntimeException("库存数量不足");
}
//领用
safeHazardRecord.setApplyUserId(SecurityUtils.getUserId().intValue());
safeHazardRecord.setApplyTime(LocalDate.now());
safeHazardRecordMapper.insert(safeHazardRecord);
String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
String no = "LY" + String.format("%s%03d", datePrefix, safeHazardRecord.getId());
safeHazardRecord.setMaterialRecordCode(no);
safeHazardRecordMapper.updateById(safeHazardRecord);
//减库存
safeHazard.setStockQty(safeHazard.getStockQty().subtract(safeHazardRecord.getApplyQty()));
safeHazardMapper.updateById(safeHazard);
return 0;
}
@Override
public int returnSafeHazardRecord(SafeHazardRecord safeHazardRecord) {
SafeHazard safeHazard = safeHazardMapper.selectById(safeHazardRecord.getSafeHazardId());
//归还
safeHazardRecord.setReturnUserId(SecurityUtils.getUserId().intValue());
safeHazardRecord.setReturnTime(LocalDate.now());
safeHazardRecordMapper.updateById(safeHazardRecord);
//增库存
safeHazard.setStockQty(safeHazard.getStockQty().add(safeHazardRecord.getApplyQty()));
safeHazardMapper.updateById(safeHazard);
return 0;
}
@Override
public int delSafeHazardRecord(List ids) {
List safeHazardRecords = safeHazardRecordMapper.selectBatchIds(ids);
for (SafeHazardRecord safeHazardRecord : safeHazardRecords) {
//判断是否有归还
if (ObjectUtils.isNull(safeHazardRecord.getReturnUserId())){
//没有归还,删除领用记录需要增加库存
SafeHazard safeHazard = safeHazardMapper.selectById(safeHazardRecord.getSafeHazardId());
safeHazard.setStockQty(safeHazard.getStockQty().add(safeHazardRecord.getApplyQty()));
safeHazardMapper.updateById(safeHazard);
}
}
safeHazardRecordMapper.deleteBatchIds(ids);
return 0;
}
}