From b8cebfa38ff8cd2065431a8f18c79e480d64ff10 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 20 十月 2025 16:47:45 +0800
Subject: [PATCH] 修改
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysOrderServiceImpl.java | 139 ++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 134 insertions(+), 5 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 8ef384f..e6a00cd 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,20 +1,30 @@
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.common.basic.PageInfo;
-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.core.domain.BaseModel;
+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.ClinicSalesStatisticsGoodsCountVO;
+import com.ruoyi.system.vo.ClinicSalesStatisticsGoodsTypeVO;
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;
@@ -32,6 +42,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);
@@ -44,7 +72,7 @@
for (TSysOrderVO sysOrderVO : sysOrderVOS) {
sysOrderVO.setSysOrderGoods(sysOrderGoodsList.stream().filter(sysOrderGoods -> sysOrderGoods.getOrderId().equals(sysOrderVO.getId())).collect(Collectors.toList()));
}
- return this.baseMapper.queryListByAppUserId(id);
+ return sysOrderVOS;
}
@Override
@@ -61,4 +89,105 @@
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());
+ tSysOrderGoods1.setGoodsId(goods.getId());
+ 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);
+ }
+
+ }
+
+ @Override
+ public Integer clinicSalesStatisticsCount(List<String> clinicIds) {
+ return this.baseMapper.clinicSalesStatisticsCount(clinicIds);
+ }
+
+ @Override
+ public Integer clinicSalesStatisticsTypeCount(List<String> clinicIds) {
+ return this.baseMapper.clinicSalesStatisticsTypeCount(clinicIds);
+ }
+
+ @Override
+ public BigDecimal clinicSalesStatisticsMoney(String clinicId, String startTime, String endTime) {
+ return this.baseMapper.clinicSalesStatisticsMoney(clinicId,startTime,endTime);
+ }
+
+ @Override
+ public List<ClinicSalesStatisticsGoodsTypeVO> clinicSalesStatisticsGoodsType(String clinicId, String startTime, String endTime) {
+ return this.baseMapper.clinicSalesStatisticsGoodsType(clinicId,startTime,endTime);
+ }
+
+ @Override
+ public List<ClinicSalesStatisticsGoodsCountVO> clinicSalesStatisticsGoodsCount(String clinicId, String startTime, String endTime, String goodsName) {
+ return this.baseMapper.clinicSalesStatisticsGoodsCount(clinicId,startTime,endTime,goodsName);
+ }
+
+ @Override
+ public List<ClinicSalesStatisticsGoodsCountVO> clinicSalesStatisticsGoodsCountMonth(String clinicId, String startTime, String endTime, String goodsName) {
+ return this.baseMapper.clinicSalesStatisticsGoodsCountMonth(clinicId,startTime,endTime,goodsName);
+ }
}
--
Gitblit v1.7.1