package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.yuanchu.mom.mapper.ImportRepertoryMapper; import com.yuanchu.mom.mapper.RepertoryMapper; import com.yuanchu.mom.pojo.ImportRepertory; import com.yuanchu.mom.pojo.Repertory; import com.yuanchu.mom.pojo.dto.ImportRepertoryDto; import com.yuanchu.mom.service.ImportRepertoryService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; import java.util.Map; /** * 成品入库表(ImportRepertory)表服务实现类 * * @author zss * @since 2023-08-10 10:27:01 */ @Service public class ImportRepertoryServiceImpl extends ServiceImpl implements ImportRepertoryService { @Resource ImportRepertoryMapper importRepertoryMapper; @Resource RepertoryMapper repertoryMapper; //新增成品入库 @Override @Transactional(rollbackFor = Exception.class) public void addImpRep(String name, ImportRepertoryDto importRepertoryDto) { //新增成品入库 ImportRepertory importRepertory = new ImportRepertory(); BeanUtils.copyProperties(importRepertoryDto, importRepertory); importRepertory.setUserName(name); importRepertoryMapper.insert(importRepertory); /*新增成品库存(未检验)*/ //如果入库的信息一样只有库存不一样,则在原来的库存数量上加上相应的数量 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Repertory::getOrderCode, importRepertoryDto.getOrderCode()) .eq(Repertory::getCode, importRepertoryDto.getCode()) .eq(Repertory::getName, importRepertoryDto.getName()) .eq(Repertory::getSpecifications, importRepertoryDto.getSpecifications()) .eq(Repertory::getUnit, importRepertoryDto.getUnit()) .eq(Repertory::getType, 0); Repertory rep = repertoryMapper.selectOne(queryWrapper); if (rep != null && rep.getCheckState() == 0) { rep.setNumber(rep.getNumber() + importRepertoryDto.getNumber()); rep.setUserName(name); repertoryMapper.updateById(rep); } else { //如果除了库存别的信息有任何一个不一样,则新增一条成品库存 Repertory repertory = new Repertory(); BeanUtils.copyProperties(importRepertoryDto, repertory); repertory.setUserName(name); repertory.setType(0); repertory.setCheckState(0); repertoryMapper.insert(repertory); } } //查询入库列表 @Override public IPage> selectAllImpRep(Page page, String orderCode, String name, String time) { return importRepertoryMapper.selectAllImpRep(page, orderCode, name, time); } //根据id删除 @Override public void delImpRep(Integer id) { //删除入库记录 ImportRepertory importRepertory = importRepertoryMapper.selectById(id); importRepertory.setState(0); importRepertoryMapper.updateById(importRepertory); //库存也要减少 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Repertory::getOrderCode, importRepertory.getOrderCode()) .eq(Repertory::getCode, importRepertory.getCode()) .eq(Repertory::getName, importRepertory.getName()) .eq(Repertory::getSpecifications, importRepertory.getSpecifications()) .eq(Repertory::getUnit, importRepertory.getUnit()) .eq(Repertory::getType, 0) .eq(Repertory::getCheckState, 0); Repertory rep = repertoryMapper.selectOne(queryWrapper); rep.setNumber(rep.getNumber() - importRepertory.getNumber()); repertoryMapper.updateById(rep); } //批量删除 @Override public void delAllImpRep(List ids) { List importRepertories = importRepertoryMapper.selectBatchIds(ids); for (ImportRepertory importRepertory : importRepertories) { importRepertory.setState(0); //删除入库记录 importRepertoryMapper.updateById(importRepertory); //减少库存 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Repertory::getOrderCode, importRepertory.getOrderCode()) .eq(Repertory::getCode, importRepertory.getCode()) .eq(Repertory::getName, importRepertory.getName()) .eq(Repertory::getSpecifications, importRepertory.getSpecifications()) .eq(Repertory::getUnit, importRepertory.getUnit()) .eq(Repertory::getType, 0) .eq(Repertory::getCheckState, 0); Repertory rep = repertoryMapper.selectOne(queryWrapper); rep.setNumber(rep.getNumber() - importRepertory.getNumber()); repertoryMapper.updateById(rep); } } }