| | |
| | | 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; |
| | | |
| | |
| | | |
| | | @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()); |
| | |
| | | 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) { |