liujie
3 天以前 09892cb8b391914c7c78a61c79503456d9958137
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java
@@ -25,6 +25,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
@@ -92,21 +93,23 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void add(TSysOrderDto dto, TCrmClinic crmClinic) {
    public void add(TSysOrderDto dto, TCrmClinic crmClinic,String name,String userId) {
        // 判断库存够不够  添加订单 添加订单二级  出库记录
        List<TSysOrderNextDto> dtoList = dto.getDtoList();
        ArrayList<TSysOrderGoods> tSysOrderGoods = new ArrayList<>();
        ArrayList<TErpClinicOutboundGoods> erpClinicOutboundGoods = new ArrayList<>();
        HashSet<String> goodsIds = new HashSet<>();
        for (TSysOrderNextDto sysOrderNextDto : dtoList) {
            TErpClinicWarehousingBatch tErpClinicWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(sysOrderNextDto.getBatchId());
            // 找出这个批次出库多少
            List<TErpClinicOutboundGoods> tErpClinicOutboundGoods = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpClinicOutboundGoods>().eq(TErpClinicOutboundGoods::getWarehousingBatchId, sysOrderNextDto.getBatchId()));
            int count = tErpClinicOutboundGoods.stream().mapToInt(TErpClinicOutboundGoods::getOutboundCount).sum();
            if(tErpClinicWarehousingBatch.getPurchaseCount() < count + sysOrderNextDto.getNum()){
            if(tErpClinicWarehousingBatch.getWarehousingNumber() < count + sysOrderNextDto.getNum()){
                throw new RuntimeException("库存不足");
            }
            TErpGoods goods = erpGoodsMapper.selectById(tErpClinicWarehousingBatch.getGoodsId());
            goodsIds.add(goods.getId());
            TSysOrderGoods tSysOrderGoods1 = new TSysOrderGoods();
            tSysOrderGoods1.setGoodsName(goods.getGoodsName());
            TErpGoodsType tErpGoodsType = erpGoodsTypeMapper.selectById(goods.getTypeId());
@@ -152,6 +155,9 @@
        tErpClinicOutbound.setOrderNumber(tSysOrder.getOrderNumber());
        tErpClinicOutbound.setTotalMoney(dto.getTotalMoney());
        tErpClinicOutbound.setOutboundNumber("G"+System.currentTimeMillis());
        tErpClinicOutbound.setCreateBy(name);
        tErpClinicOutbound.setCreateId(userId);
        tErpClinicOutbound.setTypeNum(goodsIds.size());
        erpClinicOutboundMapper.insert(tErpClinicOutbound);
        for (TErpClinicOutboundGoods erpClinicOutboundGood : erpClinicOutboundGoods) {