From d72d88f9e19ead4bbc2f69c4f5fbe66b1edbdc31 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 10 十月 2025 18:16:24 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java | 121 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 117 insertions(+), 4 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java index aaa4d00..72a7925 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java @@ -1,17 +1,27 @@ 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; @@ -29,6 +39,24 @@ @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); @@ -43,4 +71,89 @@ } 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); + } + + } } -- Gitblit v1.7.1