| | |
| | | package com.ruoyi.system.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.system.mapper.TSysOrderGoodsMapper; |
| | | import com.ruoyi.system.mapper.TSysOrderMapper; |
| | | import com.ruoyi.system.model.TSysOrder; |
| | | import com.ruoyi.system.model.TSysOrderGoods; |
| | | import com.ruoyi.common.basic.PageInfo; |
| | | import com.ruoyi.system.dto.TSysOrderDto; |
| | | import com.ruoyi.system.dto.TSysOrderNextDto; |
| | | import com.ruoyi.system.mapper.*; |
| | | import com.ruoyi.system.model.*; |
| | | import com.ruoyi.system.query.TSysOrderQuery; |
| | | import com.ruoyi.system.service.TCrmClinicService; |
| | | import com.ruoyi.system.service.TErpClinicOutboundService; |
| | | import com.ruoyi.system.service.TSysOrderService; |
| | | import com.ruoyi.system.vo.TSysOrderPageVo; |
| | | import com.ruoyi.system.vo.TSysOrderVO; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | @Autowired |
| | | private TSysOrderGoodsMapper sysOrderGoodsMapper; |
| | | |
| | | @Resource |
| | | private TErpClinicWarehousingBatchMapper erpClinicWarehousingBatchMapper; |
| | | |
| | | @Resource |
| | | private TErpClinicOutboundGoodsMapper erpClinicOutboundGoodsMapper; |
| | | |
| | | @Resource |
| | | private TErpGoodsMapper erpGoodsMapper; |
| | | |
| | | @Resource |
| | | private TErpGoodsTypeMapper erpGoodsTypeMapper; |
| | | |
| | | @Resource |
| | | private TErpGoodsUnitMapper erpGoodsUnitMapper; |
| | | |
| | | @Resource |
| | | private TErpClinicOutboundMapper erpClinicOutboundMapper; |
| | | |
| | | @Override |
| | | public List<TSysOrderVO> queryListByAppUserId(String id) { |
| | | List<TSysOrderVO> sysOrderVOS = this.baseMapper.queryListByAppUserId(id); |
| | |
| | | } |
| | | return this.baseMapper.queryListByAppUserId(id); |
| | | } |
| | | |
| | | @Override |
| | | public PageInfo<TSysOrderPageVo> pageList(TSysOrderQuery query) { |
| | | PageInfo<TSysOrderPageVo> page = new PageInfo<>(query.getPageNum(), query.getPageSize()); |
| | | String sTime =null; |
| | | String eTime = null; |
| | | if(query.getTime() != null && !query.getTime().isEmpty()){ |
| | | String[] split = query.getTime().split(" - "); |
| | | sTime = split[0] + " 00:00:00"; |
| | | eTime = split[1] + " 23:59:59"; |
| | | } |
| | | List<TSysOrderPageVo> sysOrderPageVOS = this.baseMapper.pageList(page, query,sTime,eTime); |
| | | page.setRecords(sysOrderPageVOS); |
| | | return page; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void add(TSysOrderDto dto, TCrmClinic crmClinic) { |
| | | // 判断库存够不够 添加订单 添加订单二级 出库记录 |
| | | List<TSysOrderNextDto> dtoList = dto.getDtoList(); |
| | | ArrayList<TSysOrderGoods> tSysOrderGoods = new ArrayList<>(); |
| | | ArrayList<TErpClinicOutboundGoods> erpClinicOutboundGoods = new ArrayList<>(); |
| | | |
| | | 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()){ |
| | | throw new RuntimeException("库存不足"); |
| | | } |
| | | TErpGoods goods = erpGoodsMapper.selectById(tErpClinicWarehousingBatch.getGoodsId()); |
| | | TSysOrderGoods tSysOrderGoods1 = new TSysOrderGoods(); |
| | | tSysOrderGoods1.setGoodsName(goods.getGoodsName()); |
| | | TErpGoodsType tErpGoodsType = erpGoodsTypeMapper.selectById(goods.getTypeId()); |
| | | tSysOrderGoods1.setTypeName(tErpGoodsType.getTypeName()); |
| | | tSysOrderGoods1.setQuasiNumber(goods.getQuasiNumber()); |
| | | TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(goods.getPackingUnitId()); |
| | | tSysOrderGoods1.setGoodsUnit(tErpGoodsUnit.getUnitName()); |
| | | tSysOrderGoods1.setSaleCount(sysOrderNextDto.getNum()); |
| | | tSysOrderGoods1.setSaleAmount(goods.getSalesAmount()); |
| | | tSysOrderGoods1.setBatchId(tErpClinicWarehousingBatch.getId()); |
| | | tSysOrderGoods1.setBatchNumber(tErpClinicWarehousingBatch.getBatchNumber()); |
| | | tSysOrderGoods1.setRemainingQuantity(sysOrderNextDto.getRemainingQuantity()); |
| | | tSysOrderGoods.add(tSysOrderGoods1); |
| | | |
| | | |
| | | TErpClinicOutboundGoods tErpClinicOutboundGoods1 = new TErpClinicOutboundGoods(); |
| | | tErpClinicOutboundGoods1.setWarehousingId(tErpClinicWarehousingBatch.getWarehousingId()); |
| | | tErpClinicOutboundGoods1.setWarehousingBatchId(tErpClinicWarehousingBatch.getId()); |
| | | tErpClinicOutboundGoods1.setOutboundCount(sysOrderNextDto.getNum()); |
| | | tErpClinicOutboundGoods1.setGoodsId(goods.getId()); |
| | | tErpClinicOutboundGoods1.setTotalPrice(sysOrderNextDto.getSaleAmount().multiply(BigDecimal.valueOf(sysOrderNextDto.getNum()))); |
| | | erpClinicOutboundGoods.add(tErpClinicOutboundGoods1); |
| | | |
| | | } |
| | | |
| | | TSysOrder tSysOrder = new TSysOrder(); |
| | | tSysOrder.setAppUserId(dto.getAppUserId()); |
| | | tSysOrder.setClinicId(crmClinic.getId()); |
| | | tSysOrder.setInspectionId(dto.getInspectionId()); |
| | | tSysOrder.setTotalMoney(dto.getTotalMoney()); |
| | | tSysOrder.setCheckTime(dto.getCheckTime()); |
| | | tSysOrder.setOrderNumber(System.currentTimeMillis() + ""); |
| | | this.save(tSysOrder); |
| | | for (TSysOrderGoods tSysOrderGood : tSysOrderGoods) { |
| | | tSysOrderGood.setOrderId(tSysOrder.getId()); |
| | | sysOrderGoodsMapper.insert(tSysOrderGood); |
| | | } |
| | | |
| | | TErpClinicOutbound tErpClinicOutbound = new TErpClinicOutbound(); |
| | | tErpClinicOutbound.setClinicId(crmClinic.getId()); |
| | | tErpClinicOutbound.setOutboundType(7); |
| | | tErpClinicOutbound.setOrderNumber(tSysOrder.getOrderNumber()); |
| | | tErpClinicOutbound.setTotalMoney(dto.getTotalMoney()); |
| | | tErpClinicOutbound.setOutboundNumber("G"+System.currentTimeMillis()); |
| | | erpClinicOutboundMapper.insert(tErpClinicOutbound); |
| | | |
| | | for (TErpClinicOutboundGoods erpClinicOutboundGood : erpClinicOutboundGoods) { |
| | | erpClinicOutboundGood.setOutboundId(tErpClinicOutbound.getId()); |
| | | erpClinicOutboundGoodsMapper.insert(erpClinicOutboundGood); |
| | | } |
| | | |
| | | } |
| | | } |