package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.protobuf.ServiceException;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.dto.ProcurementSuppliesExpendDto;
import com.yuanchu.mom.mapper.ProcurementSuppliesExpendsMapper;
import com.yuanchu.mom.mapper.ProcurementSuppliesListMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ProcurementSuppliesExpends;
import com.yuanchu.mom.pojo.ProcurementSuppliesList;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ProcurementSuppliesExpendsService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
*
* 服务实现类
*
*
* @author
* @since 2024-11-15 03:47:19
*/
@Service
public class ProcurementSuppliesExpendsServiceImpl extends ServiceImpl implements ProcurementSuppliesExpendsService {
@Autowired
private ProcurementSuppliesExpendsMapper expendsMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private ProcurementSuppliesListMapper listMapper;
@Autowired
private GetLook getLook;
@Override
public List selectAll(Long procurementSuppliesListId) {
List res = new ArrayList<>();
List list = expendsMapper.selectList(new QueryWrapper().lambda().eq(ProcurementSuppliesExpends::getListId, procurementSuppliesListId));
for (ProcurementSuppliesExpends procurementSuppliesExpend : list) {
ProcurementSuppliesExpendDto dto = new ProcurementSuppliesExpendDto();
BeanUtils.copyProperties(procurementSuppliesExpend, dto);
User enterUser = userMapper.selectById(procurementSuppliesExpend.getEnterUserId());
User updateUser = userMapper.selectById(procurementSuppliesExpend.getUpdateUserId());
dto.setEnterUserName(enterUser.getName());
dto.setUpdateUserName(updateUser.getName());
res.add(dto);
}
return res;
}
@Override
@Transactional
public Integer addExpends(ProcurementSuppliesExpendDto expendDto) throws ServiceException {
ProcurementSuppliesList list = listMapper.selectProcurementSuppliesListForUpdate(expendDto.getListId());
ProcurementSuppliesExpends expends = new ProcurementSuppliesExpends();
BeanUtils.copyProperties(expendDto, expends);
Map map1 = getLook.selectPowerByMethodAndUserId(null);
expends.setEnterUserId(map1.get("userId"));
expends.setUpdateUserId(map1.get("userId"));
if (list.getCurrentAmount() < expendDto.getAmount()) {
return 0;
}
list.setCurrentAmount(list.getCurrentAmount() - expendDto.getAmount());
listMapper.updateById(list);
return expendsMapper.insert(expends);
}
@Override
@Transactional
public Integer deleteExpends(Long id) {
ProcurementSuppliesExpends expend = expendsMapper.selectById(id);
ProcurementSuppliesList list = listMapper.selectProcurementSuppliesListForUpdate(expend.getListId());
list.setCurrentAmount(list.getCurrentAmount() + expend.getAmount());
Map map1 = getLook.selectPowerByMethodAndUserId(null);
list.setUpdateUser(map1.get("userId"));
listMapper.updateById(list);
return expendsMapper.deleteById(id);
}
}