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; } }